您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

在VC++中用ActiveX控件实现与单片机的串行通信

时间:2007-1-20栏目:电子通信论文

如果需要发送二进制数据,可将数据作如下处理。具体代码如下:

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

上一页  [1] [2] [3] [4] 下一页

下页更精彩:1 2 3 4 下一页