socat:通过网络控制串口设备案例分析

本章主要介绍socat通过网络发送数据控制串口设备的案例。硬件设备要求:

  • 两台安装有Ubuntu或者linux系统
  • 成功安装socat软件
  • 摄像头
  • 摄像头串口控制线
    现在为了区分两台电脑,我将在以下文章中用电脑A、电脑B说明。
    现在的摄像头都支持串口控制,我们一般控制摄像头是通过串口调试助手,发送对应的命令进行控制的,可是,如果你的摄像头在一个很奇葩的地方,如酒店大堂的天花板上,你还会那个电脑,拉根串口调试线调试吗?
    肯定不会了,毕竟太危险和麻烦,今天我向大家推荐一款软件socat,如何使用它。下面讲述:如何利用电脑B控制摄像头(与A电脑相连的摄像头):
  • 电脑A:通过串口与摄像头连接;
  • 电脑B:与A在一个网段,相互可以访问;
    下面对A进行配置:
  • 在A的终端输入:sudo socat -d -d /dev/ttyUSB0,raw,nonblock,ignoreeof,cr,echo=0 udp-listen:5555,reuseaddr
    该命令是在本地开一个udp的端口监听,一旦有数据socat就会将数据发送到USB0上

下面对B进行配置:
- 在B的终端输入:sudo echo ”hello” | socat - udp-connect:192.168.1.1:5555
该命令是在本地开一个udp的连接,将hello发送到192.168.1.1端口5555上。

之前用过一个类似软件,只能用串口接收,而且速度有限,并且还很耗CPU。前不久调USB摄像头的时候自己用C++写了一个,支持串口接收和网络接收JPEG图像序列。现在发出来给需要的同学,方便各位的程序调试。 串口接收功能: 串口端口无限制,自动检测电脑可用端口,波特率从9600到921600可选,默认不支持流控制和奇偶校验,8位数据位一位停止位。不需要通信协议,自动从接收的数据中判断JPG数据的起始(FFD8)结束(FFD9)标志,不包含在起始结束标志之间的数据默认为非jpg数据并显示在数据接收窗口(目前只支持文本显示,16进制暂未实现),支持接收数据量显示,帧速率显示(可能计算的不太准确),一帧JPG图像数据大小显示,图像分辨率显示。串口发送功能暂未实现。 网络接收功能: 上位机也支持通过网络接收JPG图片序列。数据接收功能和图像显示功能同串口。上位机默认作为服务器端,且暂时只支持TCP服务器,UDP未实现。目前只支持一个客户端的连接,可显示客户端的连接状态和IP。 注意: 串口接收功能和网络接收功能可同时开启,但如果同时接收数据会造成数据混乱从而导致图像显示不正常。 串口网络的发送功能均暂未实现(暂时用不到发送功能)。 本人实测通过TCP本地回环接收TCP客户端发来的MJPG编码的1080P avi视频文件,网络速度3~5MB/s(360加速球显示),图像显示速率20~30fps,CPU(i5 750)占用25%左右,串口传输效果可以看这里链接里的视频https://pan.baidu.com/s/1jGDA9s6 软件目前还算稳定,之前测试传输了几个小时的图像也没什么问题,可能还有些小bug,欢迎反馈。 测试截图 更新一下:之前的FPS计算是说明:基于两帧图像的时间间隔计算,跳动比较大,不易观察,现在改为1s更新一次,数据更稳定。有MJPG网络视频传输需求的同学可以试试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值