问题标签 [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 回答
1144 浏览

python - python 3.2:cx_freeze 不导入所有 pyserial

我在构建我的 python 3.2 脚本的 exe 版本时遇到问题。该脚本需要 pyserial 并使用 cx_freeze 构建。但是,当我运行 exe 时,我得到:

稍微窥探一下,Pyserial 站点包有一个“win32.py”模块(除了 serialwin32.py);但是,在 cx_freeze 生成的压缩库中,缺少 win32.py。简单地放置一个 pyc 版本并不能解决问题。使用 cx_freeze "includes = [ ]" 也不起作用。

有任何想法吗?我的问题是否有说服力(我对 python 还很陌生)?

0 投票
1 回答
1894 浏览

python - 在python中编写和监听同一个串口

有没有办法做到这一点而不会出现“COM PORT IN USE”错误?我有一项服务,可以在 com 端口上侦听 gps GPRMC 语句。但是我的测试计算机上没有这个设备。所以我想写一个python脚本来模拟端口上的GPRMC语句,而我的其他python脚本监听同一个端口并解析。

0 投票
1 回答
924 浏览

python - Python Web 应用程序 - 同步串行访问

我是一名 java 中级开发人员、python 新手和 web 服务超级新手。作为学习经验,我正在尝试在 python 中实现一个 RESTful Web 服务,以通过 RS232-over-USB 继电器板远程控制简单的开/关灯。我已经弄清楚了 web.py 和 pyserial 库的基础知识。我正在使用的板将一个 ascii 字节作为输入来打开/关闭继电器,并为每个发送的输入提供一个 ascii 字节作为反馈。单个请求以正确的方式回答,但是当 web.py 委托类发出多个请求时,反馈有时会混淆。我猜这是一个线程同步问题。将串行端口的写入/读取访问与 pyserial 同步的最佳方法是什么,以便正确地将反馈发送到适当的网络。py出生的线程?可以认为以下解决方案是正确的吗?

0 投票
4 回答
43096 浏览

python - PySerial:如何在串行线上发送 Ctrl-C 命令

我正在自动化嵌入式板的配置过程。要进入设置屏幕,我需要发送“Ctrl-C”命令。

不是要中断我在本地运行的进程,KeyboardInterrupt不起作用。我需要发送一个值,引导加载程序将其解释为 Ctrl-C。

我需要发送的价值是多少?

谢谢

0 投票
2 回答
1628 浏览

python - 在 OSX lion/launchd 中,python/serial 坏了

我有一个launchd适用于 OSX 10.6 但在 10.7 上失败的条目。它使用 python,并在尝试导入时产生错误serial。我不太明白这个,因为我已经重新下载pyserial-2.5并使用 sudo 重新安装了它。(无奈之下,我为我的机器上的多种 python 重新安装了它。)作为测试,我可以import serial毫无困难地输入 python。也许有一个为交互式用户设置好的系统路径,但没有设置为启动?

谁能建议我如何诊断问题?

0 投票
3 回答
1205 浏览

python - 如何使 python 脚本中的语句表现得就像在交互式 shell 中执行的一样

我有一个连接到串行通信端口的仪器。我在 Windows XP 中使用 Python 3.2,外加 pySerial 模块。当我执行一个由一系列语句组成的脚本时遇到问题,这些语句打开通信端口、配置它、写入字符串并从中接收字符串。这些字符串要么是与仪器相关的命令(控制),要么是来自仪器的响应(响应)。

当这些语句在 python 解释器中以交互方式执行时(在 >>> 处),我得到了我所期望的结果,结果是好的和正确的。但是,当我在解释器或 shell 中执行脚本时,我没有得到我想要的。脚本中的语句与我在交互式解释器中使用的相同。

为什么我会出现奇怪的行为,如何更改脚本以使其表现得像交互式解释器?

问题在于上面带有####### 的行。在交互模式下,#1 有大约 1 秒的延迟,#2 有 9 秒的延迟。我在那里得到正确的回应。但是,如果我执行上面的脚本,则完全没有延迟,并且我得到不正确的结果(垃圾)。我在通讯端口设置中将读取超时设置为 0,如

因此,如果它等待行尾或文件结束,则该comport应该处于阻塞模式。

更新(2011 年 8 月 19 日)

我对几天前发布的原始帖子进行了更新。我想我知道问题是什么,并想知道是否有人有解决方案:

在每条语句后加上“print”和“time.sleep(delay)”后,我发现当脚本运行时,它似乎围绕着pyserial语句,例如“comport.write(..)”或“comport.readlines” (...)" 在执行 pyserial 命令时(表现为等待和忙于做某事,你知道串口很慢)。例如,当我在 python 交互式 shell 中执行所有语句时,如果没有返回前一个语句,我将无法键入和运行新语句。好吧,如果 comport.readlines() 没有返回,我就无法键入并运行下一个 comport.write(...) statemtn。但是,在正在运行的脚本中,如果 comport.readlines() 正忙于读取,则下一条语句正在运行,如果下一条语句恰好是 comport.write() 将中止读取。

有没有办法强制 python 脚本表现得像完全按顺序运行?

0 投票
4 回答
87474 浏览

pyserial - pySerial 缓冲区不会刷新

我在使用 pySerial 的 Windows 和 Linux 下都遇到了串行 IO 问题。使用此代码,设备永远不会收到命令并且读取超时:

此代码第一次超时,但后续迭代成功:

谁能告诉发生了什么?我尝试添加对 sync() 的调用,但它不会将串行对象作为它的参数。

谢谢,罗伯特

0 投票
1 回答
4886 浏览

python - 使用 pyserial 控制 Arduino Uno 板上的特定引脚

我有一个 python 代码,它发送一个模式,其中一个灯必须闪烁。(例如,101010。每次运行代码时模式可能会有所不同)。当它无限执行时,我想要一个中断(再次由 python 代码发送)来保存灯的当前状态(比如它正在运行序列中的 1 个)并执行特定任务,例如关闭灯 10 秒和然后恢复序列。一种方法是通过使中断引脚为高来中断程序。问题是这种高/低的制作是否可以由 pyserial 控制。所以一个简单的伪代码是:

PYTHON部分代码:

ARDUINO 部分代码:

为了更好地理解:

我建立了一些小代码来显示我的疑虑:

ARDUINO 的代码是:

==================================================== =================================

Python 前端的代码是:

==================================================== ==============================

现在我的问题是:

1)有没有办法能够根据引脚(在本例中为 INT0 引脚)的条件激活“停电 ISR”,而无需使用引脚上的物理开关。因此,引脚状态必须由软件操作。

2)是否可以执行停电功能评论中提到的操作?

3)在python代码中是否可以只发送一次数据(即模式,快速)并使arduino以无限的方式执行模式,而无需再次通过serial.write命令发送数据。因此避免while(1)ser.isOpen().

0 投票
2 回答
869 浏览

python - pySerial 在运行时会中断什么引脚?

由于pySerial是一种串行通信技术,一旦有一些数据要提供给 Arduino 板,它会中断 Arduino 板上的引脚吗?

运行ISR会中断哪个引脚?还是使用轮询方法?我理解这个概念对吗?

0 投票
2 回答
5817 浏览

python - 使用 pySerial 进行多处理的好例子

有什么地方可以让我查看在 Python 的多处理环境中执行pySerial操作的示例?

===更新上述问题===

Arduino代码:

Python 前端的类似代码:

作为基本参考,我使用了 Painless Concurrency: The multiprocessing Module , (PDF, 3.0 MB)。

在执行上述操作时,我面临一些问题:

  1. 进程 f1 根据需要执行任务。即点亮LED 10秒,熄灭LED 10秒,最后点亮LED 10秒。看起来,虽然程序成功结束,但进程 f2 似乎根本没有执行(即没有每两秒关闭一次 LED)。这里会发生什么?

  2. 如果我在进程中使用 print 打印某些内容,它不会出现在屏幕上。我很想知道提到这些示例的人如何能够显示流程打印的输出。