您如何计算传入字节的校验和以查看它是否是有效数据包?目前我正在读取字节并对它们进行解码并接收信息,但在我这样做之前我希望能够根据校验和验证它以确保我没有收到任何无效/损坏的数据包。
这是我目前拥有的
def batteryConnect(port, baudrate):
# establishing a serial connection
ser = serial.Serial(port=port, baudrate= baudrate, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE,timeout=3)
return ser
class VictronBmv700:
def __init__(self,port,baudrate):
self.port = port
self.baudrate = baudrate
self.parameterDict = dict.fromkeys(["PID","V","I","P","CE","SOC","TTG","Alarm","Relay","AR","BMV","FW","H1","H2","H3",
"H4","H5","H6","H7","H8","H9","H10","H11","H12","H17","H18"])
def getBMVInfo(self):
bmvdata = batteryConnect(self.port,self.baudrate)
#getting the data
bmvdata.flushInput()
#getting the message then splitting the key, value pairs
while True:
print(bmvdata.readline())
message = bmvdata.readline().decode(encoding='utf-8',errors='ignore')
#splitting on tabs
message_parts = message.split('\t')
if len(message_parts) > 1:
key = message_parts[0]
value = message_parts[1].rstrip() #stripping \r\n after the value
#updating deictionary based on keys and their values.
self.parameterDict[key] = value
if __name__ == "__main__":
print("BATTERY MONITOR")
bmv700 = VictronBmv700("COM17", 19200)
bmv700.getBMVInfo()
千万里不及你
慕桂英546537
相关分类