树莓派:如何通过以太网发送串行指令?

2024-10-03 06:23:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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

对不起,我真的不知道怎么做。我在谷歌上搜索了一下,找不到答案。:(一)


Tags: 端口indev命令脚本datagettype
2条回答

基于Python的解决问题的方法是使用pyserial的内置network ports功能(它基于RFC2217标准)。

在服务器(连接串行设备的地方)中,运行网络串行服务器-可以使用serial port bridge示例,例如:

% python /usr/share/doc/python-serial/examples/rfc2217_server.py -p 7000 /dev/ttyAMA0

在您的客户机python代码中,您使用带有较新的serial_for_url(如howto中所述)的rfc2217样式的url附加到它,例如:

serial.serial_for_url('rfc2217://yourservername:7000')

使用^{}命令怎么样?使用以下命令行,可以通过eth 127.0.0.1:5555访问/dev/ttyAMA0

socat PTY,link=/dev/ttyAMA0 TCP:127.0.0.1:5555

相关问题 更多 >