Я хочу получать и обрабатывать данные от разных датчиков, используя последовательное соединение. Мне удалось создать соединение для получения данных от одного из датчиков. Теперь я хочу обрабатывать два последовательных порта одновременно с помощью многопоточности. Я пробовал несколько способов, но я застрял.
from tkinter import *
import serial
import time
import sys
import xml.dom.minidom as dom
from struct import *
import csv
SerialPortOxigraf = "COM4"
SerialPortMensor = "COM5"
SerialBaudrateOxigraf = 9600
SerialBaudrateMensor = 57600
def ReadOxigraf(serObject):
byte_list = []
while True:
try:
# Remove newline character '\n'
dataOxigraf = str(serObject.readline()).split('\\')
print('Whole Code', dataOxigraf)
for i in dataOxigraf:
for cnt in range(0, 4):
byte_list.append(i)
print(type(dataOxigraf))
for b in byte_list:
print('In List', b)
# response = serObject.readline()
if dataOxigraf:
print("Oxigraf-> " + str(dataOxigraf))
with open('Oxigraf_Data.csv', 'w', newline='') as csvfile:
OxigrafData = csv.writer(csvfile, delimiter=',')
OxigrafData.writerows(dataOxigraf)
except serial.SerialException as e:
print("Could not read serial port '{}': {}".format(SerialPortOxigraf, e))
except (KeyboardInterrupt, SystemExit):
sys.exit()
serObject.close()
def main():
ser = serial.Serial()
ser.port = SerialPortMensor
ser.baudrate = SerialBaudrateMensor
ser.bytesize = serial.EIGHTBITS #number of bits per bytes
ser.parity = serial.PARITY_NONE #set parity check: no parity
ser.stopbits = serial.STOPBITS_ONE #number of stop bits
#ser.timeout = None #block read
ser.timeout = 1 #non-block read
#ser.timeout = 2 #timeout block read
ser.xonxoff = False #disable software flow control
ser.rtscts = False #disable hardware (RTS/CTS) flow control
ser.dsrdtr = False #disable hardware (DSR/DTR) flow control
ser.writeTimeout = 2 #timeout for write
try:
ser.open()
except Exception as e:
print("Error open serial port: " + str(e))
sys.exit()
if ser.isOpen():
try:
ser.flushInput() #flush input buffer, discarding all its contents
ser.flushOutput() #flush output buffer, aborting current output and discard all that is in buffer
ReadMensor(ser)
except Exception as e:
print("Error...: " + str(e))
except (KeyboardInterrupt, SystemExit):
print("\nClose program..\n")
if ser: ser.close()
sys.exit()
У кого-нибудь есть намеки на меня? Заранее спасибо!