visual c++ MSComm 串口控件程序开发
2013-05-17 19:29
246 查看
在计算机中,数据通信主要有两种:一种是串口通信,每个字符的二进制位按位排列进行传输,速度慢,但传输距离较远。鼠标口和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妙
一、串口通信原理
串行端口是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妙
相关文章推荐
- 串口数据visual c++ MSComm 串口控件程序开发
- VC控件MSComm编写串口通信程序(转)
- VC控件MSComm编写串口通信程序
- VC控件MSComm编写串口通信程序
- 今天想用MSComm控件编个串口程序,在Gallery文件夹中发现没有Microsoft Communications Control 。
- VS2008下用MFC 的MSComm控件编写串口程序
- VS2008下用MFC 的MSComm控件编写串口程序
- 串口控件MSCOMM的注册方法(使用MSCOMM串口控件程序的运行问题)
- VC控件MSComm编写串口通信程序(转)
- VS2008下用MFC 的MSComm控件编写串口程序
- VC中基于文档(SDI/MDI)程序中能直接用串口MSComm通讯控件吗?
- VS2008下用MFC 的MSComm控件编写串口程序
- VS2008下用MFC 的MSComm控件编写串口程序
- VC控件MSComm编写串口通信程序
- VC控件MSComm编写串口通信程序(转)
- 串口控件MSCOMM的注册方法(使用MSCOMM串口控件程序的发布问题)
- 在基于单文档(SDI)程序中应用MSCOMM串口通讯控件
- 用C#开发串口控制程序
- iPhone开发入门(4)--- 程序画面与控件调整
- 串口程序开发日志:关于DialogBox和CreateDialog的区别