我对使用Python的硬件非常陌生。 我最近安装了pyserial以与实验室设备通信,并编写了一些初步代码来确保其正确安装:

import serial
import serial.tools.list_ports

for n in serial.tools.list_ports.comports():
    print(n)

ser = serial.Serial("COM4")
ser.close()

但是,这立即引发错误,并且端口无法打开。

COM4 - USB to Serial Cable (COM4)
Traceback (most recent call last):

  File "<ipython-input-8-d5870cbfac06>", line 1, in <module>
    runfile('C:/Users/zach/Downloads/Research Code/CPC_read.py', wdir='C:/Users/zach/Downloads/Research Code')

  File "C:\Users\zach\Anaconda2\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile
    execfile(filename, namespace)

  File "C:\Users\zach\Anaconda2\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 95, in execfile
    exec(compile(scripttext, filename, 'exec'), glob, loc)

  File "C:/Users/zach/Downloads/Research Code/CPC_read.py", line 8, in <module>
    ser = serial.Serial("COM4")

  File "C:\Users\zach\Anaconda2\lib\site-packages\serial\serialwin32.py", line 31, in __init__
    super(Serial, self).__init__(*args, **kwargs)

  File "C:\Users\zach\Anaconda2\lib\site-packages\serial\serialutil.py", line 240, in __init__
    self.open()

  File "C:\Users\zach\Anaconda2\lib\site-packages\serial\serialwin32.py", line 62, in open
    raise SerialException("could not open port {!r}: {!r}".format(self.portstr, ctypes.WinError()))

SerialException: could not open port 'COM4': WindowsError(2, 'The system cannot find the file specified.')

在顶部,pyserial将COM4识别为可用端口,但仍无法连接。

我可以找到的有关pyserial错误的大多数信息涉及人们使用不正确的语法来更新/较旧版本的pyserial,但是我尝试了Anaconda(2&3)和pyserial(2.7&3.4)的多个版本来尝试修复任何兼容性问题,以及完全不同的python安装。 此测试在pyserial 3.4和Anaconda2 / Spyder上进行。

pyserial专门尝试查找哪个文件? 追溯到serialwin32,似乎它以某种方式生成了无效的端口句柄。

  ask by Zach translate from so

本文未有回复,本站智能推荐:

1回复

打开串行端口,Pyserial

我想通过RS232与Lake Shore Temperature Controler M331连接,但是我遇到了一些问题。 当我发出“命令”时,它仍在等待另一个命令,而不是将其发送到我的设备。 这是我的代码: 我的代码有什么问题?
1回复

如何仅在端口打开时发送DTR/RTS信号,而不是通过pySerial发送端口关闭

我有一个系统,当它的 COM 端口通过 pySerial 打开或关闭时,会在两者上接收复位信号,这是标称行为: 然而,我想要发生的是重置仅在端口打开时发生,并允许系统在端口关闭时继续运行。 我失败的尝试: 这可能吗? 还是 posix 端口的性质使其行为在实例化时固定? 谢谢!
1回复

py2exe编译pySerial没有错误,但com端口未打开

我正在一个使用pySerial从物理规模读取数据的快速项目。 我将pygame用作简单GUI的前端。 我正在尝试使用py2exe部署项目。 通过python运行该项目时,可以打开串行并按预期读取它。 我的py2exe安装脚本编译的可执行文件正常运行(无导入错误) 可执行文件
2回复

Pyserial与虚拟端口不兼容

动机 我想开始学习如何使用python库pyserial 。 它似乎是一个非常好的图书馆,适用于很多人。 我想将它用于即将开展的项目,我必须自动进行串行通信。 环境 我正在运行Ubuntu 15.04。 我正在使用Python 2.7。 设置虚拟端口 我目前没有可以通过
2回复

使用Pyserial时的字符转换错误

我一直在编写一个脚本,定期地从串行设备中提取数据。 除了从设备接收到的响应中包含许多问号之外,我一切正常。 由于根据设备文档获取的格式正确(正确的字符数,逗号位置等),因此我很确定我的代码以某种方式解释了错误的字符。 这是我的代码: 和用户手册中的示例输出: 以及输出如下所示:
3回复

如何使用PySerial将整数写入端口

我正在尝试使用PySerial将数据写入第一个串行端口COM1。 应该工作。 但是,我需要不断发送28个字节的整数; 在形式 on循环,每个整数使用一个字节的数据。 试: 引发Syntax Error 。 如果只write发送字符串,如何将整数write串口? 如何确保
1回复

通过pyserial从com端口接收数据

我无法通过pyserial从com端口接收数据! 我已经编译了程序,可以正确发送数据并从控制器接收答案! 我使用了comport监视程序来监视来自控制器的请求和答复: 正确的发送和答复 但是当我发送相同的请求时我什么也没得到(( 我的请求没有回答我的Python编: 我正在尝试不同的
5回复

PySerial[错误5]访问被拒绝

我正在尝试用Python编写一个程序,它将循环以检查串行端口(COM4)并在从串行端口读取字符“1”时打印出一条消息。 我想通过按下按钮从Arduino小工具的串口发送“1”。 但是,当我尝试创建一个串行对象的实例时,我收到错误“[错误5]:访问被拒绝”。 (它自动尝试在实例化时打开,这