我有一个python脚本,它将在终端中运行时启动cherrypy webserver。在脚本中,我通过导入serial
使用pyserial,然后打开端口/ dev / ttyAMA0,我可以发送任何串行命令。
@cherrypy.expose
def login (self, **data):
passcode = data.get("passcode", None)
print "logging in using passcode %s"%passcode ,type(passcode)
import serial
import time
#open connection
serialport=serial.Serial ("/dev/ttyAMA0", 9600, timeout=0.5)
#write in user sign in code
serialport.write("\x03LI%s\x0D"%passcode)
#get reply
reply=serialport.readlines(1)
print reply, type(reply)
但是,由于有一个以太网端口,我可以使用Netcat将串行命令发送到该类似设备,如何让这个脚本通过以太网端口而不是串口发送命令?我应该改变什么?
抱歉,但我真的对如何做到这一点毫无头绪。我通过谷歌搜索,我找不到答案。 :(答案 0 :(得分:2)
使用socat
命令怎么样?使用以下命令行,您可以通过/dev/ttyAMA0
访问eth 127.0.0.1:5555
:
socat PTY,link=/dev/ttyAMA0 TCP:127.0.0.1:5555
答案 1 :(得分:0)
基于Python的方法是使用pyserial的内置network ports功能(基于RFC2217标准)。
在您的服务器(连接了串行设备)中运行网络串行服务器 - 您可以使用serial port bridge示例,例如:
% python /usr/share/doc/python-serial/examples/rfc2217_server.py -p 7000 /dev/ttyAMA0
在你的客户端python代码中,你使用rfc2217样式的url和更新的serial_for_url
(如howto中所述)附加到它上面,例如:
serial.serial_for_url('rfc2217://yourservername:7000')