我有一个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无法很好地接收数据。有帮助吗?