Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- import sys
- import argparse
- try:
- import serial
- except ImportError:
- print 'ImportError: Please install pyserial, pip install pyserial'
- exit(-1)
- import platform
- # only on non windows systems
- # used for command history
- if platform.system() is not 'Windows':
- import readline
- class SerialClient:
- def __init__(self, port, baudrate, timeout):
- self.port = port
- self.baudrate = baudrate
- self.timeout = timeout
- self.client = None
- self.isconnected = False
- self.endline = "\r\n"
- def connect(self):
- try:
- self.client = serial.Serial(self.port, self.baudrate, timeout=self.timeout)
- self.isconnected = True
- return True
- except Exception as e:
- print 'ERROR: SerialClient.connect:', str(e)
- self.isconnected = False
- return False
- def close(self):
- if self.isconnected:
- self.client.close()
- self.client = None
- self.isconnected = False
- def sendline(self, send_data):
- self.client.write( send_data + self.endline )
- def recvall(self):
- res = ''
- while True:
- b = self.client.read( 1 )
- if not b:
- break
- res += b
- return res
- def send_and_recv(self, send_data):
- self.sendline( send_data )
- return self.recvall()
- def interactive(self):
- try:
- while True:
- cmd = raw_input('>> ')
- if cmd:
- res = self.send_and_recv( cmd )
- if res:
- print res.strip()
- except KeyboardInterrupt:
- return
- def main(port, baudrate, timeout):
- srl = SerialClient(port, baudrate, timeout)
- if srl.connect():
- srl.interactive()
- srl.close()
- if __name__ == '__main__':
- parser = argparse.ArgumentParser()
- parser.add_argument('-p', '--port', help="Serial port (COMx | /dev/...)", required=True, type=str)
- parser.add_argument('-b', '--baudrate', default=115200, help="Baudrate", type=int)
- parser.add_argument('-t', '--timeout', default=1, help="Timeout", type=float)
- args = parser.parse_args()
- main(args.port, args.baudrate, args.timeout)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement