60 lines
1.5 KiB
Python
60 lines
1.5 KiB
Python
import serial
|
|
|
|
|
|
class abfactory():
|
|
def __init__(self, classname=None):
|
|
self.process = classname
|
|
|
|
def setup_baudrate(self, com, rate):
|
|
self.process.setup_baudrate(self, com, rate)
|
|
|
|
def turn_on_machine(self):
|
|
self.process.turn_on_machine(self)
|
|
|
|
def trun_off_machine(self):
|
|
self.process.trun_off_machine(self)
|
|
|
|
def readData(self):
|
|
return self.process.readData(self)
|
|
|
|
|
|
class CINO_S680(): # CINO S680 FUZZYSCAN Barcode Scanner
|
|
|
|
ser = None
|
|
|
|
def setup_baudrate(self, com, rate):
|
|
self.ser = serial.Serial(com, rate)
|
|
|
|
def turn_on_machine(self):
|
|
msg = 'on'
|
|
self.ser.write(str.encode(msg))
|
|
|
|
def trun_off_machine(self):
|
|
msg = 'off'
|
|
self.ser.write(str.encode(msg))
|
|
|
|
def readData(self):
|
|
data_raw = None
|
|
result = None
|
|
try:
|
|
while True:
|
|
while self.ser.is_open:
|
|
# self.ser.in_waiting ##一般寫法用來等有資料輸出
|
|
data_raw = self.ser.read_all()
|
|
result = data_raw.decode() # 用預設的UTF-8解碼
|
|
if result != "":
|
|
self.ser.close()
|
|
break
|
|
self.ser = None
|
|
return str.strip(result)
|
|
|
|
except Exception:
|
|
print('err')
|
|
|
|
|
|
if __name__ == "__main__":
|
|
br = abfactory()
|
|
br.process = CINO_S680
|
|
br.setup_baudrate('COM10', '9600')
|
|
br.turn_on_machine()
|
|
print(br.readData()) |