Source code for AFL.automation.loading.SerialDevice

import time
import lazy_loader as lazy
serial = lazy.load("serial", require="AFL-automation[serial]")
from AFL.automation.shared.exceptions import SerialCommsException

[docs] class SerialDevice():
[docs] def __init__(self,port,baudrate=19200,timeout=0.5,raw_writes=False): self.serialport = serial.Serial(port,baudrate=baudrate,timeout=timeout) self.busy = False self.raw_writes = raw_writes
[docs] def sendCommand(self,cmd,response=True,questionmarkOK=False,timeout=-1,debug=False): while self.busy: #if debug: # print('awaiting port not busy...') time.sleep(0.1) self.busy=True #print('passed busy check, performing write') #print(self.serialport) if self.raw_writes: self.serialport.write(cmd) else: self.serialport.write(bytes(cmd,'utf8')) #if debug: # print(f'wrote {cmd} to port...') if response: #if debug: # print(f'awaiting response...') if timeout is not -1: prevtimeout = self.serialport.timeout self.serialport.timeout = timeout answer = self.serialport.readline().decode("utf-8") print(cmd) print(f'To device: {cmd}, answer was {answer}') if '?' in answer and not questionmarkOK: raise SerialCommsException if timeout is not -1: self.serialport.timeout = prevtimeout else: answer = None self.busy=False return answer