网站首页 > 博客文章 正文
先简单介绍一下何为上下位机,在实际应用中,有时需要单片机采集数据并通过串口将数据传递至个人电脑,再由个人电脑收集数据,并对数据进行,分析处理,再通过串口将要操作的指令发送出去,单片机接收到后执行相对应的操作。
本节介绍全双工通信,类似于所讲的套接字编程,但由于单片机上没有windows系统,因此需要通过串口通信。上位机和下位机分别类似于网络编程的服务端和客户端,两者没有固定区分,并在一定情况下可以相互转化,也就是说单片机同样可以通过串口通信给个人电脑发送指令让其执行相应操作。
单片机作为下位机,对应的寄存器和编程内容不在此介绍,着重介绍个人电脑的上位机编程。
主要还是借助mfc的active控件——Mscomm控件
,我们新建一个对话框,
然后右击添加Active控件,
选择
,点击完成,随后打开类向导
为该控件定义一个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,则关闭端口;
在打开端口后我们可以通过以下语句提醒端口状态
若成功打开则出现以下对话框;
在初次进行上位机编程的时候不可避免地会出现很多苦难,一开始,笔者对属性如下设置
结果发现跳出对话框
说明端口已被占用,后来用串口调试助手调至com3端口才成功,于是笔者又对属性索性全改成3结果发现,无论如何端口都不曾打开
回头再看通过断点一步步调试才发现只有端口值才需为3。emmmm,说明心急是要不得的。果然当属性设置正确后,程序理想化运行,配合下位机实验,发出的值成功返回,程序调通。
程序调通只是一小步,确意味着可以通过这个模块,写对应的程序,通过电脑控制单片机的每一个模块,也可以编写属于自己的串口调试小助手。光明的未来似乎触手可摸……
猜你喜欢
- 2024-10-01 操作系统 : 按优先数调度算法实现处理器调度(C++)
- 2024-10-01 c++ 疑难杂症(13) allocator(c++ catch all exception)
- 2024-10-01 百度C++工程师的那些极限优化(内存篇)
- 2024-10-01 C++20 香不香?从四大新特性看起(c++20支持)
- 2024-10-01 用C++11打造智能观察者模式:详解实现步骤完整示例代码
- 2024-10-01 网络编程:手绘TCP状态机(tcp状态转换图详解)
- 2024-10-01 C++为什么不提倡使用单例模式?(c++为什么不用printf)
- 2024-10-01 智能系统机器人!C++实现三阶魔方自动求解程序源码
- 2024-10-01 ChaosBlade 发布对 C++ 应用混沌实验的支持
- 2024-10-01 C/C++编程笔记:C++智能指针及其类型的介绍!重点分析
你 发表评论:
欢迎- 07-08Google Cloud Platform 加入支持 Docker 的容器引擎
- 07-08日本KDDI与Google Cloud 签署合作备忘录,共探AI未来
- 07-08美国Infoblox与Google Cloud合作推出云原生网络和安全解决方案
- 07-08GoogleCloud为Spanner数据库引入HDD层,将冷存储成本降低80%
- 07-08谷歌推出Cloud Dataproc,缩短集群启动时间
- 07-08Infovista与Google Cloud携手推进射频网络规划革新
- 07-08比利时Odoo与Google Cloud建立增强合作,扩大全球影响力
- 07-08BT 和 Google Cloud 通过 Global Fabric 加速 AI 网络
- 最近发表
-
- Google Cloud Platform 加入支持 Docker 的容器引擎
- 日本KDDI与Google Cloud 签署合作备忘录,共探AI未来
- 美国Infoblox与Google Cloud合作推出云原生网络和安全解决方案
- GoogleCloud为Spanner数据库引入HDD层,将冷存储成本降低80%
- 谷歌推出Cloud Dataproc,缩短集群启动时间
- Infovista与Google Cloud携手推进射频网络规划革新
- 比利时Odoo与Google Cloud建立增强合作,扩大全球影响力
- BT 和 Google Cloud 通过 Global Fabric 加速 AI 网络
- NCSA和Google Cloud合作开发AI驱动的网络防御系统,加强泰国网络空间的安全性
- SAP将在沙特阿拉伯 Google Cloud 上推出BTP服务
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- messagesource (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)