问题标签 [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.
python - pyserial 连接有效,但如何使用 ser.readline() 处理输出?
我可以连接到一个电表(波特率 300!),228 行的日志文件慢慢进入。
如果我使用上面的代码,则会显示完整的日志文件。如果我用 match 解析单独保存的日志文件,它会将正确的值分类到 sqlite。所以这两个“部分”是分开工作的。
但是我的脚本无法移交输出来解析它。它不会抛出错误,只给出了 0 个值。
我错过了什么?首先我想,脚本是为了慢速输入而加快速度(需要一分钟以上),但是脚本在完成之前等待足够长的时间。
我试过没有成功:
引发错误 SyntaxError:无法分配给函数调用
python - Python pyserial - 我如何确定串口的数量?
我想确定在 Linux 和 Windows 下可用的串行端口数量,包括 USB 适配器提供的那些,而无需针对特定平台调整程序。
我现在似乎在追赶我的尾巴,并且会欣赏另一个角度。
在任一平台上使用 pyserial 都很容易使用端口,但是您如何找出有多少端口可用?
python - 使用 pyserial 冲洗方法
我在某处读到,使用刷新对于减少延迟是必要的。这是真的?
我不太确定使用它。请帮助我了解它的确切作用。
我检查了 pyserial 文档,但没有给我太多信息。它只说:
flush() 文件类对象的刷新。这是此类中的空操作,可能会被覆盖。
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
:
为什么我会收到此错误?我究竟做错了什么?
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 上运行。(也许我得到了错误的版本?)
linux - pyserial输入缓冲区
我通过 USB 仿真串行线路 (FT2232HL) 与我的硬件通信。我需要使用 pySerial 和 Python Imaging Library 向其发送位图。这是代码:
问题是它不起作用。我设置了一个环回,用cutecom捕获它,但似乎只传输了大约30kB(cutecom日志的大小)。我还尝试了另一个硬件(带有 F5U103v 的贝尔金 USB 串行转换器),结果相同。我想它可能是一些 io 缓冲区,但我找不到任何关于它的信息。
编辑:第一个 cutecom 日志(包含从环回接收的数据)的大小是 32725 字节(发送正好 42126 字节)。当我在不截断日志文件的情况下运行脚本两次时,它的大小为 81838 字节。我还检查了调用的返回值device.write()
,它正好是 42126。
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 服务的响应。不幸的是,我不知道该怎么做。
有任何想法吗?
谢谢你
源代码
蟒蛇服务
python - 使用 Pyserial 打开串口时出现问题
我正在尝试使用 Pyserial 从串行端口读取通过蓝牙调制解调器发送的数值。我是 Python 的初学者,并找到了一个我正在尝试使用的好例子。
我可以在另一个程序中打开端口,并可以从中发送/接收数据。但是,上面的代码似乎并没有打开端口,只是向终端窗口重复“100”500次,但我不知道它来自哪里,也不知道为什么端口没有正确打开。打开端口没有延迟,因为它在另一个程序上,所以我什至不知道它是否试图打开。
我不知道还能尝试什么,或者错误在哪里,所以我正在寻求帮助。我究竟做错了什么?
python - 无法在 Pyserial 中打开串行连接:“termios.error: (22, 'Invalid argument')”
我在执行以下代码时遇到问题:
这昨天有效,我不知道我改变了什么。现在我收到以下错误消息:
我是 Python 的完全初学者,无法破译上面的错误信息。我尝试重新安装 Pyserial,但这并没有解决错误。怎么了?
python - 使用 pySerial 和 socat 发送字节时出现问题
我想通过 pySerial 发送一些字节。我用 socat 创建了虚拟串口用于测试目的:
这是python代码:
我得到的输出:
我期望的输出:
我在这里做错了什么?是socat还是python?
编辑:
我刚刚注意到不同 x 值的其他一些奇怪行为。这里的输出:
解决方案:
问题是我在写信的同一个端口上阅读。如果我做对了,socat 将两个端口“连接”为“输入”和“输出”。因此,如果我写入 ./ptyp1,我必须阅读 ./ptyp2。之后,一切都很好。