我写了一个基本程序,该程序应该打开与comport上的设备的串行连接:
import serial
device = serial.Serial(port=5, baudrate=115200, bytesize=8,
timeout=1,parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE)
在一台电脑上这个代码有效。 另一方面,它会产生此错误消息:
Traceback (most recent call last):
File "C:/Users/Lab/Desktop/Seebeck measurement software working version
170718/testtofinddevice.py", line 15, in <module>
device = serial.Serial(port=5, baudrate=115200, bytesize=8,
timeout=1,parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE)
File "C:\Python27\lib\site-packages\serial\serialwin32.py", line 31, in
__init__
super(Serial, self).__init__(*args, **kwargs)
File "C:\Python27\lib\site-packages\serial\serialutil.py", line 218, in
__init__
self.port = port
File "C:\Python27\lib\site-packages\serial\serialutil.py", line 264, in port
raise ValueError('"port" must be None or a string, not
{}'.format(type(port)))
ValueError: "port" must be None or a string, not <type 'int'>`enter code here`
答案 0 :(得分:0)
所以我自己找到了解决方案。但我不明白为什么它以不同的方式在两台电脑上工作: 在一个你需要这个代码,以使其工作: 导入序列 device = serial.Serial(port = 5,baudrate = 115200,bytesize = 8, timeout = 1,parity = serial.PARITY_NONE,stopbits = serial.STOPBITS_ONE)
另一个代码: 导入序列 device = serial.Serial(port =“COM6”,baudrate = 115200,bytesize = 8, timeout = 1,parity = serial.PARITY_NONE,stopbits = serial.STOPBITS_ONE)
所以似乎有两个不同版本的pyserial我猜???
答案 1 :(得分:0)
这是由于pyserial的版本,而不是Python的版本。他们将参数从int更改为pyserial 2.7(可以安装在Python 3.x上)和pyserial 3.x之间的字符串。我现在的大多数程序都有这样的代码:
if (float(serial.VERSION) >= 3.0):
portnamenum = sys.argv[1]
print ("Opening " + portnamenum)
else:
portnamenum = int(sys.argv[1])
print ("Opening com" + str(portnamenum))
ser = serial.Serial(port=portnamenum, baudrate=19200, bytesize=8, parity="E", stopbits=1, timeout=0.1)