hello freinds,
I am sending a BIN file successfully to my energy meter through serial port using the code in the bottom. My problem is that Xmodem doesn't stop after all 128 blocks where sent and i have no idea how to break from it and communicate again with my meter.
Please your kind help.
I am sending a BIN file successfully to my energy meter through serial port using the code in the bottom. My problem is that Xmodem doesn't stop after all 128 blocks where sent and i have no idea how to break from it and communicate again with my meter.
Please your kind help.
def sendFile(): fileSize = os.path.getsize('104_new.BIN') total = math.ceil(fileSize /128) ser= serialPort.serialport ser.flushInput() print (ser) def getc(size, timeout=0): gbytes = ser.read(1) #sleep(0.008) print(f'Read Byte: {gbytes}') return gbytes or None def putc(data, timeout=0): pbytes = ser.write(data) sleep(0.2) print(f'Put Byte: {pbytes}') return pbytes or None modem =XMODEM(getc,putc) f = open('104_new.BIN', "rb") modem.send(f,retry=50,callback=total) f.close() ser.close() ser.flushOutput() senddata_edit.insert(0,'scan\r')this is the error code i get:
Error:send error: expected ACK; got None
Exception in thread Thread-2:
Traceback (most recent call last):
File "C:\Users\shay\AppData\Local\Programs\Python\Python37-32\lib\threading.py", line 926, in _bootstrap_inner
self.run()
File "C:\Users\shay\AppData\Local\Programs\Python\Python37-32\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "C:\PythonTerminal-master\PythonTerminal-master\mainpy2.py", line 211, in sendFile
status= modem.send(f,retry=50,timeout=0)
File "C:\Users\shay\AppData\Local\Programs\Python\Python37-32\lib\site-packages\xmodem\__init__.py", line 349, in send
self.putc(EOT)
File "C:\PythonTerminal-master\PythonTerminal-master\mainpy2.py", line 203, in putc
pbytes = ser.write(data)
File "C:\Users\shay\AppData\Local\Programs\Python\Python37-32\lib\site-packages\serial\serialwin32.py", line 315, in write
raise SerialException("WriteFile failed ({!r})".format(ctypes.WinError()))
serial.serialutil.SerialException: WriteFile failed (OSError(9, 'The handle is invalid.', None, 6))