在VC++中用MSCOMM控件实现与单片机的串行通信
时间:11-22
来源:互联网
点击:
二进制数据传输形式
m_comm.SetPortOpen(TRUE); //打开串口
return TRUE;//return TRUE unless you set the focus to a control
}
4.发送二进制数据
如果需要发送二进制数据,可将数据作如下处理。具体代码如下:
CByteArray bytOutArr;
bytOutArr.Add(0x0); //给数组赋值
bytOutArr.Add(0x1);
bytOutArr.Add(0x2);
bytOutArr.Add(0x3);
bytOutArr.Add(0x4);
COleVariant varOut;
varOut=COleVariant(bytOutArr); //将数据转换为变体数据类型
m_comm.SetOutput (varOut); //发送数据
5.接收二进制数据
当需要接收大量的数据时,最好采用事件驱动方式进行编程。具体步骤如下:
(1)响应OnComm事件。在对话框资源编程器中,双击对话框模板上的MSCOMM控件,在弹出的对话框中填入您所希望的事件响应函数名,此处将其命名为OnCommMscomm1()。
(2)在事件响应函数中接收和处理数据。接收来的数据为变体数据,所以需要做一些处理,具体代码如下:
void CMyCOMMDlg::OnCommMscomm1()
{
COleVariant varRcv;
CByteArray byt;
int i;
long num;
switch (m_comm.GetCommEvent())
{
cass 1://数据发送事件
break;
case 2://数据接收事件
varRcv=m_comm.GetInput();
varRcv.ChangeType (VT_ARRAY |VT_UI1);
BYTE HUGEP *pbstr;
HRESULT hr;
hr=SafeArrayAccessData (varRcv.parray,(void HUGEP*FAR*)pbstr);//获取安全数组指针
if (FAILED (hr)){
AfxMessageBox("获取数组指针失败!");
break;}
num=0;
hr=SafeArrayGetUBound (varRcv.parray,1,num);//获取数组上界
if (FAILED (hr)){
AfxMessageBox("获取数组上界失败!");
break;}
for(i=0;i
byt.Add(pbstr [i]);
SafeArrayUnaccessData (varRcv.parray);
//此时数据已保存在二进制数组byt中,可根据需要进行相关处理
break;
default:
break;
}
}
以上代码中的处理部分可以做成一个单独的函数,在此处调用即可。经过以上代码的处理,接收来的数据已存放在二进制数组byt中,可以根据自己的需要对其进行相关处理,如保存和显示等。
三、硬件接口
单片机与微机之间的硬件接口可以用1片MAX232或ICL232与几个电容即可实现,有许多文献讨论过,此处不再多述。
m_comm.SetPortOpen(TRUE);
return
}
4.发送二进制数据
如果需要发送二进制数据,可将数据作如下处理。具体代码如下:
CByteArray
bytOutArr.Add(0x0);
bytOutArr.Add(0x1);
bytOutArr.Add(0x2);
bytOutArr.Add(0x3);
bytOutArr.Add(0x4);
COleVariant
varOut=COleVariant(bytOutArr);
m_comm.SetOutput
5.接收二进制数据
当需要接收大量的数据时,最好采用事件驱动方式进行编程。具体步骤如下:
(1)响应OnComm事件。在对话框资源编程器中,双击对话框模板上的MSCOMM控件,在弹出的对话框中填入您所希望的事件响应函数名,此处将其命名为OnCommMscomm1()。
(2)在事件响应函数中接收和处理数据。接收来的数据为变体数据,所以需要做一些处理,具体代码如下:
void
{
COleVariant
CByteArray
int
long
switch
{
cass
break;
case
varRcv=m_comm.GetInput();
varRcv.ChangeType
BYTE
HRESULT
hr=SafeArrayAccessData
if
AfxMessageBox("获取数组指针失败!");
break;}
num=0;
hr=SafeArrayGetUBound
if
AfxMessageBox("获取数组上界失败!");
break;}
for(i=0;i
byt.Add(pbstr
SafeArrayUnaccessData
//此时数据已保存在二进制数组byt中,可根据需要进行相关处理
break;
default:
break;
}
}
以上代码中的处理部分可以做成一个单独的函数,在此处调用即可。经过以上代码的处理,接收来的数据已存放在二进制数组byt中,可以根据自己的需要对其进行相关处理,如保存和显示等。
三、硬件接口
单片机与微机之间的硬件接口可以用1片MAX232或ICL232与几个电容即可实现,有许多文献讨论过,此处不再多述。
VC++MSCOMM控件单片机串行通 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)