我需要一次从树莓派发送4个整数到Arduino。目前,Arduino不请求或发送数据,但以后可能需要。我的代码可以工作,但它在大约5个数组被发送后崩溃。在
树莓派代码(Python)
import smbus
import time
bus = smbus.SMBus(1)
address = 0x04
def writeNumber(a,b,c,d):
bus.write_i2c_block_data(address, a, [b, c, d])
return -1
while True:
try:
writeNumber(12,42,-5,0)
time.sleep(1) #delay one second
except keyboardInterrupt:
quit()
Arduino代码
^{pr2}$它将工作在大约5个数组上,即它将发送a,b,c,d
,然后在一秒钟后再次发送,然后在一秒钟后再次发送,持续5次,然后崩溃,LXTerminal产生错误:
Traceback (most recent call last):
File "PS3_ctrl_v2.py", line 44, in <module>
writeNumber(12,42,-5,0)
File "PS3_ctrl_v2.py", line 11, in writeNumber
bus.write_i2c_block_data(address, a, [b, c, d])
IOError: [Errno 5] Input/output error
我做错了什么?如何使代码更健壮?在
把地址改成大一点的。第一个地址是保留的(参见this article)。我使用了地址为
0x20
的代码,它工作得很好。在相关问题 更多 >
编程相关推荐