arduino的非阻塞python串行通信

时间:2018-07-24 11:23:41

标签: python multithreading arduino pyserial

我有一个HMI设备,可以从线圈中读取线圈,并基于该线圈将数据发送到arduino,以具有多线程程序,因此我决定使用绞线。这是我的代码:

from twisted.internet import task
from twisted.internet import reactor
import serial

ModbusMaster.ConnectToSlave('COM28',9600,8,'E',1)
Arduino = serial.Serial('COM35', 115200, timeout=0)

def HMICheck():
    RegVal = ModbusMaster.Slave_READ_COILS(1,0,5)
    ArduinoString =('@'+str(RegVal[0])+str(RegVal[1])+str(RegVal[2])+str(RegVal[3])).encode('utf-8')
    Arduino.write(ArduinoString + b'\n')
HMIReader = task.LoopingCall(HMICheck)
HMIReader.start(0.01)
reactor.run()

当我将HMIReader.start使用1秒时,它可以正常工作,我的意思是当我使用HMIReader.start(1),但是将其更改为低于.8时,它将无法工作。 1秒对我来说太低了。我也尝试使用while循环而不是扭曲的库,但是得到了相同的结果。似乎问题在于arduino无法很好地接收数据。有帮助吗?

0 个答案:

没有答案