首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重置导入的Python模块变量

重置导入的Python模块变量
EN

Stack Overflow用户
提问于 2016-06-16 23:27:50
回答 1查看 390关注 0票数 0

我试图理解为什么在模块变量导入后修改一次之后,实例化的模块变量不会被重置。我一直在使用minimalmodbus,如果默认设置与已连接设备的不匹配,则尝试重置波特率。设置自己的默认设置,无法重新初始化minimalmodbus以更改波特率。例如:

代码语言:javascript
复制
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

我已经使用了其他几个模块来解决这个问题,我真的很想了解为什么会发生这种情况。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-16 23:40:14

第一次使用给定的串口时,minimalmodbus and saves it

代码语言:javascript
复制
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协议是什么样的,也不知道你应该如何使用这个模块,所以我不能告诉你,你应该如何做你想做的事情,或者这是否是一个好主意。不管怎样,现在你知道发生了什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37870959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档