一、注册MSCOMM

1、下载控件MSCOMM32.OCX(32位),mswnisck.ocx(64位)

2、把这个ocx文件放在c盘WIndows的system32里,打开cmd执行:regsvr32 MSCOMM32.OCX(32位)

   把这个ocx文件放在c盘WIndows的syswow64里,打开cmd执行:regsvr32 c:\windos\syswow\mswnisck.OCX(64位)

二、打开串口

m_mscomm.put__CommPort(1);//选择串口一
m_mscomm.put_InputMode(1);//二进制方式读写数据
m_mscomm.put_InBufferSize(1024);//接收缓冲区大小,字节
m_mscomm.put_OutBufferSize(1024);//发送缓冲区大小,字节
m_mscomm.put_Settings(_T("9600,n,8,1"));//9600波特率,8个数据位,1个停止位
m_mscomm.put_InputLen(0);//设置当前接收区数据长度为0,表示全部读取
m_mscomm.put_RThreshold(1);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm
m_mscomm.put_PortOpen(TRUE);//打开串口,如果打开失败,此函数会调用AfxMessageBox来显示错误信息,并返回

三、发送数据

m_mscomm.put_Output((COleVariant)m_sendstr);//如果发送失败,此函数会调用AfxMessageBox提示错误信息并返回

四、接收数据(基于事件驱动型,和中断类似)

在图形界面,右键MSComm控件,添加事件处理程序onComm,在函数里:

VARIANT variant;
variant=m_mscomm.get_Input();//把接收缓冲区里的数据放在variant结构体中,这个结构体里有很多联合体,数据应该放在其中一个中
COleSafeArray colesafearray;//定义一个安全数组,是为了下面处理数据
colesafearray = variant;//把返回值存放在这个安全数组里
byte buf[512];//定义一个字节数据
long len, k;
len = colesafearray.GetOneDimSize();//数据一共有多少字节
for (k = 0; k < len; k++)
  colesafearray.GetElement(&k, buf + k);//把安全数组里的数据转移到字节数组buf中,方便打印
buf[len] = 0;//防止乱码
AfxMessageBox((CString)buf);

四、关闭串口

m_mscomm.put_PortOpen(FALSE);

最新文章

  1. 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
  2. 嵌入式Linux驱动学习之路(十一)按键驱动-中断机制
  3. ORA-20000:ORU-10027:buffer overflow,limit of 2000 bytes.
  4. CF# 334 Lieges of Legendre
  5. distributed 以及 distributional 语义表达的区别
  6. Android 中的异步下载
  7. JAVA中String与StringBuffer的区别
  8. 学习STL-介绍一下STL
  9. 【hdu3065】病毒侵袭持续中
  10. 网络子系统42_ip协议处理函数_数据帧的接收
  11. ASP.NET中的文件上传大小限制的问题
  12. java课程设计-表达式运算(团队博客)
  13. Subscription wildcards(MQTT)
  14. vs不支持通过afxgetmainwnd()获取窗口句柄(转)
  15. oracle基础语句练习
  16. HDU3072 Intelligence System
  17. 使用 Mutex 实现进程间同步
  18. Typora开启行内公式
  19. Linux Namespace : PID
  20. 基于Linux的智能家居的设计(3)

热门文章

  1. Win2008 IIS7日期时间格式更改最简便方法
  2. 夺命雷公狗ThinkPHP项目之----企业网站12之文章添加的实现
  3. mysql 管理工具
  4. [sinatra] Just Do It: Learn Sinatra, Part One Darren Jones
  5. WCF入门教程:WCF基础知识问与答(转)
  6. ID3DXMesh接口 创建自己的立方体网格
  7. linux设备驱动归纳总结(三):2.字符型设备的操作open、close、read、write【转】
  8. jiffies溢出与时间先后比较-time_after,time_before【转】
  9. include指令
  10. 模拟namenode崩溃,使用secondarynamenode恢复