Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.96 KB | None | 0 0
  1. #!/usr/bin/env python
  2. import sys
  3. import argparse
  4. try:
  5.     import serial
  6. except ImportError:
  7.     print 'ImportError: Please install pyserial, pip install pyserial'
  8.     exit(-1)
  9.  
  10. import platform
  11. # only on non windows systems
  12. # used for command history
  13. if platform.system() is not 'Windows':
  14.     import readline
  15.  
  16.  
  17.  
  18. class SerialClient:
  19.     def __init__(self, port, baudrate, timeout):
  20.         self.port = port
  21.         self.baudrate = baudrate
  22.         self.timeout = timeout
  23.         self.client = None
  24.         self.isconnected = False
  25.         self.endline = "\r\n"
  26.  
  27.     def connect(self):
  28.         try:
  29.             self.client = serial.Serial(self.port, self.baudrate, timeout=self.timeout)
  30.             self.isconnected = True
  31.             return True
  32.         except Exception as e:
  33.             print 'ERROR: SerialClient.connect:', str(e)
  34.             self.isconnected = False
  35.             return False
  36.  
  37.     def close(self):
  38.         if self.isconnected:
  39.             self.client.close()
  40.             self.client = None
  41.             self.isconnected = False
  42.  
  43.     def sendline(self, send_data):
  44.         self.client.write( send_data + self.endline )
  45.  
  46.     def recvall(self):
  47.         res = ''
  48.         while True:
  49.             b = self.client.read( 1 )
  50.             if not b:
  51.                 break
  52.             res += b
  53.         return res
  54.  
  55.     def send_and_recv(self, send_data):
  56.         self.sendline( send_data )
  57.         return self.recvall()
  58.  
  59.     def interactive(self):
  60.         try:
  61.             while True:
  62.                 cmd = raw_input('>> ')
  63.                 if cmd:
  64.                     res = self.send_and_recv( cmd )
  65.                     if res:
  66.                         print res.strip()
  67.         except KeyboardInterrupt:
  68.             return
  69.  
  70.  
  71. def main(port, baudrate, timeout):
  72.     srl = SerialClient(port, baudrate, timeout)
  73.     if srl.connect():
  74.         srl.interactive()
  75.         srl.close()
  76.  
  77.  
  78. if __name__ == '__main__':
  79.     parser = argparse.ArgumentParser()
  80.     parser.add_argument('-p', '--port', help="Serial port (COMx | /dev/...)", required=True, type=str)
  81.     parser.add_argument('-b', '--baudrate', default=115200, help="Baudrate", type=int)
  82.     parser.add_argument('-t', '--timeout', default=1, help="Timeout", type=float)
  83.     args = parser.parse_args()
  84.  
  85.     main(args.port, args.baudrate, args.timeout)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement