终于搞定了!我想我只能这么说,这两天熬夜的成果啊。
自从去年校电子竞赛之后一直想要做些计算机控制的东西,和郑子含老师聊了聊,她推荐我去学习VB,但是我对C++情有独钟,因为学过C上手可能快。一直没有时间搞。这次比赛搞小车,想把上学期的想法实现一下。但是电脑控制小车必须要一个良好的人机交换界面。于是开学想要系统的学习下C++语言,看了半本郑阿奇的书结果发现内容竟然和C一模一样,关键的后半本介绍了类的概念,我粗略的看了。找了孙鑫老师的视频和书,了解了下MFC的编程方式,但是这个都和串口没什么关系,我知道MFC封装了WIN API,但是谁可以告诉我用哪个函数打开PC上的串口?
终于找了一本书叫做《Visual C++实践与提高——串口通信与工程应用篇》(中国铁道出版社,张筠莉 刘书智主编)。首先按着上面的程序做了个串口调试助手,理解了下,但是好用吗?不见得,单片机端的程序的设计和书上的不同(书上汇编,写了3页还不如我用C十几行就够了)加上频繁的启动PC定时器,导致老是检测延时,我测过只要按上7下,就会直接卡死。
做了一个星期左右时间的准备工作,做坏了几个程序,蓝屏很多次之后,前天晚上断网后开工,搞到凌晨四点钟,终于把雏形做出来了,昨天下午主要的目的是要把编辑框里的数据(人工设置小车速度)读到程序中再发到单片机上,但是书上并没有把编辑框的数据读到程序中的函数,找了很久找到
UpdateData(true);
GetDlgItemText(IDC_EDIT4,a);
用了一下不错,可以用。最难的就是发送了,因为我使用了很多按钮每次执行按钮都要有返回值确认单片机是否是正常收到,为了简便起见我PC发到单片机上的都是1个字节,而单片机发到PC上的都是2个字节。而发送小车的速度值是不能超过1个字节,为了不和之前确认数发生检测错误,所以我将编辑框的数据先加上11再在单片机里减去11。这个涉及到数据类型转换的问题,int char VARIANT CString CByteArray,我终于明白了,为什么数据类型也是一门课。。。
当时比较混乱问了很多学计算机的同学,但是没有得到答案,最后问了下潇,她给了我C++老师的qq,叫“曾哥”。我*,曾哥如此闪亮名字刺瞎了我的狗眼!于是速度加为好友,不过最后都没有拜托他们,潇今早给程序前我已经想好怎么解决了,这个方法避开了CString 和CByteArray的转换。
不废话了,现在就贴制作过程(使用工具V
如果觉得《c语言mfc实现串口通信 基于MFC-MSComm控件的PC与单片机串口通信编程》对你有帮助,请点赞、收藏,并留下你的观点哦!