树莓派做串口服务器

新冠肺炎的流行导致在家远程办公,于是有了串口服务器需求。

作为嵌入式开发者,有大量的设备需要连接串口。之前的做法是PC扩展USB串口连设备,然后VNC到PC。为这么个需求占一台PC,实在有点浪费。

本想自己用python写一个,后来发现Python库pyserver有一个example完全满足要求:

https://pyserial.readthedocs.io/en/latest/examples.html#multi-port-tcp-ip-serial-bridge-rfc-2217

于是就解决该example的安装及运行问题。

1.树莓派装debian;

2.上述网页里写道Requirements:

  • Python (>= 2.4)
  • python-avahi
  • python-dbus
  • python-serial (>= 2.5)

需要用python2, 3没有试。

python --version
Python 2.7.9

sudo apt-get install python-avahi

注意avahi不能用pip装。这里折腾了很久。

sudo pip install pydbus

sudo pip install pyserial

查询:

pi@raspberrypi:/etc/init.d $ pip freeze |grep dbus
pydbus==0.6.0
pi@raspberrypi:/etc/init.d $
pi@raspberrypi:/etc/init.d $ pip freeze |grep serial
pyserial==2.6

3. 安装example

按描述:

  1. Copy the script port_publisher.py to /usr/local/bin
  2. Copy the script port_publisher.sh to /etc/init.d.
  3. Add links to the runlevels using update-rc.d port_publisher.sh defaults 99
  4. That’s it :-) the service will be started on next reboot. Alternatively run invoke-rc.d port_publisher.sh start as root.

注意:

1) 文件拷贝完成后,chmod 755;

2) 第三步实测无效,改为直接修改/etc/init.d/rc.local 文件;

3) 最后一步运行无效,取代之:

sudo ./port_publisher.sh start

停止:

sudo ./port_publisher.sh stop

(stop今天实测无效,直接用tcpkill)

4) 原网页doc里两个下载文件的链接不对,可能下载下来的是html文件。建议git直接下载,或在github里download raw。

4. start后会报warning,说get_settingsapply_settings找不到。

直接python运行之,方便找问题。

sudo python /usr/local/bin/port_publisher.py

查API,发现是pyserial版本过旧导致。分别替换成

getSettingsDict和applySettingsDict,问题解决!

 

5.查看端口号,可见端口已打开:

sudo netstat -anp |grep 7000

如下三条命令可以看到USB串口相关信息:

lsusb

ls /dev/tty* -l

dmesg

6.telnet连接7000端口,大功告成!

7.只能一个用户连接。可用tcpkill强制断开其他用户的连接。详见:

https://cloud.tencent.com/developer/article/1356651

8.如提示serial模块找不到,可能是python里安装了serial库,跟本例要用的pyserial库冲突。pip uninstall 卸载serial库即可。

9. 安装和执行都加sudo,方能保证库匹配。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值