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 |
Thanks! This example helped a lot in my bachelor's thesis!