Serial to telnet using Python - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Serial to telnet using Python (/thread-19122.html) |
Serial to telnet using Python - Charles_Linquist - Jun-13-2019 Most people need a telnet to serial adapter. That is, they need a program to act as a telnet host, and when you telnet in - you get connected to a serial device. They want their device to act as a telnet SERVER. I need the opposite. I want to have a computer automatically telnet into a server, and then I want my serial port to be connected to that server. So I need my device to be a telnet CLIENT. Since I can find no software that does what I want, I started looking at Python, and modified something that I found on the net. For right now, I enter the server and port # on the command line. Later I'll just hard-code it. This is running on a Raspberry pi (Raspbian_) # telnet program example import socket, select, string, sys, serial #main function ser = serial.Serial('/dev/serial0', 115200, timeout = 1) if __name__ == "__main__": if(len(sys.argv) < 3) : print 'Usage : python telnet.py hostname port' ser.close() sys.exit() host = sys.argv[1] port = int(sys.argv[2]) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(2) # connect to remote host try : s.connect((host, port)) except : print 'Unable to connect' ser.close() sys.exit() print 'Connected to remote host' while 1: socket_list = [sys.stdin, s] # Get the list sockets which are readable read_sockets, write_sockets, error_sockets = select.select(socket_list , [], []) for sock in read_sockets: #incoming message from remote server if sock == s: data = sock.recv(4096) if not data : print 'Connection closed' ser.close() sys.exit() else : #print data # sys.stdout.write(data) ser.write(data) #incoming message else : # msg = sys.stdin.readline() msg = ser.read(4096) s.send(msg)This almost works, but the "turn around" time is too long. I need to send/receive 60-100 byte strings, and the program seems to send only one byte at a time. That doesn't work. Also, I need a timer that will try to automatically reconnect if no data is received in 10 seconds or so. Can someone tell me how to fix this? RE: Serial to telnet using Python - joe_momma - Jun-17-2019 Charles you may have more luck in networking forum, have you seen the telnetlib module? RE: Serial to telnet using Python - DeaD_EyE - Jun-17-2019 You can look here: https://pythonhosted.org/pyserial/examples.html You are already using this library. |