134 lines
6.1 KiB
Python
134 lines
6.1 KiB
Python
|
class SerialInterface():
|
|||
|
""" This class provides an interface to a serial port. This class allows the user to send data over the serial port in a synchronous or asynchronous manner. This class is used for all ports capable of serial communication (e.g., Serial Ports, IR Serial Ports).
|
|||
|
|
|||
|
>Note:
|
|||
|
> In synchronous mode, the user will use SendAndWait() to wait for the response.
|
|||
|
> In asynchronous mode, the user will assign a handler function to ReceiveData to handle responses.
|
|||
|
> If an IR/Serial port is passed in and it has already been instantiated as an IRInterface, an exception will be raised.
|
|||
|
|
|||
|
Arguments:
|
|||
|
Host (extronlib.device) - handle to Extron device class that instantiated this interface class
|
|||
|
Port (string) - port name (e.g. 'COM1', 'IRS1')
|
|||
|
(optional) Baud (int) - baudrate
|
|||
|
(optional) Data (int) - number of data bits
|
|||
|
(optional) Parity (string) - 'None', 'Odd' or 'Even'
|
|||
|
(optional) Stop (int) - number of stop bits
|
|||
|
(optional) FlowControl (string) - 'HW', 'SW', or 'Off'
|
|||
|
(optional) CharDelay (float) - time between each character sent to the connected device
|
|||
|
(optional) Mode (string) - mode of the port, 'RS232', 'RS422' or 'RS485'
|
|||
|
|
|||
|
Parameters:
|
|||
|
Baud - Returns (int) - the baud rate
|
|||
|
CharDelay - Returns (float) - inter-character delay
|
|||
|
Data - Returns (int) - the number of data bits
|
|||
|
FlowControl - Returns (string) - flow control
|
|||
|
Host - Returns (extronlib.device) - the host device
|
|||
|
Mode - Returns (string) - the current Mode
|
|||
|
Parity - Returns (string) - parity
|
|||
|
Port - Returns (string) - the port name this interface is attached to
|
|||
|
Stop - Returns (int) - number of stop bits
|
|||
|
|
|||
|
Events:
|
|||
|
Offline - (Event) Triggers when port goes offline. The callback takes two arguments. The first one is the extronlib.interface instance triggering the event and the second one is a string ('Offline').
|
|||
|
Online - (Event) Triggers when port goes offline. The callback takes two arguments. The first one is the extronlib.interface instance triggering the event and the second one is a string ('Online').
|
|||
|
ReceiveData - (Event) Receive Data event handler used for asynchronous transactions. The callback takes two arguments. The first one is the SerialInterface instance triggering the event and the second one is a bytes string.
|
|||
|
"""
|
|||
|
Host = None
|
|||
|
Port = ''
|
|||
|
Baud = 0
|
|||
|
Data = 0
|
|||
|
Parity = ''
|
|||
|
Stop = 0
|
|||
|
FlowControl = ''
|
|||
|
CharDelay = 0.0
|
|||
|
Mode = ''
|
|||
|
Offline = None
|
|||
|
Online = None
|
|||
|
ReceiveData = None
|
|||
|
|
|||
|
def __init__(self, Host, Port, Baud=9600, Data=8, Parity='None', Stop=1, FlowControl='Off', CharDelay=0, Mode='RS232'):
|
|||
|
""" SerialInterface class constructor.
|
|||
|
|
|||
|
Arguments:
|
|||
|
- Host (extronlib.device) - handle to Extron device class that instantiated this interface class
|
|||
|
- Port (string) - port name (e.g. 'COM1', 'IRS1')
|
|||
|
- (optional) Baud (int) - baudrate
|
|||
|
- (optional) Data (int) - number of data bits
|
|||
|
- (optional) Parity (string) - 'None', 'Odd' or 'Even'
|
|||
|
- (optional) Stop (int) - number of stop bits
|
|||
|
- (optional) FlowControl (string) - 'HW', 'SW', or 'Off'
|
|||
|
- (optional) CharDelay (float) - time between each character sent to the connected device
|
|||
|
- (optional) Mode (string) - mode of the port, 'RS232', 'RS422' or 'RS485'
|
|||
|
"""
|
|||
|
self.Host = Host
|
|||
|
self.Port = Port
|
|||
|
self.Baud = Baud
|
|||
|
self.Data = Data
|
|||
|
self.Parity = Parity
|
|||
|
self.Stop = Stop
|
|||
|
self.FlowControl = FlowControl
|
|||
|
self.CharDelay = CharDelay
|
|||
|
self.Mode = Mode
|
|||
|
|
|||
|
def Initialize(self, Baud=None, Data=None, Parity=None, Stop=None, FlowControl=None, CharDelay=None, Mode=None):
|
|||
|
""" Initializes Serial Port to given values. User may provide any or all of the parameters. None leaves property unmodified.
|
|||
|
|
|||
|
Arguments:
|
|||
|
- (optional) Baud (int) - baudrate
|
|||
|
- (optional) Data (int) - number of data bits
|
|||
|
- (optional) Parity (string) - 'None', 'Odd' or 'Even'
|
|||
|
- (optional) Stop (int) - number of stop bits
|
|||
|
- (optional) FlowControl (string) - 'HW', 'SW', or 'Off'
|
|||
|
- (optional) CharDelay (float) - time between each character sent to the connected device
|
|||
|
- (optional) Mode (string) - mode of the port, 'RS232', 'RS422' or 'RS485'
|
|||
|
"""
|
|||
|
pass
|
|||
|
|
|||
|
def Send(self, data):
|
|||
|
""" Send string over serial port if it’s open
|
|||
|
|
|||
|
Arguments:
|
|||
|
- data (bytes, string) - data to send
|
|||
|
|
|||
|
Raises:
|
|||
|
- TypeError
|
|||
|
- IOError
|
|||
|
"""
|
|||
|
pass
|
|||
|
|
|||
|
def SendAndWait(self, data, timeout, delimiter):
|
|||
|
""" Send data to the controlled device and wait (blocking) for response
|
|||
|
|
|||
|
Note In addition to data and timeout, the method accepts an optional delimiter, which is used to compare against the received response. It supports any one of the following conditions:
|
|||
|
- > deliLen (int) - length of the response
|
|||
|
- > deliTag (byte) - suffix of the response
|
|||
|
- > deliRex (regular expression object) - regular expression
|
|||
|
|
|||
|
It returns after timeout seconds expires, or returns immediately if the optional condition is satisfied.
|
|||
|
|
|||
|
Note: The function will return an empty byte array if timeout expires and nothing is received, or the condition (if provided) is not met.
|
|||
|
|
|||
|
Arguments:
|
|||
|
- data (bytes, string) - data to send.
|
|||
|
- timeout (float) - amount of time to wait for response.
|
|||
|
- delimiter (see above) - optional conditions to look for in response.
|
|||
|
|
|||
|
Returns
|
|||
|
- Response received data (may be empty) (bytes)
|
|||
|
"""
|
|||
|
pass
|
|||
|
|
|||
|
def StartKeepAlive(self, interval, data):
|
|||
|
""" Repeatedly sends data at the given interval
|
|||
|
|
|||
|
Arguments:
|
|||
|
- interval (float) - Time in seconds between transmissions
|
|||
|
- data (bytes) - data bytes to send
|
|||
|
"""
|
|||
|
pass
|
|||
|
|
|||
|
def StopKeepAlive(self):
|
|||
|
""" Stop the currently running keep alive routine
|
|||
|
"""
|
|||
|
pass
|