时间:2017-4-18来源:本站原创作者:佚名

做单片机开发,最经常用到的软件一定是串口调试助手!

(肯定不是Eclipse,万一有人用Keil呢???)

(串口调试助手)

感谢丁丁,给嵌入式工程师开发了这么棒的工具!

(吐槽一句串口调试助手的健壮性,运行的时候拔串口难道就不能给个提示然后关掉软件吗!一定要开任务管理器关闭吗!??)

(每个嵌入式工程师一定会用到的工具)

最近项目开发,需要读取激光雷达的数据,处理后通过LabVIEW利用VISA接口发送给单片机(没办法??,毕竟比赛是NI公司赞助的,手动摊手)。因为激光雷达提供的接口是C++的程序,只能通过DLL动态库的形式在LabVIEW中运行。

这部分在以前的推送中已经有过介绍。

(扫我!扫我!扫我!)

每次运行动态库都会做接口的初始化然后再读取信息,频率过高会读取失败(事实证明,越低级的语言越高级??),于是尝试绕过LabVIEW直接通过串口发送数据(好吧,我承认,原来是不会用C++开串口??)。

(利用VISA发送信息)

激光雷达使用的是RoboPeak团队开发的RPLIDAR。可以实现度6米范围内的激光测距扫描,产生所在空间的平面点云地图信息用于地图测绘、机器人定位导航、物体/环境建模等应用(如果团队看到请联系我广告费??)。

(RPLIDAR激光雷达)

官方提供的DEMO里有个控制台应用程序的流程是这样的:

(激光雷达DEMO框图)

改写思路是在打开激光雷达的端口后,打开单片机端口并初始化,显示数据部分改为循环的数据的简单处理后通过串口发送。

具体修改过程比较复杂,只提供一个简单的串口收发数据的样例吧(手机上看代码分分钟想摔手机,所以请移步网站,手动微笑)。

(程序代码)

注意:

文件名为“COMX”,X表示端口号,如果X超过10需要另外的书写方式。

因为hCom句柄不是文件句柄,不能使用通常的fwrite和fread方法,要用ReadFile和WriteFile方法。

因为ReadFile是阻塞函数,会一直检查直到读取到信息,需要通过COMMTIMEOUTS结构体设置超时设置(当然,这次项目中并不需要读取信息)。

其实激光雷达的DEMO中还提供了MFC的图形界面,有了对控制台应用程序的修改经验对MFC的数据处理部分函数做简单修改后也成功的实现了数据的串口发送,而且还有了图形显示,程序算法的调整更加方便了。

(当然,具体修改过程,因为我对MFC也不是很了解,如果有需要的话我们可以单独交易交流?)









































北京中科医院曝光
白癜风能治好吗

转载请注明原文网址:http://www.gzdatangtv.com/jsyy/6563.html
------分隔线----------------------------