VC++之上位机编程
https://p6.toutiaoimg.com/img/pgc-image/cc43c3f3c24144b9a402b9d10be1d244~tplv-tt-shrink:640:0.image先简单介绍一下何为上下位机,在实际应用中,有时需要单片机采集数据并通过串口将数据传递至个人电脑,再由个人电脑收集数据,并对数据进行,分析处理,再通过串口将要操作的指令发送出去,单片机接收到后执行相对应的操作。本节介绍全双工通信,类似于所讲的套接字编程,但由于单片机上没有windows系统,因此需要通过串口通信。上位机和下位机分别类似于网络编程的服务端和客户端,两者没有固定区分,并在一定情况下可以相互转化,也就是说单片机同样可以通过串口通信给个人电脑发送指令让其执行相应操作。单片机作为下位机,对应的寄存器和编程内容不在此介绍,着重介绍个人电脑的上位机编程。主要还是借助mfc的active控件——Mscomm控件https://p6.toutiaoimg.com/img/pgc-image/14c882f747374009aed7fc719468fd7c~tplv-tt-shrink:640:0.image
,我们新建一个对话框,https://p3.toutiaoimg.com/img/pgc-image/1f7f9947f3a2441dbe79e252ed7be7c1~tplv-tt-shrink:640:0.image
然后右击添加Active控件,选择https://p3.toutiaoimg.com/img/pgc-image/25e6195329ff48fba57a081b3f83a361~tplv-tt-shrink:640:0.image
,点击完成,随后打开类向导https://p5.toutiaoimg.com/img/pgc-image/788700b3d0b84f56b8db08fc8e6d4953~tplv-tt-shrink:640:0.image
为该控件定义一个CMscomm1类型的控制变量,随后都通过这个变量对控件进行操控。接着介绍下该控件类主要的成员函数:put_commPort(ComPort);//设置端口号,由于笔者采用电脑的com3口通信,所以这里设为3;put_SThreshold(Sthreshold);若设置 Sthreshold 属性为 0(缺省值),数据传输事件不会产生 OnComm 事件。若设置 Sthreshold 属性为 1,当传输缓冲区完全空时,MSComm 控件产生 OnComm 事件,这里设为1;put_RThreshold(Rthreshold);//当接收字符后,若 Rthreshold 属性设置为 0(缺省值)则不产生 OnComm 事件。这里设置 Rthreshold 为 1,接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件。put_InputMode(1) //0(缺省)通过 Input 属性以文本方式取回数据,而这里设为1表示以二进制方式取回数据;put_Settings("BBBB,P,D,S ")//BBBB 为波特率,P为奇偶校验,D为数据位数,S为停止位数。value 的缺省值是:"9600,N,8,1 ";在设置完基本的属性值之后还必须得打开端口put_PortOpen(BOOL)函数,若BOOL为TRUE,则打开端口,若为FALSE,则关闭端口;在打开端口后我们可以通过以下语句提醒端口状态https://p5.toutiaoimg.com/img/pgc-image/88290f755a82435aab725ee546907a97~tplv-tt-shrink:640:0.image
若成功打开则出现以下对话框;https://p5.toutiaoimg.com/img/pgc-image/2fe74bdf498c4ffc84864ca8a1420fa9~tplv-tt-shrink:640:0.image
在初次进行上位机编程的时候不可避免地会出现很多苦难,一开始,笔者对属性如下设置https://p5.toutiaoimg.com/img/pgc-image/1446fedca6574c73b7add5b7d044a412~tplv-tt-shrink:640:0.image
结果发现跳出对话框https://p3.toutiaoimg.com/img/pgc-image/ffcde29d54864c55ad10656ad1f1eecc~tplv-tt-shrink:640:0.image
说明端口已被占用,后来用串口调试助手调至com3端口才成功,于是笔者又对属性索性全改成3结果发现,无论如何端口都不曾打开https://p9.toutiaoimg.com/img/pgc-image/608769e63eec45f389b687a803fa6398~tplv-tt-shrink:640:0.image
回头再看通过断点一步步调试才发现只有端口值才需为3。emmmm,说明心急是要不得的。果然当属性设置正确后,程序理想化运行,配合下位机实验,发出的值成功返回,程序调通。https://p9.toutiaoimg.com/img/pgc-image/655b203882004e10981bc850ac36dbed~tplv-tt-shrink:640:0.image
程序调通只是一小步,确意味着可以通过这个模块,写对应的程序,通过电脑控制单片机的每一个模块,也可以编写属于自己的串口调试小助手。光明的未来似乎触手可摸……
楼主您的技术水准,我最服你,其他都是浮云 无回帖,不论坛,这才是人道。
说得对!狠狠赞同,没毛病~ 画面感太强了,仿佛身临其境! 笑不活了,评论区比正文还精彩
已转发给朋友,一起快乐一下 原来还有这种操作,长见识了! 这波反向操作,我属实没想到! 我先占个楼,等下再慢慢看~ 来凑个热闹,增加点人气~
页:
[1]
2