雨辰0_0 2024-07-02 19:38 采纳率: 25%
浏览 11

基于RDK X3开发板的GPIO.add_event_detect()中断回调函数报错:参数无效

基于RDK X3开发板的GPIO.add_event_detect()中断回调函数报错:参数无效
源码:

import Hobot.GPIO as GPIO
import time

def callback_one(channel):
    print("First Callback")

GPIO.setmode(GPIO.BCM)
GPIO.remove_event_detect(24)
GPIO.setup(24, GPIO.IN)

GPIO.add_event_detect(24, GPIO.RISING, callback=callback_one)

while True:
    print(1)

if __name__ == '__main__':
    main()

会报这个错误:


/usr/local/lib/python3.8/dist-packages/Hobot.GPIO-0.0.2-py3.8.egg/Hobot/GPIO/gpio.py:113: RuntimeWarning: This channel(24) has been exported before this operation 
OSError: [Errno 22] Invalid argument

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "test.py", line 11, in <module>
    GPIO.add_event_detect(24, GPIO.RISING, callback=callback_one)
  File "/usr/local/lib/python3.8/dist-packages/Hobot.GPIO-0.0.2-py3.8.egg/Hobot/GPIO/gpio.py", line 315, in add_event_detect
  File "/usr/local/lib/python3.8/dist-packages/Hobot.GPIO-0.0.2-py3.8.egg/Hobot/GPIO/gpio_event.py", line 54, in _add_event_detect
  File "/usr/local/lib/python3.8/dist-packages/Hobot.GPIO-0.0.2-py3.8.egg/Hobot/GPIO/gpio_event.py", line 124, in _set_edge
OSError: [Errno 22] Invalid argument

------------------
(program exited with code: 1)
Press return to continue

求解,为什么呀

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-07-02 19:38
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    根据您提供的源码和错误信息,您在使用基于RDK X3开发板的Hobot.GPIO库时遇到了GPIO.add_event_detect()函数报错“参数无效”的问题。这个问题可能是由以下几个原因造成的:

    1. 通道号问题:在RDK X3开发板上,不是所有的GPIO通道都是可用的,您需要确保使用的通道号24是有效的。根据搜索结果,RDK X3开发板的硬件设计文档或用户手册中应该列出了可用的GPIO通道 [^2^]。

    2. 库版本问题:您使用的Hobot.GPIO库版本是0.0.2,可能存在一些已知的bug或者兼容性问题。建议您检查是否有更新版本的库可用,或者在官方文档中查找是否有关于该错误的说明 [^2^]。

    3. 函数使用问题:在您的代码中,GPIO.remove_event_detect(24)被用来移除之前设置的事件检测,但是这个函数在Hobot.GPIO库中可能不被支持或存在问题。您可以尝试注释掉这行代码,看是否还会出现同样的错误。

    4. 回调函数问题:您的回调函数callback_one定义正确,但是在某些情况下,如果回调函数内部执行时间过长或者有阻塞操作,可能会影响事件检测的注册。确保回调函数尽可能简洁,并且没有长时间的阻塞操作。

    5. 系统配置问题:确保您的开发板系统已经正确配置,包括网络设置和必要的软件包安装。根据搜索结果,您可以使用srpi-config工具进行系统配置,包括Wi-Fi连接,SSH、VNC的开启等 [^2^]。

    6. 权限问题:确保您有足够的权限来访问和操作GPIO。在某些情况下,可能需要以root用户身份运行脚本。

    7. 代码结构问题:您的代码中存在逻辑错误,main()函数没有定义,并且在while True:循环后面直接跟了一个if __name__ == '__main__':块。这会导致代码结构混乱,应该将main()函数的定义和if __name__ == '__main__':块放到循环之前。

    如果您在解决这个问题时需要进一步的帮助,可以提供更多的信息,例如开发板的具体型号、操作系统版本以及Hobot.GPIO库的安装方式等。同时,您可以参考RDK X3的官方文档和社区论坛,以获取更多的技术支持和解决方案 [^2^][^4^]。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月2日

悬赏问题

  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画