我已经将Raspberry Pi和一块单独的板连接到一个自制的I²C电平转换器,并安装了Python模块SMBus,Raspberry Pi可以与另一块板上的PiGlow进行通信,但每隔一段时间我就得到一个输入尝试命令时输出错误信息:
bus.write_i2c_block_data(地址,信号,数据)
它说:
IOError:[Errno 5]输入/输出错误
我通过这篇文章找到了一个解决方法:Input/output error using Python module SMBus, a Raspberry Pi and an Arduino(这或多或少是对这个问题的跟进)
我目前正在尝试抓住那些给我错误的电话:
try:
bus.write_i2c_block_data(address, signal, data)
except IOError:
subprocess.call(['i2cdetect', '-y', '1'])
可以很好地解决i / o错误。我的问题是,由于所有的try-catch,代码似乎运行速度明显变慢。我想知道是否还有其他已知的工作,如果有更有效的方法来做到这一点。任何帮助将不胜感激!
由于
答案 0 :(得分:0)
您是否在Serial.print
的接收中断处理程序中呼叫separate board
或类似内容?如果是,可能是问题所在。例如,在Arduino
上,应避免在中断内调用Serial.xxx
函数。