| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2487 人关注过本帖
标题:m_ctrlComm.SetOutput( COleVariant(" "))的用法
只看楼主 加入收藏
菁菁1982
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-4-24
收藏
 问题点数:0 回复次数:0 
m_ctrlComm.SetOutput( COleVariant(" "))的用法

void CSCommTestDlg::OnOnCommMscomm1()
{
char ch;
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;


if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
//Sleep(1500);

for(k=0;k<len;k++)
{
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
}

for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k);
ch=(char)bt;
strtemp.Format("%02X ",bt); //将字符以十六进制方式送入临时变量strtemp存放,注意这里加入一个空隔
m_strEditRXData+=strtemp;

}
if(ch==0x0A)
{m=m+1;
//if(ch==0x0A&&m==2)
//{q=2;}
switch(m)
{case 1:
m_ctrlComm.SetOutput( COleVariant("\x06\xB2\xB4\xB2\x8D\x0A") );
Sleep(400);
m_ctrlComm.SetSettings("4800,n,8,1");
//Sleep(500);
break;
case 2:

m_ctrlComm.SetOutput( COleVariant("\x08\x04\x00\x00\x00\x01\x3A\xF2\x7E ") );[em13]
//m_ctrlComm.SetSettings("4800,n,8,1");

break;
default:;
}}
}

调用同一个函数发送数据,前一帧06 B2 B4 B2 8D 0A就可以发送,但是后一帧(红色部分)为什么就只能发送08 04呢?
请各位高手不吝赐教

搜索更多相关主题的帖子: inp ctrlComm COleVariant SetOutput 用法 
2006-04-29 15:17
快速回复:m_ctrlComm.SetOutput( COleVariant(" "))的用法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.083638 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved