Forum
>>
Principianti
>>
Interpretare codice
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da Fede |
2018-02-14 22:39:45 - Interpretare codice
|
Salve a tutti, sono nuovo del forum e pure in questo linguaggio.
Vorrei chiedervi cortesemente se qualcuno mi puo' spiegare le varie righe di questo codice: # Simple GCode to Arduino hex format converter. # It only understands G00 and G01 codes, nothing fancy! # # It will automatically scale the object to the full 12 bit # range for my Arduino laser project, to change that # you have to modify the scale in createObject(). # # Typical files I worked with have been generated with # http://ncplot.com/stickfont/stickfont.htm (StickFont 1.1) # # Usage: python convertGCode.py ccc.nc outputfile.cpp import math import sys def createObject(name, cmds): minx = miny = 10000000 maxx = maxy = 0 string = "" for cmd in cmds: if cmd0 == 2: minx = min(minx,cmd1) miny = min(miny,cmd2) maxx = max(maxx,cmd1) maxy = max(maxy,cmd2) string += "const unsigned short draw_" + name + "[] PROGMEM = {\n"; laserState = False biggestSide = max(maxx-minx, maxy-miny) # scale to the laser range scale = 4095. / biggestSide; print ("bounding box x: ", minx, maxx) print ("bounding box y: ", miny, maxy) print ("scale: ", scale) for cmd in cmds: if cmd0 == 0:laserState = False if cmd0 == 1:laserState = True if cmd0 == 2: x = int(math.floor((cmd1-minx) * scale)) y = int(math.floor((cmd2-miny) * scale)) if laserState: x += 0x8000 string += hex(x) + "," + hex(y) + ",\n" string += "};\n" return string def run(input, output): result = "" f = open(input); lines = f.readlines() drawing = False posx = posy = 0. cmds = [] for l in lines: if l.startswith("G00"): if drawing: cmds.append((0,)) drawing = False elif l.startswith("G01"): drawing = True cmds.append((1,)) elif l.startswith("X"): parts = l.split("Y") newposx = float(parts0[1:]) newposy = float(parts1) cmds.append((2,newposx,newposy)) posx = newposx posy = newposy result = createObject("object", cmds) o = open(output,"w") o.write(result) if __name__ == "__main__": if len(sys.argv) < 3: print ("Usage: convertGCode.py inputfile.nc outputfile.cpp") else: run(sys.argv1, sys.argv2) che trasforma un codice in Gcode come questo: G00Z0.0 X50.8555Y60.9307 G01Z0,0F0,0 X56.7262Y57.1182 X58.9047Y60.4729 G00Z0.0 in questo: const unsigned short draw_object[] PROGMEM = { 0x0,0x793, 0x8baa,0x0, 0x8fff,0x6aa, }; Il fine ultimo e' di poter ricostruire i passaggi per fare lo stesso convertitore con altro linguaggio (java), di cui sono piu pratico Grazie per l'aiuto |
|
Scritto da Daniele aka Palmux |
2018-02-14 22:58:59 - Re: Interpretare codice
|
Cioè fammi capire, vuoi che qualcuno ti descriva il funzionamento dello script, anche piuttosto lunghetto, per permetterti di tradurlo in Java e probabilmente non vederti più su Python? Non ha molto senso permettimi.
Uso il mio tempo libero per aiutare nella comprensione di questo linguaggio sempre molto volentieri, lo faccio quasi mai scrivendo codice ma cercando invece di indirizzare verso la soluzione e/o la comprensione di una determinata problematica. Ma la tua richiesta di "traduzione" è una cosa nuova, mi spiazza e non mi piace per nulla. Posso suggerirti di studiare le basi del linguaggio da una qualsiasi risorsa online e cercare di capire i vari passaggi dello script, che non mi sembrano particolarmente complicati. Cya |
|
Scritto da Fede |
2018-02-15 13:31:07 - Re: Interpretare codice
|
grazie del suggerimento, andro' a cercare informazioni in internet
Saluti |
Pagina: 1
Esegui il login per scrivere una risposta.