|
@@ -3,25 +3,47 @@ import colorama
|
|
|
from colorama import Fore
|
|
|
import time
|
|
|
import os
|
|
|
+import struct
|
|
|
+
|
|
|
+reg_table = {'hw_base': 0x0200}
|
|
|
|
|
|
class SBS(Modbus):
|
|
|
def __init__(self, tty: str, brate: int, address: int):
|
|
|
super().__init__(tty, brate, address)
|
|
|
|
|
|
+ @staticmethod
|
|
|
+ def swap(data: bytes) -> bytes:
|
|
|
+ return bytes([data[2], data[3], data[1], data[2]])
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def swap_registers(data: bytes, *args) -> bytes:
|
|
|
+ for i in args:
|
|
|
+ data[i], data[i + 2] = data[i + 2], data[i]
|
|
|
+ data[i + 1], data[i + 3] = data[i + 3], data[i + 1]
|
|
|
+ return data
|
|
|
+
|
|
|
def read_pack(self, addr: int, cnt: int):
|
|
|
return self.read_holding_registers(addr, cnt)
|
|
|
-
|
|
|
+
|
|
|
+ def read_hv_params(self):
|
|
|
+ raw_data = self.read_holding_registers_raw(reg_table['hw_base'], 15)
|
|
|
+ self.swap_registers(raw_data, 2, 8, 12, 16, 20, 24)
|
|
|
+ return struct.unpack('>HfHfffffH', raw_data)
|
|
|
|
|
|
|
|
|
def main():
|
|
|
colorama.init(autoreset=True)
|
|
|
- dev = SBS('COM3', 115200, 34)
|
|
|
+ dev = SBS('COM9', 115200, 34)
|
|
|
dev.MB_DEBUG = False
|
|
|
|
|
|
while True:
|
|
|
- data = dev.read_pack(0x300, 30)
|
|
|
- print("Output :", Fore.GREEN + ' '.join(str(el) for el in data))
|
|
|
- time.sleep(0.25)
|
|
|
+ # data = dev.read_pack(0x300, 30)
|
|
|
+ # print("Output :", Fore.GREEN + ' '.join(str(el) for el in data))
|
|
|
+
|
|
|
+ print(dev.read_hv_params())
|
|
|
+
|
|
|
+ time.sleep(1)
|
|
|
+
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
- main()
|
|
|
+ main()
|