之前用过一个类似软件,只能用串口接收,而且速度有限,并且还很耗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%左右,串口传输效果可以看这里链接里的视频
http://pan.baidu.com/s/1jGDA9s6
软件目前还算稳定,之前测试传输了几个小时的图像也没什么问题,可能还有些小bug,欢迎反馈。
测试截图
添加不了附件了,二楼传
我这边用921600波特率传输640x480的图片按照你说的操作测试了好几次,但是是没遇到什么问题,只是在传输数据时选择保存图片弹出对话框的时候会稍微卡一下,但不至于卡死。至于后面数据溢出可能是程序卡死所致。如果出现这种问题可以在接收图片前设置保存路径再开始接收。在921600波特率传输的时候串口数据接收本身就会比较占用CPU,然后再加上界面线程的处理,如果CPU处理不过来的话是有可能造成卡死。因此上面提到了下一版的计划,看能不能有所改善。
是一帧一帧的截取再显示么,还是有其他的方法
谢谢,
我现在是这样想的,定时处理收到的数据,取出其中一帧jpeg数据再用pictureBox来显示,怕这样来处理显示速度会限制很多
不知道大神用的什么方法
一周热门 更多>