1234567891011121314151617181920212223242526272829303132333435363738 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- """
- Modbus TestKit: Implementation of Modbus protocol in python
- (C)2009 - Luc Jean - luc.jean@gmail.com
- (C)2009 - Apidev - http://www.apidev.fr
- This is distributed under GNU LGPL license, see license.txt
- """
- from modbus_tk.hooks import call_hooks
- from modbus_tk.modbus_rtu import RtuQuery
- from modbus_tk.modbus_tcp import TcpMaster
- from modbus_tk.utils import to_data
- class RtuOverTcpMaster(TcpMaster):
- """Subclass of TcpMaster. Implements the Modbus RTU over TCP MAC layer"""
- def _recv(self, expected_length=-1):
- """Receive the response from the slave"""
- response = to_data('')
- length = 255
- while len(response) < length:
- rcv_byte = self._sock.recv(1)
- if rcv_byte:
- response += rcv_byte
- if expected_length >= 0 and len(response) >= expected_length:
- break
- retval = call_hooks("modbus_rtu_over_tcp.RtuOverTcpMaster.after_recv", (self, response))
- if retval is not None:
- return retval
- return response
- def _make_query(self):
- """Returns an instance of a Query subclass implementing the modbus RTU protocol"""
- return RtuQuery()
|