我试图理解为什么在模块变量导入后修改一次之后,实例化的模块变量不会被重置。我一直在使用minimalmodbus,如果默认设置与已连接设备的不匹配,则尝试重置波特率。设置自己的默认设置,无法重新初始化minimalmodbus以更改波特率。例如:
import minimalmodbus
minimalmodbus.BAUDRATE=9600
comm=minimalmodbus.Instrument('COM4',1) #baud rate set to 9600 here for comm
minimalmodbus.BAUDRATE=19200
comm=minimalmodbus.Instrument('COM4',1) #attempting to change baud rate
print comm #displays all information, and showing that baudrate=9600, not 19200我已经使用了其他几个模块来解决这个问题,我真的很想了解为什么会发生这种情况。
发布于 2016-06-16 23:40:14
第一次使用给定的串口时,minimalmodbus and saves it
def __init__(self, port, slaveaddress, mode=MODE_RTU):
if port not in _SERIALPORTS or not _SERIALPORTS[port]:
self.serial = _SERIALPORTS[port] = serial.Serial(port=port, baudrate=BAUDRATE, parity=PARITY, bytesize=BYTESIZE, stopbits=STOPBITS, timeout=TIMEOUT)
else:
self.serial = _SERIALPORTS[port]
if self.serial.port is None:
self.serial.open()
...即使BAUDRATE稍后更改,今后使用该串口的尝试也将使用旧的波特率的旧serial.SERIAL实例。
我不知道Modbus协议是什么样的,也不知道你应该如何使用这个模块,所以我不能告诉你,你应该如何做你想做的事情,或者这是否是一个好主意。不管怎样,现在你知道发生了什么。
https://stackoverflow.com/questions/37870959
复制相似问题