Hírek:

Fontos tudnivalók a migrációval kapcsolatban, kérlek olvasd el:

A régi fórumról áthozott hozzászólásoknál a felhasználó neve adatvédelmi megfontolásokból véletlenszerűen generált értékekre lett  lecserélve. Ez akkor tud a valódi értékre visszaállni, ha az adott felhasználó a régi fórumon nyilatkozik, hogy beleegyezik az adatainak az új fórumra továbbításához, majd ezután itt a régi felhasználónevével és email címével regisztrál.
8~20 óra között, 1~30 percen belül megtörténik a jóváhagyás, 30 percenként ellenőrizd email fiókodat (SPAM-ot is) mindenképp kapsz mail-t, a sikeres regisztrácioról, vagy a hibáról és, hogy mi a teendőd.
Nézd meg  "A régi fórumról, az új fórumra költözés útmutatót."
A régi fórumon használt email címmel de más felhasználói azonosítóval érkező regisztrációs kérelmek törlésre kerűlnek.

Main Menu

UCCNC vezérlő program

Indította gaben, 2024 április 09, 16:54

Előző téma - Következő téma

wcsxp0uxa

Nekem csak annyi a gondom ,hogy továbbra is egy olyan szóval magyarázod az elérő viselkedést aminek semmi köze hozzá.(statikus - dinamikus)
Számomra ez csupán a változó érvényességi körének kérdése , vagy még annyi sem.
Lehet például ,hogy a mach inline módon fordítja a szubrutin hívást.
Számora is a mostani megoldás a szimpatikusabb.

000000000

OK, bár C#-ban a statikus annyit tesz, hogy nem példányosítható. Nincs köze az érvényességi körhöz, az a public és a private.
Lehet egy változó egyszerre static és public, ill. egyszerre static is private.
 
A szót egyébként nem programozói környezetben akartam volna használni, csupán arra szerettem volna utalni, a statikus-al, hogy egyszer felvett egy értéket és utána már nem változik. Illetve a dinamikussal, hogy bármikor változtathat értéket. Ahogy a Magyar nyelvben értelmezve vannak ezek a szavak.
Lehet a szóválasztás tényleg nem volt a legjobb...
Na de nagyon elkanyarodtam az eredeti témától és nem akarok Grécsi tanár urat játszani. :)
 
És köszönöm a véleményedet a témában, remélem hamarosan mások is írnak valami véleményt.

000000000

Csináltam egy tesztet a "fakaspó" kóddal amit küldtél, a képletfeldolgozás/szerszámpályagenerálás sebességet vizsgáltam.
Nálam 20 hullám, 5 alkatrész, 20 fogás 1.05 perc alatt dolgozza fel az UCCNC.
A Mach3 ugyanezt 1.01 perc alatt.
Az UCCNC ennél a tesztnél így 3.9%-al volt lassabb.  
Majd még optimalizálok rajta. :)

xfg6v697j

Azonos paraméterek mellet UCCCNC 3:15, amásik 1:00.
Persze az első próbánál még másképp futott a kó a két programon,de azóta kijavítotam.

000000000

Sziasztok,
No, megnéztem egy másik programot hogyan működik a szubrutin hívás és ennél is ugyanúgy mint a mach3-nál, úgyhogy átírtam az UCCNC-ben is, hogy ugyanígy működjön. Így talán nem zavar majd össze senkit, mert nem különbözik a viselkedés.
Talán ezeknél a kezdeti teszteknél egyszerűbb így.
Ha esetleg a későbbiekben mégis a másik viselkedés lenne szimpatikusabb, akkor vissza lehet majd írni viszonylag egyszerűen...
 
A szerszámpálya számoló kódon is faragtam, optimalizáltam, most a "fakaspó" kódot hosszabbra véve (50 fogás) a Mach3 az én gépemen 2.33 perc alatt végzett. Az UCCNC 1:12. A processzorhaszálatot is néztem, a Mach3 átlagban 32%-ot, az UCCNC 40%-ot használt.
 
Ma még bütykölök pár dolgot, este felé majd feltöltöm az új verziót.

frkdv6dyr

Írtam levelet olvastad?

000000000

Szia,
 
Most olvastam, de kérlek, hogy az info at cncdrive.com e-mail címre küldjétek a leveleket, azt sűrűbben olvasom, mint amit itt sikerült beállítanom e-mailnek az adatlapomon.  
 
Azt kérdezted, hogy hogyan lehet meghívni külső programot macróból, illetve adatot visszatölteni fájlból.
 
Csewe makrója erre szerintem pontos választ adhat:
 
//==DrillCircularBoltPattern indító makró===
int betu = 92 ;
string ut1  =  Application.StartupPath.Substring(0,2);  
char ut2  = (char)betu ;
string ut3  =  Application.StartupPath.Substring(2);  
string ut4 =ut1 + ut2 + ut3 +   "/Wizards/DrillCircularBoltPattern/Drill_Circular_Bolt_Pattern_.exe" ;
string ut5 = Application.StartupPath ;
string ut6 = ut5 + ut2 + "Wizards" + ut2 + "DrillCircularBoltPattern" + ut2 + "adatcsere.txt" ;
string ut7 =ut1 + ut2 + ut3 + "/Example_codes/DrillCircularBoltPattern.TAP";
            string text1 = "1";
            string text2 = "2";
            string s1 = "1";
            string s2 = "2";
            string kilep = "";
            string beolvas = "Load";
//messagebox.show(ut7);  
//______________________________uccnc elrési utvonala-------------
//  System.IO.File.WriteAllText("C:"+ut2+"utvonal.txt",Application.StartupPath);
//================varázsló indítása =======
          System.Diagnostics.Process proc; // Declare New Process
            System.Diagnostics.ProcessStartInfo procInfo = new System.Diagnostics.ProcessStartInfo(); // Declare New Process Starting Information
 
            procInfo.UseShellExecute = true;
            procInfo.FileName = ut4;  
            procInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized;  
 
            proc = System.Diagnostics.Process.Start(procInfo);  
           System.IO.File.WriteAllText(ut6, text1);
            proc.WaitForExit(1000);  
  //===========kommunikáció===========
          do
            {
            System.Threading.Thread.Sleep(1000);
                String[] lines = System.IO.File.ReadAllLines(ut6);
                System.Console.WriteLine("Contents of adatcsere.txt = ");
                foreach (string line in lines)
                {
                   kilep = line;
                    if (line == s1)
                    {
                        System.IO.File.WriteAllText(ut6, text2);
                        //messagebox.show(line);
                    }
                    if (line == s2)
                    {
                        System.IO.File.WriteAllText(ut6, text1);
                    }
                    if (line == beolvas)
                    {
                        System.IO.File.WriteAllText(ut6, text1);
                        //messagebox.show(line);
                       exec.mainform.filenametoload =ut7;  
                       exec.mainform.loadfile();  
 }
                }
            }
            while (kilep != "End");
  System.IO.File.WriteAllText(ut6, text1);

000000000

A lényeg, hogy a elkell indítani az .exe fájlodat a System.Diagnostics.Process.Start -al, és a WaitForExit-el várakoztatni kell a makrót, ez addig vár, amíg a folyamat, vagyis a programod fut.
A programod kiírhatja egy fájlba a kódot, majd a makró végén ezt be kell töltetni az UCCNC-vel, ahogy Csewe is csinálta:
 
exec.mainform.filenametoload = "...A fájl elérési őtja/neve";  
exec.mainform.loadfile();

frkdv6dyr

Ezt a részét értettem, csak az adatcsere.txt-be mit írjak és melyik sorba? Próbáltam így is meg úgy is, de nekem nem volt hajlandó betölteni, de még kilépni önmagából sem. Valamit nem jól értelmezek.
 
A kérdés:
Hogyan működik az adatcsere? Milyen értéket kell melyik sorba írni, és erre mit kellene csinálnia?  
 
Teljesen összekeveredtem már tegnap éjszaka.  

000000000

Szia,
 
Az adatcsere fájlnak nincsen köze az UCCNC-hez, szerintem Csewe ebben valami adatokat tárol a programjához, nem tudom pontosan mi lehet. Ő tudná megmondani,
 
A lényeg amit írtam, hogy indítsd el a programodat macro-ból a process.start-al és várakoztasd. Majd a programod ha végez, zárja be magát, ettől a macro tovább fog futni. és a macro végén a loadfile(); fgv.-el töltsd be a kódot amit a programod genetált.
 
Gyakorlatilag ennyit kell csinálni.

xfg6v697j

Szia,magánban megírom,hogy hogyan kell használni azt a file.

frkdv6dyr

Köszi :) megkaptam.  
 
A hiba:
- "Load" az nem "Load#13" :)
- "End" az nem "End "
 
most már megy a probléma kiküszöbölve.
 
http://cnctar.hobbycnc.hu/nyarfa/programok/wizards/" TARGET=_fnew>A könyvtár amiben találsz egy "install" könyvtárat. Letöltés és másolás.  
 
Várom az észrevételeket [#wink] a kritikát jól bírom [#violent] kezelni.

frkdv6dyr


xfg6v697j

Ma megint próbálgattam ,hogy tényleg jól méretezi e vissza az ablakot,mikor kilépek a vrázslóból,és ma meg nem jól csinálja,mindíg kissebbre veszi,pedig előtte meg teljesen jónak látzott.
Mégis csak kelene az a makiróból lekérdezés.
Ablak pozíciója,és mérete.

xfg6v697j

Jobban néz ki mint az enyém.