Merge pull request #59 from marc4492/#45-SendGCodecommandtotheArduino
#45 send g codecommandtothe arduino
This commit is contained in:
65
arduinosender/CommunicationMain.py
Normal file
65
arduinosender/CommunicationMain.py
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
import serial
|
||||||
|
import argparse
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
from serial import SerialException
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser(prog = 'main.py')
|
||||||
|
parser.add_argument('-g', required = True, help = 'GCode file path')
|
||||||
|
parser.add_argument('-c', required = True, help = 'Arduino com port')
|
||||||
|
parser.add_argument('-t', required = False, type = int, help = 'Communication timout')
|
||||||
|
parser.add_argument('-b', required = False, type = int, help = 'Communication baudrate')
|
||||||
|
parser.add_argument('-waittime', required = False, type = int, help = 'Sleep time before sending (s)')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
timeoutCom = 2
|
||||||
|
baudRate = 9600
|
||||||
|
commandTimeout = 0
|
||||||
|
waitTime = 1
|
||||||
|
|
||||||
|
if args.t:
|
||||||
|
timeoutCom = int(args.t)
|
||||||
|
if args.b:
|
||||||
|
baudRate = int(args.b)
|
||||||
|
if args.waittime:
|
||||||
|
waitTime = int(args.waittime)
|
||||||
|
|
||||||
|
ser = None
|
||||||
|
try:
|
||||||
|
ser = serial.Serial(args.c, baudRate, timeout = timeoutCom)
|
||||||
|
sleep(waitTime)
|
||||||
|
|
||||||
|
file = open(args.g, 'r')
|
||||||
|
lines = file.readlines()
|
||||||
|
file.close()
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
if not line == '\n':
|
||||||
|
ser.write(line.encode('UTF-8'))
|
||||||
|
|
||||||
|
if not ser.readline().decode('UTF-8').startswith('2'):
|
||||||
|
raise RuntimeError('Communication lost')
|
||||||
|
|
||||||
|
while True:
|
||||||
|
received = ser.readline().decode('UTF-8')
|
||||||
|
if not received.startswith('1') or received.startswith('-1'):
|
||||||
|
commandTimeout += 1
|
||||||
|
if commandTimeout > timeoutCom * 10:
|
||||||
|
raise RuntimeError('Command not executed')
|
||||||
|
if received.startswith('-1'):
|
||||||
|
raise RuntimeError('Command error')
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
|
||||||
|
print('Done')
|
||||||
|
|
||||||
|
ser.close()
|
||||||
|
|
||||||
|
except SerialException as errSE:
|
||||||
|
print('Serial Exception' + str(errSE))
|
||||||
|
except RuntimeError as errRE:
|
||||||
|
print(str(errRE))
|
||||||
|
finally:
|
||||||
|
if ser is not None:
|
||||||
|
ser.close()
|
||||||
0
arduinosender/__init__.py
Normal file
0
arduinosender/__init__.py
Normal file
Reference in New Issue
Block a user