Virtual serial line on linux with socat, python server & client
socat -d -d pty,raw,echo=0,link=/tmp/cryocon_simulator pty,raw,echo=0,link=/tmp/cryocon
python simulator.py
python client.py "*IDN?"
Alternatives:
Virtual serial line on linux with socat, python server & client
socat -d -d pty,raw,echo=0,link=/tmp/cryocon_simulator pty,raw,echo=0,link=/tmp/cryocon
python simulator.py
python client.py "*IDN?"
Alternatives:
| import sys | |
| import serial | |
| DEFAULT_ADDR = '/tmp/cryocon' | |
| DEFAULT_CMD = '*IDN?' | |
| args = len(sys.argv) - 1 | |
| if args == 0: | |
| addr, cmd = DEFAULT_ADDR, DEFAULT_CMD | |
| elif args == 1: | |
| addr, cmd = DEFAULT_ADDR, sys.argv[1] | |
| else: | |
| addr, cmd = sys.argv[1:3] | |
| cmd += '\n' | |
| s = serial.serial_for_url(addr) | |
| s.write(cmd.encode()) | |
| print(s.readline()) |
| import sys | |
| import logging | |
| import serial | |
| DEFAULT_ADDR = '/tmp/cryocon_simulator' | |
| logging.basicConfig(level=logging.INFO) | |
| addr = sys.argv[1] if len(sys.argv) > 1 else DEFAULT_ADDR | |
| conn = serial.serial_for_url(addr) | |
| logging.info(f'Ready to receive requests on {addr}') | |
| while True: | |
| request = conn.readline() | |
| logging.info('REQ: %r', request) | |
| request = request.strip().decode().lower() | |
| reply = 'Cryo-con,24C,305682,1.05A\n' if request == '*idn?' else 'NACK\n' | |
| reply = reply.encode() | |
| logging.info('REP: %r', reply) | |
| conn.write(reply) |
| # creates the PTYs | |
| socat -d -d pty,raw,echo=0,link=/tmp/cryocon_simulator pty,raw,echo=0,link=/tmp/cryocon |