问题标签 [pyserial]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2176 浏览

python - pyserial 连接有效,但如何使用 ser.readline() 处理输出?

我可以连接到一个电表(波特率 300!),228 行的日志文件慢慢进入。

如果我使用上面的代码,则会显示完整的日志文件。如果我用 match 解析单独保存的日志文件,它会将正确的值分类到 sqlite。所以这两个“部分”是分开工作的。

但是我的脚本无法移交输出来解析它。它不会抛出错误,只给出了 0 个值。

我错过了什么?首先我想,脚本是为了慢速输入而加快速度(需要一分钟以上),但是脚本在完成之前等待足够长的时间。

我试过没有成功:

引发错误 SyntaxError:无法分配给函数调用

0 投票
1 回答
1071 浏览

python - Python pyserial - 我如何确定串口的数量?

我想确定在 Linux 和 Windows 下可用的串行端口数量,包括 USB 适配器提供的那些,而无需针对特定平台调整程序。

我现在似乎在追赶我的尾巴,并且会欣赏另一个角度。

在任一平台上使用 pyserial 都很容易使用端口,但是您如何找出有多少端口可用?

0 投票
1 回答
5761 浏览

python - 使用 pyserial 冲洗方法

我在某处读到,使用刷新对于减少延迟是必要的。这是真的?

我不太确定使用它。请帮助我了解它的确切作用。

我检查了 pyserial 文档,但没有给我太多信息。它只说:

flush() 文件类对象的刷新。这是此类中的空操作,可能会被覆盖。

0 投票
4 回答
9622 浏览

python - Windows 或 Ubuntu VBox 上的串行端口,可通过 Python 与 Arduino 通信

我有一个 Arduino 微控制器在 COM3 上监听。使用 arduino IDE 和串行监视器可以很好地发送和接收数据。

我想从 Python 发送和接收数据,但如何做到这一点并不是很明显。(如果它更容易的话,我也可以在 C# 中这样做。)

我找到了 arduino_serial.py,但它只适用于 Unix。幸运的是,我安装了 Ubuntu 10.10 VBox。但是,我不知道该 VM 是否可以访问串行端口,或者是否需要特殊步骤才能这样做。

我还发现了 pySerial,它看起来很合法。但是,我也不确定如何使用它。它需要串行端口名称。我如何找出这些的有效值是什么?

例如,pySerial提到您可以使用以下命令“在“19200,8,N,1”处打开命名端口,1s 超时”:

但我不知道你怎么知道这/dev/ttyS1是一个有效的端口名称。

是否有很好的文档可以开始这方面的工作?

更新:我正在使用带有 arduino_serial 的 Ubuntu,但仍然遇到问题。

该程序在 Arduino 上运行:

我看到一个名为的端口tty0可用:

然后我尝试连接arduino_serial

为什么我会收到此错误?我究竟做错了什么?

0 投票
2 回答
8384 浏览

python - PySerial 和多个 Python 安装的问题

我的 Windows 7 机器上有 Python 2.4.4 和 3.1.3。我想使用 PySerial。

我听说它是​​内置的,所以我尝试import serial了两个版本。两者都引起了Import Error.

然后我从这个页面下载了 win32 安装程序。我运行了它,它安装了 2.4.4。(它说它是从注册表中找到的。)我没有选择更改为 3.1.1 版本的选项。

然后我在 2.4.4 中遇到以下错误:

我查了一下ctypes,发现它是从 2.5.5 开始内置的。好的。

我下载ctypes并运行python setup.py install。(2.4.4.)

我得到以下信息:

甜的。好的。这似乎太费力了,所以我想尝试使用 Python 3.1.1。我编辑我的 PATH 环境变量以包含C:\Python31\而不是C:\Python24.

我重新启动 cmd 并python setup.py install在 pyserial 上运行:

有趣的。然后我尝试import serial从 Python 3.1.1 中的 IDLE 开始,但我得到了标准的ImportError. 唔。

这里发生了什么?难道我做错了什么?

更新:我尝试setup.py install使用 3.1.1 运行:

嗯...看起来我使用的 pyserial 版本不正确。这个下载页面使它看起来像 2.5 是最新的。奇怪的。

更新 2:我检查并修复了所有语法错误,但开始出现导入错误。在__init__.py中,我改变了:

至:

现在我收到一个错误serialwin32.py

我尝试执行.modulename语法,但无法编译。

我还能在这里做什么?我很难相信有人打算让这段代码在 Python 3 上运行。(也许我得到了错误的版本?)

0 投票
1 回答
1225 浏览

linux - pyserial输入缓冲区

我通过 USB 仿真串行线路 (FT2232HL) 与我的硬件通信。我需要使用 pySerial 和 Python Imaging Library 向其发送位图。这是代码:

问题是它不起作用。我设置了一个环回,用cutecom捕获它,但似乎只传输了大约30kB(cutecom日志的大小)。我还尝试了另一个硬件(带有 F5U103v 的贝尔金 USB 串行转换器),结果相同。我想它可能是一些 io 缓冲区,但我找不到任何关于它的信息。

编辑:第一个 cutecom 日志(包含从环回接收的数据)的大小是 32725 字节(发送正好 42126 字节)。当我在不截断日志文件的情况下运行脚本两次时,它的大小为 81838 字节。我还检查了调用的返回值device.write(),它正好是 42126。

0 投票
2 回答
2087 浏览

php - 如何创建 pyserial Web 服务?

我编写了一个与 /dev/ttyS02 上的串行设备交互的 Web 应用程序。问题是我当前的消息传递和排队解决方案。请阅读下文。

这是应用程序和pyserial之间的通信桥梁:

  • 我的 Web 应用程序通过 PHP 将请求记录插入 MySQL 中的 d_requests 表中。插入记录的处理列设置为 0。插入记录的 id 保存在 $id 变量中,PHP 应用程序进入循环状态,它将使用 $id 作为查找参考不断检查 d_requests[processed] 列是否 = 1 .

  • 我有一个 python 守护程序服务,它每秒检查 d_requests 表中已处理列 = 0 的记录。这被认为是一个新请求。(参考源码-python服务)

  • 然后 python 服务使用记录的信息通过 pyserial 连接到端口。

  • 执行请求的操作。然后记录的已处理列更新为 1,并且其他一些字段也将更新。这将记录标记为已处理。

  • 然后 PHP 控制块退出循环(第 1 点。)并将结果作为 json 返回给 JS 应用程序。它呈现给用户的位置。

一些注意事项

  • 串行设备能够每 250 毫秒处理 1 个请求。
  • python 守护程序服务每 1 秒监视 d_requests 表中已处理列 = 0 的记录。
  • 我的 Web 应用程序与 python 守护程序服务的唯一通信是 MySQL
    DB,方法是在 d_requests 表中插入请求记录。
  • 我使用 PHP 块代码每秒使用插入的 id 查找请求,以检查处理的列是否已更新为 1。

我的顾虑

单点故障

当守护程序服务未运行时,无法进行串行请求

极端资源使用

我预计串行设备每秒大约有 4-5 个请求。使用当前的实现来处理消息,数据库将超时工作并且 CPU 使用率将很高,因为 PHP 应用程序和 python 守护程序/服务将连接并在数据库上执行查询,并且请求处理会有延迟。

结论:有没有更好的方法来改进我当前的消息传递和排队解决方案?我认为 pyserial web 服务在这种情况下会很好用,例如串行端口。连接到网络套接字,例如。host:<7000> 我可以通过 PHP 向它发送一个请求,然后等待来自 Web 服务的响应。不幸的是,我不知道该怎么做。

有任何想法吗?

谢谢你

源代码

蟒蛇服务

0 投票
1 回答
2936 浏览

python - 使用 Pyserial 打开串口时出现问题

我正在尝试使用 Pyserial 从串行端口读取通过蓝牙调制解调器发送的数值。我是 Python 的初学者,并找到了一个我正在尝试使用的好例子。

我可以在另一个程序中打开端口,并可以从中发送/接收数据。但是,上面的代码似乎并没有打开端口,只是向终端窗口重复“100”500次,但我不知道它来自哪里,也不知道为什么端口没有正确打开。打开端口没有延迟,因为它在另一个程序上,所以我什至不知道它是否试图打开。

我不知道还能尝试什么,或者错误在哪里,所以我正在寻求帮助。我究竟做错了什么?

0 投票
6 回答
9277 浏览

python - 无法在 Pyserial 中打开串行连接:“termios.error: (22, 'Invalid argument')”

我在执行以下代码时遇到问题:

这昨天有效,我不知道我改变了什么。现在我收到以下错误消息:

我是 Python 的完全初学者,无法破译上面的错误信息。我尝试重新安装 Pyserial,但这并没有解决错误。怎么了?

0 投票
3 回答
2811 浏览

python - 使用 pySerial 和 socat 发送字节时出现问题

我想通过 pySerial 发送一些字节。我用 socat 创建了虚拟串口用于测试目的:

这是python代码:

我得到的输出:

我期望的输出:

我在这里做错了什么?是socat还是python?

编辑:

我刚刚注意到不同 x 值的其他一些奇怪行为。这里的输出:

解决方案:

问题是我在写信的同一个端口上阅读。如果我做对了,socat 将两个端口“连接”为“输入”和“输出”。因此,如果我写入 ./ptyp1,我必须阅读 ./ptyp2。之后,一切都很好。