问题标签 [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 投票
3 回答
25456 浏览

python - 带有pyserial(python串口)的二进制数据

pyserial 中的 serial.write() 方法似乎只发送字符串数据。我有像 [0xc0,0x04,0x00] 这样的数组,并且希望能够通过串口发送/接收它们?原始 I/O 是否有任何单独的方法?

我想我可能需要将数组更改为 ['\xc0','\x04','\x00'],但空字符可能会造成问题。

0 投票
4 回答
532440 浏览

python - 使用 pySerial 包的完整示例

有人可以给我看一个使用pyserial的完整 python 示例代码吗,我有这个包,我想知道如何发送 AT 命令并读回它们!

0 投票
1 回答
3412 浏览

python - pyqt4 和 pyserial

我想做一个应用程序,不断观察串口并根据从端口接收到的输入更改用户界面。我已经设法在 Linux 下使用 pyserial 从端口读取行,但我不确定如何以常规方式执行此操作:创建一个单独的线程并检查计时器事件的输入?我如何确保我不会错过任何东西?(实现某种握手/协议似乎有点矫枉过正......)最重要的是:我如何使用 qt4 的设施来做到这一点?

编辑:这就是我现在正在做的事情(我想在应用程序的其余部分运行而不等待的情况下定期执行此操作)

0 投票
1 回答
2054 浏览

python - Python PySerial readline 函数错误使用

我正在使用脚本导入 PySerial 从 COM4 读取

我想拦截的消息以 # 结尾

所以我尝试使用

公共汽车是我的连接。

我希望读起来像:

  1. *#*3##
  2. *#*3##
  3. *#*3##

不幸的是我也发现了

  1. *#*1##*1*1*99##

我希望读到 2 行

  1. *#*1##
  2. *1*1*99##

显然 readline 不起作用,但为什么?

0 投票
2 回答
6811 浏览

python - python监控串口

下午好,

我会询问一些有关通过串行端口监视事件的最佳方法的建议。

我正在使用 PySerial 通过串行端口向某些设备写入“命令​​”,并且

我想收到有关此设备状态的反馈。

这是最好的方法:1)填充管道并读入,2)委托为只读的新线程,还是什么?

我还可以要求一个简单的代码来实现该解决方案吗?

0 投票
4 回答
13917 浏览

python - 使用 pySerial 从 Python 获取输入/输出错误

我有一个 Python 脚本,它通过pySerial将数据包写入 Arduino 板。有时在将代码写入开发板时,pySerial 会引发输入/输出错误,错误码为 5。

一些研究表明,这表明在写入表示与 Arduino 板连接的文件时出现错误。

发送的代码只发送单字节数据包:

此代码打印的错误是:

操作系统错误输入/输出错误 Errno 5

发送时我的代码有问题吗?我是否需要检查串行连接是否已准备好发送某些内容,或者发送后是否应该有延迟?还是硬件或与硬件的连接有问题?

编辑:我从 pyserial 查看了 Linux 实现,该实现只是将错误传递给我的代码。所以从那里没有新的真正见解。有没有一个好方法来测试程序中发生了什么?

0 投票
10 回答
100863 浏览

python - pyserial - 如何读取从串行设备发送的最后一行

我有一个 Arduino 连接到我的计算机上运行一个循环,每 100 毫秒通过串行端口将一个值发送回计算机。

我想制作一个 Python 脚本,每隔几秒钟从串口读取一次,所以我希望它只看到从 Arduino 发送的最后一件事。

你如何在 Pyserial 中做到这一点?

这是我尝试过的代码不起作用。它按顺序读取行。

0 投票
2 回答
5055 浏览

python - Python/PySerial 和 CPU 使用率

我创建了一个脚本来监视串行端口的输出,该串行端口每半小时接收 3-4 行数据 - 脚本运行良好并抓取从端口出来的所有内容,这在一天结束时才是最重要的.. .

然而,让我感到困扰的是,对于只监视单个串行端口的程序来说,cpu 使用率似乎相当高,当这个脚本运行时,1 个内核将始终处于 100% 的使用率。

我基本上在这个问题中运行代码的修改版本:pyserial - How to Read Last Line Sent from Serial Device

我尝试过定期轮询 inWaiting() 函数,并在 inWaiting() 为 0 时让它休眠 - 我尝试了从 1 秒到 0.001 秒的间隔(基本上,在不提高 CPU 使用率的情况下,我可以尽可能频繁地使用) - 这将成功抓取第一行,但似乎错过了其余数据。

调整串口的超时时间似乎对 cpu 的使用没有任何影响,将监听功能放到它自己的线程中也没有(不是我真的期望有区别,但值得一试)。

  • python/pyserial 应该使用这么多 cpu 吗?(这似乎有点矫枉过正)
  • 我是否在这个任务上浪费了时间/我是否应该硬着头皮安排脚本在我知道不会有数据到来的时间段内休眠?
0 投票
2 回答
3543 浏览

python - 使用 PySerial/Matplotlib 的微处理器到 RS-232 实时绘图?

我是 Python 世界的新手,我的编程技能相当差,但我正试图找到一种方法来使用 Python 来显示 EEG 电路的输出(使用 OpenEEG 电路http://openeeg.sourceforge.net )

模拟输出通过 ADC(在 ATmega8 微控制器中)放大和处理,并由 MAX232 转换为 RS232。

RS232 信号如下:

字节 1:同步值 0xa5
字节 2:同步值 0x5a
字节 3:版本
字节 4:帧号
字节 5:通道 1 低字节
字节 6:通道 1 高字节
字节 7:通道 2 低字节
字节 8:通道 2 高字节
。 ..
字节 9-16 用于额外的电极通道,但不需要数据,因为只使用前两个
...
字节 17:按钮状态 (b1-b4)

我有一些基本的 PySerial 功能,但我需要想办法通过缓冲输入数据并将有用的值绘制为 2 个实时 xy 波形(时间与电压)

问题更新:

我正在使用 PySerial 明显的几行打印代码,但它是乱码。我正在尝试将数据分解为可以绘制的值的格式。17 字节的数据目前以 256 帧/秒的速度输入。(两个)通道由每个 10 位数据组成(用 6 个零组成其余 2 个字节)。它们是无符号的,可能的值为 0 到 1023。这些对应于应该绘制为正负的值,因此 512 的二进制值对应于零(微)伏的图......

如何将传入的流读取为 8 位二进制(去除我不需要的数据),然后组合我想要的每个通道的两个相关字节(如有必要,可能删除多余的 6 个零)?

0 投票
3 回答
9282 浏览

python - 我可以将 xmodem 协议与 PySerial 一起使用吗?

我通过 PySerial 与我的串行设备建立了有效连接,但我也想通过 xmodem 协议传输文件作为我程序的一部分。

哪种方式是最平台中立的?最坏的情况,我可以在 Python 中使用close()我的对象并使用来调用,但这似乎不优雅。serial.Serialsubprocess/usr/bin/sb

我目前使用的是 Ubuntu 9.10,并且正在使用 USB-TTY 适配器。

有任何想法吗?