src/eric7/MicroPython/MicroPythonSerialDeviceInterface.py

branch
mpy_network
changeset 10008
c5bcafe3485c
parent 9990
54c614d91eff
child 10012
d649d500a9a1
equal deleted inserted replaced
9990:54c614d91eff 10008:c5bcafe3485c
19 class MicroPythonSerialDeviceInterface(MicroPythonDeviceInterface): 19 class MicroPythonSerialDeviceInterface(MicroPythonDeviceInterface):
20 """ 20 """
21 Class implementing an interface to talk to a connected MicroPython device via 21 Class implementing an interface to talk to a connected MicroPython device via
22 a serial link. 22 a serial link.
23 """ 23 """
24
25 PasteModePrompt = b"=== "
26 TracebackMarker = b"Traceback (most recent call last):"
27 24
28 def __init__(self, parent=None): 25 def __init__(self, parent=None):
29 """ 26 """
30 Constructor 27 Constructor
31 28
213 return False 210 return False
214 211
215 if not self.__serial.isConnected(): 212 if not self.__serial.isConnected():
216 return False 213 return False
217 214
218 # switch on raw mode 215 # switch on paste mode
219 self.__blockReadyRead = True 216 self.__blockReadyRead = True
220 ok = self.__pasteOn() 217 ok = self.__pasteOn()
221 if not ok: 218 if not ok:
222 self.__blockReadyRead = False 219 self.__blockReadyRead = False
223 return False 220 return False
224 221
225 # switch off raw mode 222 # switch off paste mode
226 QThread.msleep(10) 223 QThread.msleep(10)
227 self.__pasteOff() 224 self.__pasteOff()
228 self.__blockReadyRead = False 225 self.__blockReadyRead = False
229 226
230 return True 227 return True
351 """ 348 """
352 if not self.__serial: 349 if not self.__serial:
353 return b"", b"" 350 return b"", b""
354 351
355 if not self.__serial.isConnected(): 352 if not self.__serial.isConnected():
356 return b"", b"Device not connected or not switched on." 353 return b"", b"Device is not connected or not switched on."
357 354
358 if isinstance(commands, list): 355 if isinstance(commands, list):
359 commands = "\n".join(commands) 356 commands = "\n".join(commands)
360 357
361 # switch on paste mode 358 # switch on paste mode
397 if self.__serial.hasTimedOut(): 394 if self.__serial.hasTimedOut():
398 self.__blockReadyRead = False 395 self.__blockReadyRead = False
399 return b"", b"Timeout while processing commands." 396 return b"", b"Timeout while processing commands."
400 397
401 # get rid of any OSD string 398 # get rid of any OSD string
399 # TODO: emit the OSD data
402 if result.startswith(b"\x1b]0;"): 400 if result.startswith(b"\x1b]0;"):
403 result = result.split(b"\x1b\\")[-1] 401 result = result.split(b"\x1b\\")[-1]
404 402
405 if self.TracebackMarker in result: 403 if self.TracebackMarker in result:
406 errorIndex = result.find(self.TracebackMarker) 404 errorIndex = result.find(self.TracebackMarker)
474 command = b"\n".join(c.encode("utf-8)") for c in commandsList) 472 command = b"\n".join(c.encode("utf-8)") for c in commandsList)
475 self.__serial.write(command) 473 self.__serial.write(command)
476 self.__serial.readUntil(command) 474 self.__serial.readUntil(command)
477 self.__blockReadyRead = False 475 self.__blockReadyRead = False
478 self.__pasteOff() 476 self.__pasteOff()
479 self.executeAsyncFinished.emit 477 self.executeAsyncFinished.emit()

eric ide

mercurial