我想做一个追踪器的监控程序
我使用rs485 usb转换器将epever tracer1210a连接到raspberry pi 3 b型。
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
client = ModbusClient(method = 'rtu', port = '/dev/ttyACM0', baudrate = 115200)
client.connect()
print( client)
result = client.read_input_registers(0x3100,6,unit=1)
print (result)
solarVoltage = float(result.registers[0] /100.0)
solarCurrent = float(result.registers[1] /100.0)
batteryVoltage = float(result.registers[4] /100.0)
chargeCurrent = float(result.registers[5] /100.0)
print("solar voltage : ",solarVoltage)
print("solar current : ",solarCurrent)
print("battery volatage : ",batteryVoltage)
print("charge current : ",chargeCurrent)
client.close()我会犯这样的错误:
ModbusSerialClient(rtu baud115200) Modbus错误:输入/输出Modbus错误:接收到的无效消息不完整消息,预期至少有2个字节(0接收)回溯(最近一次调用):文件"yutub.py",第9行,在solarVoltage = float(result.registers /100.0) AttributeError中:'ModbusIOException‘对象没有属性’寄存器‘
请帮我解决这个问题
发布于 2019-08-05 03:51:34
我也面临过同样的问题。
请按照以下步骤解决此问题:
执行make时可能会遇到问题。在这种情况下,请执行sudo apt-get install linux-headers。
lsusbls /dev/tty*
要删除CDC-ACM驱动程序并安装该驱动程序:
sudo rmmod cdc-acm
sudo modprobe -r usbserial
sudo modprobe usbserial
sudo insmod ./xr_usb_serial_common.ko之后,当您执行ls /dev/tty*时,您将看到/dev/ttyXRUSB0 0。这意味着已经安装了驱动程序,并且您的状态很好。
将代码中的端口更改为“/dev/ttyXRUSB0 0”。
重新启动PI之后,您可能不会看到ttyXRUSB0,而是会看到ttyACM0。在这种情况下,执行sudo echo blacklist cdc-acm > /etc/modprobe.d/blacklist-cdc-acm.conf。如果PI不允许执行,那么在路径中创建文件并写入blacklist cdc-acm。
重新启动并验证ttyACM0是否仍显示在ls /dev/tty*中。
https://stackoverflow.com/questions/57313343
复制相似问题