VC 运用MSComm控件串口通信
来源:互联网 发布:手机推荐 知乎 2017 编辑:程序博客网 时间:2024/05/18 03:32
在VC++的平台下,串口通信一般存在两种形式:1.直接通过API函数设计通信的参数等,这种方式的好处在于与实际的结合比较的灵活,缺点是编码的工作量比较大,要了解通信的各个环节的话就必须弄懂每个API函数的具体意思。2.使用VC++提供的串行通信控件MSComm,这种方法编码简单易懂,但是不够灵活。
本文就主要介绍第二种方法。
首先,选择菜单-->添加到工程-->选择Component and Controls Gallery文件夹-->选定Registered ActiveX Controls文件夹,选定Microsoft Communications Control, version 6.0控件,然后将该控件从工具箱拖到对话框里面。
其次,设置MSComm控件的属性,下面主要介绍MSComm的几个属性:
m_Comm.SetCommPort(1);//设定的串口号,1表示选择的串口号是1
m_Comm.SetInBufferSize(1024);//设置接受缓冲区的大小
m_Comm.SetOutBufferSize(1024);//设置发送缓冲区的大小
m_Comm.SetInputMode(1); //0是以文本的形式取出数据,1是以2进制的形式取出数据
m_Comm.GetInput();//先预读缓冲区以清除残留数据
m_Comm.SetSettings("9600,N,8,1"); //波特率9600,无校验,8个数据位,1个停止位
m_Comm.SetInputLen(0); //设置当前接收区数据长度为0, 设置成从缓冲区读取全部内容
m_Comm.SetRThreshold(1);//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
if( !m_Comm.GetPortOpen())
{
m_Comm.SetPortOpen(TRUE);//打开串口
}
最后在OnComm事件里面添加接受数据的具体代码,下面是本人在曾经在项目中的一段代码,仅供参考:
VARIANT Rec_Data;
char Rec_Data_Array[2048];
if (m_Comm.GetCommEvent() == 2) //事件值为2表示接收缓冲区内有字符
{
Rec_Data = m_Comm.GetInput();//从缓冲区取出数据
int Data_Len = Rec_Data.parray->rgsabound->cElements; //取出一维的数据个数
memcpy(Rec_Data_Array, (char*) Rec_Data.parray->pvData, Data_Len); //拷贝出数据
Rec_Data_Array[Data_Len] = NULL;
CString str1;
CString str2;
for(int i = 0; i<Data_Len ; i++)
{
str2.Format("%02x",Rec_Data_Array[i]);//16进制的形式接受数据
str1 = str2.Right(2);//取右边两位数据(注释:一般来说是不用取右边两位数据的,但是项目中实际测试还是要取右边2位数
据才能得到真正的结果,这行代码仅供参考,可以不要)
this->m_receive = this->m_receive + str1;//m_receive就为接受的数据
}
}
- VC 运用MSComm控件串口通信
- VC控件MSComm编写串口通信程序
- VC控件MSComm编写串口通信程序
- VC控件MSComm编写串口通信程序(转)
- VC控件MSComm编写串口通信程序(转)
- 关于VC串口通信不能添加MSCOMM控件的解决办法
- vc++下MSComm控件的串口通信方法
- [MSComm]串口通信有关的MSComm控件
- MFC串口通信控件mscomm
- 基于Mscomm控件的串口通信编程
- C#串口通信:MSComm控件使用详解
- C#串口通信:MSComm控件使用详解
- C#串口通信:MSComm控件使用详解
- C#串口通信:MSComm控件使用详解
- vc2010串口通信(使用mscomm控件)
- 串口通信-MSComm控件使用详解
- vc2010串口通信(使用mscomm控件)
- 使用MSComm控件进行多串口通信
- bitset
- 使用IDMIF来扩展 hardware inventory
- 全自动清除系统垃圾的BAT文件.
- 最让人伤心的84句话
- GPS固定数据输出语句($GPGGA)
- VC 运用MSComm控件串口通信
- 发现一个好地方:豆瓣
- 中小IT企业如何留住80后技术人才
- 电脑高手常用的5个按钮
- 我在深圳的求职经验
- 杂谈关于在C++紧急项目中配备资浅人员
- access数据库的连接
- 1.1 - 第一章:PHP基础 - 语法
- Spring管理Struts No action instance for path /login could be created