Raspberry Pi:如何使用以太网发送串行命令?

时间:2013-05-14 08:14:30

标签: python cherrypy raspberry-pi

我有一个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将串行命令发送到该类似设备,如何让这个脚本通过以太网端口而不是串口发送命令?我应该改变什么?

抱歉,但我真的对如何做到这一点毫无头绪。我通过谷歌搜索,我找不到答案。 :(

2 个答案:

答案 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')