找回密码
 立即注册

QQ登录

只需一步,快速开始

工控课堂 首页 工控文库 上位机编程 查看内容

VC++之上位机编程

2021-11-6 15:09| 发布者: gk-auto| 查看: 1372| 评论: 0

摘要: 先简单介绍一下何为上下位机,在实际应用中,有时需要单片机采集数据并通过串口将数据传递至个人电脑,再由个人电脑收集数据,并对数据进行,分析处理,再通过串口将要操作的指令发送出去,单片机接收到后执行相对应 ...


VC++之上位机编程

先简单介绍一下何为上下位机,在实际应用中,有时需要单片机采集数据并通过串口将数据传递至个人电脑,再由个人电脑收集数据,并对数据进行,分析处理,再通过串口将要操作的指令发送出去,单片机接收到后执行相对应的操作。

本节介绍全双工通信,类似于所讲的套接字编程,但由于单片机上没有windows系统,因此需要通过串口通信。上位机和下位机分别类似于网络编程的服务端和客户端,两者没有固定区分,并在一定情况下可以相互转化,也就是说单片机同样可以通过串口通信给个人电脑发送指令让其执行相应操作。

单片机作为下位机,对应的寄存器和编程内容不在此介绍,着重介绍个人电脑的上位机编程。

主要还是借助mfc的active控件——Mscomm控件

VC++之上位机编程

,我们新建一个对话框,

VC++之上位机编程

然后右击添加Active控件,

选择

VC++之上位机编程

,点击完成,随后打开类向导

VC++之上位机编程

为该控件定义一个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,则关闭端口;

在打开端口后我们可以通过以下语句提醒端口状态

VC++之上位机编程

若成功打开则出现以下对话框;

VC++之上位机编程

在初次进行上位机编程的时候不可避免地会出现很多苦难,一开始,笔者对属性如下设置

VC++之上位机编程

结果发现跳出对话框

VC++之上位机编程

说明端口已被占用,后来用串口调试助手调至com3端口才成功,于是笔者又对属性索性全改成3结果发现,无论如何端口都不曾打开

VC++之上位机编程

回头再看通过断点一步步调试才发现只有端口值才需为3。emmmm,说明心急是要不得的。果然当属性设置正确后,程序理想化运行,配合下位机实验,发出的值成功返回,程序调通。

VC++之上位机编程

程序调通只是一小步,确意味着可以通过这个模块,写对应的程序,通过电脑控制单片机的每一个模块,也可以编写属于自己的串口调试小助手。光明的未来似乎触手可摸……

关注公众号,加入500人微信群,下载100G免费资料!
发表评论

最新评论

热门文章
关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-22 20:10 , Processed in 0.450488 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部