4

我有一个 python 脚本,它将在终端中运行时启动cherrypy webserver。在脚本中,我通过导入使用 pyserial serial,然后我打开端口 /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 将串行命令发送到类似的设备,我怎样才能让这个脚本通过以太网端口而不是串行端口发送命令?我应该改变什么?

对不起,但我真的对如何做到这一点一无所知。我已经通过谷歌搜索,我找不到答案。:(

4

2 回答 2

2

使用socat命令呢?使用以下命令行,您可以/dev/ttyAMA0通过以下方式访问eth 127.0.0.1:5555

socat PTY,link=/dev/ttyAMA0 TCP:127.0.0.1:5555
于 2013-05-14T08:34:50.293 回答
0

一种基于 Python 的方法是使用 pyserial 的内置网络端口功能(基于RFC2217标准)。

在您的服务器(连接串行设备的位置)中,您运行网络串行服务器 - 您可以使用串行端口桥示例,例如:

% 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')
于 2014-09-05T15:09:17.630 回答