Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 Pyserial ValueError:“;“港口”;必须为无或字符串,而不是<;类型';int'&燃气轮机;_Python 2.7_Pyserial - Fatal编程技术网

Python 2.7 Pyserial ValueError:“;“港口”;必须为无或字符串,而不是<;类型';int'&燃气轮机;

Python 2.7 Pyserial ValueError:“;“港口”;必须为无或字符串,而不是<;类型';int'&燃气轮机;,python-2.7,pyserial,Python 2.7,Pyserial,我写了一个基本程序,它应该在一个组件上打开一个与设备的串行连接: import serial device = serial.Serial(port=5, baudrate=115200, bytesize=8, timeout=1,parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE) 在一台pc上,此代码有效。 另一方面,它会生成以下错误消息: Traceback (most recent call last): File

我写了一个基本程序,它应该在一个组件上打开一个与设备的串行连接:

import serial
device = serial.Serial(port=5, baudrate=115200, bytesize=8, 
    timeout=1,parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE)
在一台pc上,此代码有效。 另一方面,它会生成以下错误消息:

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`
回溯(最近一次呼叫最后一次):
文件“C:/Users/Lab/Desktop/Seebeck测量软件工作版本
170718/testtofinddevice.py”,第15行,英寸
设备=串行。串行(端口=5,波特率=115200,字节大小=8,
超时=1,奇偶校验=串行。奇偶校验\u无,停止位=串行。停止位\u一)
文件“C:\Python27\lib\site packages\serial\serialwin32.py”,第31行,在
__初始化__
超级(串行,自).\uuuuu初始化(*args,**kwargs)
文件“C:\Python27\lib\site packages\serial\serialutil.py”,第218行,在
__初始化__
self.port=端口
端口中第264行的文件“C:\Python27\lib\site packages\serial\serialutil.py”
raise VALUERROR(““端口”必须为None或字符串,而不是
{}.格式(类型(端口)))
ValueError:“端口”必须为None或字符串,而不是`在此处输入代码`

所以我自己找到了解决方案。但我不明白为什么它在两台pc上以不同的方式工作: 一方面,您需要此代码才能使其工作: 导入序列号 设备=串行。串行(端口=5,波特率=115200,字节大小=8, 超时=1,奇偶校验=串行。奇偶校验\u无,停止位=串行。停止位\u一)

另一方面,该代码: 导入序列号 设备=串行。串行(端口=“COM6”,波特率=115200,字节大小=8, 超时=1,奇偶校验=串行。奇偶校验\u无,停止位=串行。停止位\u一)


我猜pyserial有两种不同的版本???

所以我自己找到了解决方案。但我不明白为什么它在两台pc上以不同的方式工作: 一方面,您需要此代码才能使其工作: 导入序列号 设备=串行。串行(端口=5,波特率=115200,字节大小=8, 超时=1,奇偶校验=串行。奇偶校验\u无,停止位=串行。停止位\u一)

另一方面,该代码: 导入序列号 设备=串行。串行(端口=“COM6”,波特率=115200,字节大小=8, 超时=1,奇偶校验=串行。奇偶校验\u无,停止位=串行。停止位\u一)


我想pyserial似乎有两个不同的版本???

这是因为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)

这是由于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)

我认为设置为
5
端口应该设置为字符串,例如
“5”
。我得到的引号是:回溯(最近一次调用):文件“C:\testtofinddevice.py”,第2行,在device=serial.serial(port=“5”,波特率=115200)…文件“C:\…\serialwin32.py”,第62行,在open raise SerialException中(“无法打开端口{!r}:{!r}.”格式(self.portstr,ctypes.WinError())SerialException:无法打开端口“5”:WindowsError(2,‘系统找不到指定的文件’))是否确定设备名为“5”?发件人:“端口是设备名:取决于操作系统。”。e、 g.
/dev/ttyUSB0
在GNU/Linux上或
COM3
在Windows上。“我认为
端口
,您设置为
5
,应该设置为字符串,例如
“5”
。加上引号,我得到:回溯(最后一次调用):文件“C:\testtofinddevice.py”,第2行,在设备=serial.serial(port=“5”,波特率=115200)C:\…\serialwin32.py”,第62行,在open raise SerialException(“无法打开端口{!r}:{!r}”).format(self.portstr,ctypes.WinError())中。SerialException:无法打开端口“5”:WindowsError(2,“系统找不到指定的文件”。)您确定您的设备名被称为“5”吗端口是一个设备名称:取决于操作系统。e、 g.
/dev/ttyUSB0
在GNU/Linux上或
COM3
在Windows上。“请看我的答案……这两台机器的pyserial版本不同……在每台机器的命令行执行“pip冻结”,可能会在pyserial 2.x(port=5)和pyserial 3.x(port=“com6”)上各有一个。”。请查看我的答案…这是两台机器之间不同的pyserial版本…在每台机器的命令行中执行“pip冻结”,您可能会在pyserial 2.x(端口=5)处有一个,在pyserial 3.x(端口=com6)处有一个。