我正在尝试使用pyFirmata,但我无法让它工作。即使是最基本的库也不能工作。我想图书馆的代码有问题吧。
from pyfirmata import Arduino,util
import time
port = 'COM5'
board = Arduino(port)我知道这个错误:
Traceback (most recent call last):
File "c:\Users\Public\pythonpublic\arduino.py", line 5, in <module>
board = Arduino(port)
^^^^^^^^^^^^^
File "C:\Users\marce\AppData\Roaming\Python\Python311\site-packages\pyfirmata\__init__.py", line 19, in __init__
super(Arduino, self).__init__(*args, **kwargs)
File "C:\Users\marce\AppData\Roaming\Python\Python311\site-packages\pyfirmata\pyfirmata.py", line 101, in __init__
self.setup_layout(layout)
File "C:\Users\marce\AppData\Roaming\Python\Python311\site-packages\pyfirmata\pyfirmata.py", line 157, in setup_layout
self._set_default_handlers()
File "C:\Users\marce\AppData\Roaming\Python\Python311\site-packages\pyfirmata\pyfirmata.py", line 161, in _set_default_handlers
self.add_cmd_handler(ANALOG_MESSAGE, self._handle_analog_message)
File "C:\Users\marce\AppData\Roaming\Python\Python311\site-packages\pyfirmata\pyfirmata.py", line 185, in add_cmd_handler
len_args = len(inspect.getargspec(func)[0])
^^^^^^^^^^^^^^^^^^
AttributeError: module 'inspect' has no attribute 'getargspec'. Did you mean: 'getargs'?发布于 2022-11-26 21:22:43
发布于 2022-11-26 22:38:36
正如在另一个答案中已经指出的,pyFirmata模块目前被记录为在Python2.7、3.6和3.7上运行。这并不意味着它不会在其他版本上工作,但是很可能它还没有被作者在其他版本上测试过,也没有得到官方的支持。因此,它可能在较新的Python版本上工作,也可能不起作用。
您的错误消息是由缺少函数inspect.getargspec()引起的。这个函数是的一部分,但是自从Python3.0(2008年发布)起就被废弃了。不幸的是,作者并没有意识到这一点,或者根本没有费心去修复它,所以现在该代码不再适用于最新版本的Python。
在Python文档中,您可以看到该函数在3.10版中仍然可用,但在3.11版中却不可用。
要解决这个问题,您有以下几种选择:
在3.7到3.10之间降级到Python版本肯定是最简单的选择,给作者留下一些反馈将给你一个机会,将来它会被修复,以防你计划更长时间使用你的脚本。
https://stackoverflow.com/questions/74585622
复制相似问题