这个周末我要做一个小项目.有一个太阳能电池逆变器(丹佛斯ULX 3600i),我将尝试连接到我的linux机器,看看我是否可以从中获取数据,为统计数据创造了多少能量.它上面有一个RJ45连接输入,但带有RS485.
我通过电脑中的usb端口将电缆连接到PC和逆变器之间的RS485转换器.
然后我编写一个小的python代码来发出请求.但是,我无法弄清楚如何正确发送数据.
import serial
import struct
ser = serial.Serial(
port='/dev/ttyUSB0',
baudrate=19200,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
)
print(ser.isOpen())
thestring = "7E FF 03 00 01 00 02 0A 01 C8 04 D0 01 02 80 00 00 00 00 8E E7 7E"
data = struct.pack(hex(thestring))
#data = struct.pack(hex, 0x7E, 0xFF, 0x03, 0x00, 0x01, 0x00, 0x02, 0x0A, 0x01, 0xC8, 0x04, 0xD0, 0x01, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x8E, 0xE7, 0x7E)
ser.write(data)
s = ser.read(1)
print(s)
ser.close()
Run Code Online (Sandbox Code Playgroud)
逆变器使用Danfoss ComLynx协议(第26页是我要发送的数据): …