尝试使用bus.write_byte()时对“远程I / O错误”有任何解决方法吗?

时间:2019-05-31 14:10:15

标签: python raspberry-pi i2c adc smbus

当前,我正在尝试从R +和CH-读取值,并在Raspberry Pi 3的MCP3427 16位2通道转换器上将模拟输入转换为数字。这是我每次收到的错误:< / p>

    File "Desktop/MCP3427.py", line 16, in <module>
       bus.write_byte(0x68, 0x10)
    IOError: [Errno 121] Remote I/O error

我从转换器所在的ControlEverything.com(https://store.ncd.io/product/mcp3427-16-bit-2-channel-analog-to-digital-converter-i2c-mini-module/)下载了示例代码,并使用python Desktop/MCP3427运行了该代码,还尝试了python3 Desktop/MCP3427。两者都返回上面列出的错误。我已经进行了各种各样的在线搜索,但是尽管发现了类似的错误,却没有发现任何有用的东西。

我不认为这是硬件问题,因为在我最初设置本教程(https://www.youtube.com/watch?v=UZge1NSIak4)之后,上周我在完成本教程的工作。在确定它可以正常工作之后,我对Raspberry Pi(添加了piplate)进行了硬件更改,现在我重新注册了MCP3427,就无法通过此错误。

这是MCP3427.py文件,它是ControlEverything [dot] com的示例代码:

# MCP3427
# This code is designed to work with the MCP3427_I2CADC I2C Mini Module available from ControlEverything.com.

import smbus
import time

# Get I2C bus
bus = smbus.SMBus(1)

# MCP3427 address, 0x68(104)
# Send configuration command
#       0x10(16)    Continuous conversion mode,Channel-1, 12-bit Resolution
bus.write_byte(0x68, 0x10)

# MCP3427 address, 0x68(104)
# Read data back from 0x00(0), 2 bytes
# raw_adc MSB, raw_adc LSB
data = bus.read_i2c_block_data(0x68, 0x00, 2)

# Convert the data to 12-bits
raw_adc = (data[0] & 0x0F) * 256 + data[1]
if raw_adc > 2047 :
    raw_adc -= 4095

# Output data to screen
print "Digital Value of Analog Input : %d" %raw_adc
time.sleep(10)

上周代码正确执行后,我的结果是预期的“模拟输入的数字值:0”。现在,我得到了顽固的错误,我不知道为什么。我尝试重新安装smbus,删除pi上添加的硬件,然后重新安装python。

非常感谢您的帮助。

0 个答案:

没有答案