用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

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

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 22:14:35
个地方对控件的属性进行设置:

(1)对话框资源编辑器中。在对话框模板上,用右键单击MSCOMM控件,然后选择Properties…菜单项,最后便可设置各项属性。此处只对以下几处进行改动,其他接受缺省设置:Rthershold:1,InputLen:1,DTREnable:不选,InputMode:1-Binary。

(2)对话框类的OnInitDialog()函数中。下面是以上设置的函数实现:

BOOL CMyCOMMDlg::OnlnitDialog()

{

CDialog::OnlnitDialog();

//此处为应用框架自动生成代码,不予列出

//TODO:Add extra initialization here

m_comm.SetCommPort(1);//使用串口1

m_comm.SetSettings("9600,N,8,1");

//波特率为9600,无奇偶校验,8位数据位,1位停止位

m_comm.SetRThreshold(10); //每接收10个字符就触发1次接收事件

m_comm.SetSThreshold(0); //不触发发送事件

m_comm.SetInputLen(10); //每次读操作从缓冲区中取10个字符

m_comm.SetInputMode(1); //二进制数据传输形式

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 );

SafeArrayUnaccessData (varRcv.parray);

//此时数据已保存在二进制数组byt中,可根据需要进行相关处理

break;

default:

break;

}

}

以上代码中的处理部分可以做成一个单独的函数,在此处调用即可。经过以上代码的处理,接收来的数据已存放在二进制数组byt中,可以根据自己的需要对其进行相关处理,如保存和显示等。

三、硬件接口

单片机与微机之间的硬件接口可以用1片MAX232或ICL232与几个电容即可实现,有许多文献讨论过,此处不再多述。

以上方法经过笔者在实践中的应用,感到非常简洁、方便,具有很强的实用意义。



上一页  [1] [2] 

Tags:

作者:佚名
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:29,234.38000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号