时间紧张,先记一笔,后续优化与完善。

在计算机中,数据通信主要有两种:一种是串口通信,每一个字符的二进制位按位排列停止传输,速度慢,但传输距离较远。鼠标口和usb口都属于串口。另一种是并行通信,每一个字符的二进制位使用多条数据线同时停止传输,传输速度快,但传输距离相对比较近。计算机外部传输一般使用这种方式,打印口也属于并行端口。

一、串口通信道理

串行端口是cpu和串行设备间的编码转换器,当数据从串口发送出时,字节数据转化为串行的位。在接收时,串行的位转化为字节数据。在Windows下串口是系统的一种资源,应用程序要使用串口停止通信,必须向计算机申请该串口资源,使用完毕,应释放资源。

二、串口通信特点

1,通信成本低,仅一条通信链路

2,传输速度慢。

三、串口通信传输方式

1,单工通信,固定的由发送端发送数据到接收端 电台与电视机

2,半双工通信,允许双向互相发送数据,但是不能同时 对讲机

3,双工通信,允许两边互相同时发送和接收数据 手机

四、MSComm控件串口通信开发

MSComm空间是微软公司供给的ActiveX空间,用于简化串口程序开发。在Visual C++和VS2005环境中都可以方便地添加该控件。当导入CMSComm类后,就能够在程序中使用MSComm控件了。

1,MSComm常用方法

1)GetCommPort() 获得串口号

2)SetCommPort() 设置端口号

3)GetRThreshold()与SetRThreshold()用于获得与设置接收缓冲区接收到多少个字符,MSComm控件触发Oncomm事件。

4)GetInputMode()与SetInputMode()用于获得和设置传输数据的类型,参数为1,二进制传输,参数为0,文本传输。

5)SetSettings()用于设置波特率、奇偶校验,数据位和停止位参数

6)GetInput()用于从接收缓冲区获得数据

7)SetOutput()用于向发送缓冲区写入数据

8)GetPortOpen()/SetPortOpen()获得串口状态,打开或关闭串口

9)GetCommEvent()获得串口发生的事件。1----发送数据;2---接收数据;3----CTS信号发生变化,预备发送数据;4---DSR信号发生变化,预备接受数据。

2,串口配置代码

if(m_com.GetPortOpen())

m_com.SetPortOpen(FALSE);

m_com.SetCommPort(com);  //设置端口

if(!m_com.GetPortOpen())

m_com.SetPortOpen(TRUE);  //打开串口

每日一道理
信念是巍巍大厦的栋梁,没有它,就只是一堆散乱的砖瓦;信念是滔滔大江的河床,没有它,就只有一片泛滥的波浪;信念是熊熊烈火的引星,没有它,就只有一把冰冷的柴把;信念是远洋巨轮的主机,没有它,就只剩下瘫痪的巨架。

else

AfxMessageBox("cannot open serial port");

m_com.SetSettings("9600,n,8,1");//设置波特率,校验,数据位,停止位

m_com.SetInputMode(0); //以文本方式捡取数据

m_com.SetRThreshold(1); //参数表现每当串口接收缓冲区中有多于或者即是个字符时将激发一个接收数据的OnComm事件

m_com.SetInputLen(0); //设置以后接收区数据长度为

2,串口接收OnComm事件代码如下

intresEvent;

resEvent =m_mscom.GetCommEvent();

switch(resEvent)

{

case 2: //接收数据

{

if(IsSended) //开始接收数据

{

VARIANTdata;

data= m_mscom.GetInput();

CStringstr;

str= data.bstrVal;

IsSended= FALSE;

MessageBox(str);

}

}

break;

}

3,串口发送数据代码如下

CString str ;

m_data.GetWindowText(str);

IsSended =FALSE; //发送完成

m_mscom.SetOutput((COleVariant)str);

IsSended =TRUE; //发送完成

Sleep(1000);//延时1妙

文章结束给大家分享下程序员的一些笑话语录: 刹车失灵
有一个物理学家,工程师和一个程序员驾驶着一辆汽车行驶在阿尔卑斯山脉 上,在下山的时候,忽然,汽车的刹车失灵了,汽车无法控制地向下冲去, 眼看前面就是一个悬崖峭壁,但是很幸运的是在这个悬崖的前面有一些小树 让他们的汽车停了下来, 而没有掉下山去。 三个惊魂未定地从车里爬了出来。
物理学家说, “我觉得我们应该建立一个模型来模拟在下山过程中刹车片在高 温情况下失灵的情形”。
工程师说, “我在车的后备厢来有个扳手, 要不我们把车拆开看看到底是什么 原因”。
程序员说,“为什么我们不找个相同的车再来一次以重现这个问题呢?”

转载于:https://www.cnblogs.com/xinyuyuanm/archive/2013/05/18/3085886.html

串口数据visual c++ MSComm 串口控件程序开发相关推荐

  1. 基于MFC串口编程和曲线图绘制(visual studio2008,Teechart绘图控件)的程序总结

    前言 今年刚进入公司按经理的要求为底盘测控机写了一个小小的console.这也是第一次教认真的完成整个程序的编写.程序不大,所用技术比较基础也不前卫,属于初级程序员的练手程序(知识的整理和搬运).虽然 ...

  2. VS2015中配置MSComm通讯控件和注意事项

    1.MSCommon通讯控件前文回顾 MSComm 作为一个串行通讯控件.在为程序员串口通讯编程节省了很多时间,基于对话框的应用中加入一个MSComm控件非常简单. MSComm控件提供了两种处理通信 ...

  3. QT中树控件QTreeView开发实例

    转自:http://mobile.51cto.com/symbian-268700.htm 本文讲解了QT中树控件QTreeView开发实例,对于QTreeView没有过多的讲解,那么不说废话了,看代 ...

  4. [转]C#开发ActiveX控件,.NET开发OCX控件案例

    引自:百度   http://hi.baidu.com/yanzuoguang/blog/item/fe11974edf52873aaec3ab42.html 讲下什么是ActiveX控件,到底有什么 ...

  5. Android:Socket客户端开发,Android 的Socket客户端优化,Android非UI线程修改控件程序崩溃的问题

    一.Android:Socket客户端开发 创建一个工程 我们要做的是按下按键之后,去往服务器 (服务器) 或者我们自己写的服务器 ,给他发送一些预定好的东西 然后打开操作界面 然后修改一下 你要发送 ...

  6. MFC ActiveX (ocx)控件的开发

    前言 ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM). ActiveX控件是一种实现了一系列特定接口而使其在使用和外观上更象一个 ...

  7. devexpress控件教程 开发workflow设计器这么简单

    如果你的项目的OA,尤其是政府部门的OA,那么一定会涉及工作流这个功能.这个模块说大不大.说小不大,最头疼的就是它的设计器,一直没有合适的.虽然微软出了工作流的3.5和4.0版本,但也没有配套的设计器 ...

  8. 用C#编写ActiveX控件,开发浏览器控件,注册ActiveX 控件

    用C#编写ActiveX控件,开发浏览器控件,注册ActiveX 控件 用C#编写ActiveX控件 开发浏览器控件这是本控件开发完成后的一个简单应用.我们可以利用它以本地文件夹为单位来批量更新服务器 ...

  9. MCSD培训教程70-016 Microsoft Visual C++ 6.0 桌面应用程序开发

    急求:MCSD培训教程70-016 Microsoft Visual C++ 6.0 桌面应用程序开发 书带的光盘内容  有的提供下非常感谢 联系方式:yuanjun224@163.com

最新文章

  1. o oia ospf 路由优先_OSPF基本配置及OSPF特殊区域配置
  2. 比赛-模拟赛 (17 Aug, 2018) (待施工)
  3. php exchange,PHP SDK for digital currency exchange
  4. 【CTF解题】BCTF2018-houseofatum-Writeup题解
  5. KubeMeet 直播 | 现场直击大规模集群、混合环境下的云原生应用交付难题
  6. linux下安装php扩展模块gettext
  7. SAP 用户权限解析
  8. 数据结构-判断一棵树是否为二叉排序树
  9. 清华大学计算机组成与体系结构,清华大学出版社-图书详情-《计算机组成与体系结构(第2版)》...
  10. JMeter插件模拟发送UDP请求:UDP sampler
  11. mysql java文件导入导出_MySQL文件导出和导入
  12. 转:判断Caps Lock键是否打开,如果打开则关闭
  13. android volley post 参数,带有标题和正文的Android Volley POST请求
  14. 极客大学架构师训练营 加密技术 高可用系统的度量 高可用系统的架构 高可用系统的运维 第22课 听课总结
  15. BarTender数据批量打印软件的入门操作
  16. 2022短视频去水印小程序源码+支持批量解析
  17. 关于sg90舵机的一点小想法
  18. ZIPF分布、PARETO分布和幂律分布
  19. php ftps,使用PHP Curl的FTPS获得部分下载
  20. 自定义一个腾讯云短信验证码接口spring-starter

热门文章

  1. 云服务器搭建深度学习环境
  2. 基于WIFI信号的呼吸和心率检测(论文总结)
  3. 计算机视频的压缩方式,如何在电脑上对视频进行压缩?一分钟教你学会视频压缩方法...
  4. CubeMXIDE 汉化
  5. 腾讯云轻量服务器与CVM的区别?
  6. thymeleaf 设置时间格式
  7. 上海落户计算机水平毕业研究生,2021应届生落户上海打分标准,部分毕业生可直接落户上海...
  8. 腾讯云商用密码合规解决方案亮相2021商用密码应用创新高端研讨会,高效护航企业云端数据安全
  9. vue-cli 项目打包后 代理接口报404错误 解决办法!
  10. OpenGL实现在三维空间拖拽物体