问题标签 [pigpio]
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 - 基于波特率 PiGPIO 从 GPIO 引脚读取 N 位
就像我在标题中描述的那样,我正在尝试读取出现在 GPIO 引脚上的下一个 N 位。就上下文而言,我正在设置芯片选择 (CS) 启用,并且在两个时钟周期后,我期望一个 10 位序列。在这一刻,我并不十分担心确保我拥有正好 10 位,尽管我宁愿确保我至少得到我需要的 10 位,即使我也得到了一些边缘的东西。我一直在使用 PiGPIO 并尝试使用 bb_serial_read 功能,但是由于文档不是太具体而且我对位敲击没有太多经验,因此我一直无法完全理解该工具的功能。
我是这样接近它的:
之后我会尝试将返回的值转换为二进制字符串。我遇到的主要障碍围绕着 bb_serial_read_open 的参数,因为 bb_serial_read 返回的字节数组往往看起来像 '\x00\x00\x01\x00' 或类似的东西,值往往会有所不同。如果我想确保获得一定数量的连续位,将其转换为原始二进制文件的适当方法是什么?此外,有没有办法刷新位爆炸协议存储其值的循环缓冲区?我很确定这是一个简单的问题,但是我已经在文档和示例代码之间来回切换了一段时间,没有运气。
electron - 不能在 Electron 中使用 pigpio.js
我试图使用 PIGPIO 来控制树莓派上蜂鸣器的 PWM 并使用 Electron 安装后,出现错误。我认为这是因为它是本机节点模块所以电子无法正确编译它,然后我按照官方电子指令重建它,但它没有工作,如果它有帮助,这是我导入库的方法
python - 我需要更改哪些环境变量以允许 pigpio 远程连接到树莓派?
我正在使用 gpiozero 和 pigpio 库在 python 中创建远程 gpio 控制应用程序。pigpio 文档将其宣传为一项功能,因此我知道这是可能的。这是此示例代码的问题:
是的,我已经确保在 pi 上启动了 pigpio 守护进程。这是错误代码。我不确定是否需要全部提供它们,但我不知道解决这个问题的关键是什么。:
我已经读到这与某处的一些环境变量有关,但我没有找到关于如何更改它们并使其工作的好资源。如何更改正确的系统变量并让我的树莓派主机名可用于网络上的其他设备?
python - 代码在睡眠时退出而没有错误或异常
我在 Raspberry Pi 4 中运行 Python 代码,它从某些引脚读取信号并做出相应响应。
在这个函数上,在行间多次打印之后,我将问题缩小到(显然)一个 sleep() 调用。
添加了 try/except 块来检查异常,但它不会触发“except”块。有一次,我还在睡觉前添加了一个打印件,这也显示出来了。
终端,除了睡眠之前的任何输出,在退出时什么都不显示,就像任何代码在完成执行时所做的一样。
作为背景,我对某些 Raspberry pin 边缘(使用 pigpio 模块)和在后台运行的某些 Timer 对象(来自线程模块)进行了一些回调。代码中没有退出调用,因此代码没有理由不继续到下一行。此外,与此非常相似的函数在代码之前的某个时间点运行得很好。
我不知道我还能如何调试代码。非常感谢任何帮助,我很乐意提供任何其他信息。
编辑(当我回答评论时):
睡眠在顶部正确导入,在此函数运行之前有睡眠调用正确执行。
因为它是在评论中要求的,所以这是 setLevelCallbacks 的代码:
回调在设置之前被调用一次,因为我需要在任何边缘之前的初始值。
编辑2:
- 我尝试了评论中推荐的一些东西:在 sleep 之前注释掉 self.setLevelCallbacks() 行,仍然退出
- 每次打印后使用 sys.stdout.flush()
- 用 htop 检查并没有发现异常行为
- 在睡眠前打印一行并显示。
python - 使用 PIGPIO bit bang serial 读取数据
我正在使用 Python PIGPIO 库在 Raspberry Pi 3B+ 上创建一个有点爆炸的串行端口。要读取数据,我使用函数: (count, data) = pi.bb_serial_read(RX_PIN)
有什么方法可以知道接收缓冲区中是否有数据等待读取?我目前解决该问题的方法如下:
有没有更好的办法?提前致谢,祝您有美好的一天