Pyserial ValueError:&#34; port&#34;必须是None或字符串,而不是<type'int'=“”>

时间:2017-09-13 16:35:20

标签: python-2.7 pyserial

我写了一个基本程序,该程序应该打开与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`

2 个答案:

答案 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)