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

svejk


xfg6v697j

Szia balázs,küldtem egy emailt.

000000000


xfg6v697j

Nem érkezett meg még eddig,esetleg mégegszer elküldhetnéd,biztos ami biztos.

000000000

elküldtem mégegyszer...

xfg6v697j

Ideért,és válaszoltam.

000000000


xfg6v697j

Ez miért nem hajtódik végre?
 
double a = 5 ;
double b = 2 ;
double c = 1 ;
exec.Code("G1 x" + a + " - (" + b + " - " + c + ")" + "F100");  
while(exec.IsMoving()){}
 
Nincs hibajelzés semmi.
Mégsem mozdul meg az X tengely.

dezsoe

Szia!
Két oka van. Az egyik a zárójel: g-kódban () helyett [] kell, a () a megjegyzés. A másik, hogy nem adhatsz kifejezést paraméterként. (Doksi, 4.2: "... műveletek megadása paraméterként nem megengedett.")
Tehát:
d = a + (b - c);
exec.Code("G1 x" + d + " F100");
vagy:
exec.Code("G1 x" + (a + (b - c)) + " F100");
vagy g-kódban:
#4 = #1 + [#2 - #3]
G1 X#1 F100
Amennyire emlékszem, a nem értelmezhető részeket kihagyja. Más tészta, hogy nem pirul el a kódnak ez a része.

000000000

Azért, mert string konkatenációt hajtasz végre, amiben a stringbe fűzi a számokat a C# fordító és nem hajtja végre az aritmetikát. Ez szerintem minden más programozási nyelvben így hajtódik végre, legalábbis amiket én ismerek.
 
A string értéke ez lesz:
G1 x5 - (2 - 1)F100
 
Ez G-kódban hiba, mert nem egy numerikus érték vagy változó áll az X paramétereként
 
Próbáld úgy, hogy az aritmetikai művelet eredményét egy double változónak adod és az eredményt fűzd bele a stringbe.
 

xfg6v697j

"
Két oka van. Az egyik a zárójel: g-kódban () helyett [] kell, a () a megjegyzés. A másik, hogy nem adhatsz kifejezést paraméterként.
"
Bár tudtam ezeket,de mindkettőről megfelejtkeztem.

xfg6v697j

Kipróbáltam ezt,és elég furcsán viselkedik:
double a = 10 ;
double b = 2 ;
double c = 1 ;
exec.Code("#1 =" + a + " - [" + b + " - " + c + "]") ;
exec.Code("G1 x#1 F100");  
while(exec.IsMoving()){}
 
Szépen elmegy kilencig ahogy kell,majd azonnal lemegy nullára,amit viszont nem kéne neki.

Béni

Nem kellene ide valami típuskonverzió?
(Double -> String)?

dezsoe

Hümm. Így lesz csak igazán érdekes:
 
double a = 10 ;  
double b = 2 ;  
double c = 1 ;  
exec.Code("#1 =" + a + " - [" + b + " - " + c + "]") ;  
exec.Code("G1 x#1 F100");  
MessageBox.Show("Megállunk...");
exec.Code("G1 y#1 F100");  
while(exec.IsMoving()){}  
Ha az Y-ost kiveszed, akkor X megy vissza. A legutóbbi mozgást visszacsinálja? Érdekes.

000000000

Sziasztok,
 
Kijavítottam a hibát.
 
http://cncdrive.com/UCCNC/setup_1.0043.exe" TARGET=_fnew>UCCNC 1.0043