rabin 4 years ago
parent
commit
d5aea2543f
2 changed files with 15 additions and 5 deletions
  1. 3 2
      service/modbus/handle.py
  2. 12 3
      service/modbus/rtu.py

+ 3 - 2
service/modbus/handle.py

@@ -91,9 +91,10 @@ class Handle(object):
 	def getValue(self, code, master, info):
 
 		temp = master.execute(int(code['slave_id']), int(code['register_type']), int(code['register_address']), int(code['register_length']))
-		value = struct.unpack('>f', struct.pack('>HH', temp[0], temp[1]))
-		value = str(round(temp[0], 2))
+		#value = struct.unpack('>f', struct.pack('>HH', temp[0], temp[1]))
+		#value = str(round(temp[0], 2))
 		#value = str(temp)
+		value = str(temp[0])
 		if value and value != '0':
 			if 'exp' in code and code['exp']:
 				value = Demeter.exp(code['exp'], value)

+ 12 - 3
service/modbus/rtu.py

@@ -30,9 +30,18 @@ class Rtu(object):
 
 	def client(self, id):
 		server = Demeter.service('common').one('setting_server', id=id)
-		master = modbus_tcp.RtuMaster(serial.Serial(port=server['server_port'], baudrate=9600, bytesize=8, parity='N', stopbits=1, xonxoff=0))
+		port,baudrate = self.port(server['server_port'])
+		master = modbus_rtu.RtuMaster(serial.Serial(port, baudrate=baudrate, bytesize=8, parity='N', stopbits=1, xonxoff=0))
 		Demeter.service('handle', 'modbus').set(master, server)
 
 	def send(self, server, type_info, info, value):
-		master = modbus_tcp.RtuMaster(host=server['server_host'], port=int(server['server_port']))
-		Demeter.service('handle', 'modbus').send(master, server, type_info, info, value)
+		master = modbus_rtu.RtuMaster(serial.Serial(port, baudrate=baudrate, bytesize=8, parity='N', stopbits=1, xonxoff=0))
+		Demeter.service('handle', 'modbus').send(master, server, type_info, info, value)
+
+	def port(self, port):
+		baudrate = 4800
+		if ':' in port:
+			data = port.split(':')
+			port = data[0]
+			baudrate = int(data[1])
+		return (port, baudrate)