早教吧作业答案频道 -->其他-->
谁能帮我解释一下这段程序的意思?最好每一句特别是开头那几句有什么作用?VARIANTvariantinp;COleSafeArraysafearrayinp;longk=0;intlen;BYTErxdata[2048];CStringstrtemp;if(mctrlComm.GetCommEvent()){case2:{variantinp=
题目详情
谁能帮我解释一下这段程序的意思?最好每一句特别是开头那几句有什么作用?
VARIANT variant_inp;
COleSafeArray safearray_inp;
long k=0;
int len;
BYTE rxdata[2048];
CString strtemp;
if(m_ctrlComm.GetCommEvent())
{
case 2:
{
variant_inp=m_ctrlComm.GetInput();
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize();
for(k=0;k
VARIANT variant_inp;
COleSafeArray safearray_inp;
long k=0;
int len;
BYTE rxdata[2048];
CString strtemp;
if(m_ctrlComm.GetCommEvent())
{
case 2:
{
variant_inp=m_ctrlComm.GetInput();
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize();
for(k=0;k
▼优质解答
答案和解析
小弟只有10年VC++经验,帮你解读一下哦:满意的话麻烦给我分.
如下代码是为了实现:接收串口过来的数据!首先初始化一个泛型类型接受容器,接收串口接口发来的数据,然后显示在界面上的edit控件上!
VARIANT variant_inp; 用VARIANT 泛型变量类型 定义一个数组变量variant_inp; 泛型就是任何类型都可以放进去的意思.作为缓冲池使用很适合.
COleSafeArray safearray_inp; 用COleSafeArray用OLE安全数据容器类 定义一个对象名字是 safearray inp 因为VARIANT虽然可以放任何类型数据到这个数组中,但该类型没有丰富的处理成员函数,说白了他是结构体不是类,所以 需要做个转换,转为COleSafeArray类型的数组类即可.他具有非常丰富的成员函数.
那么,你会问为什么不直接让safearray_inp=m_ctrlComm.GetInput(); 读缓冲区,而要经过一个中间变量呢?
variant_inp=m_ctrlComm.GetInput(); 读缓冲区
safearray_inp=variant_inp; VARIANT转换成COleSafeArray型变量
VARIANT和COleSafeArray 是什么关系呢?
原因是:
这中间有调用不同的重载=运算符,m_ctrlComm.GetInput(); 的数据可以转化为variant_inp,有默认的转化方式,而safearray_inp=variant_inp则是另一个转化方式,如果直接转,可能数据不对.
VARIANT和COleSafeArray 一个是结构体,一个是类,各自的数据构造不一样.
long k=0; 初始化一个长整型变量 k=0;
int len; 定义长度len,整数型.
BYTE rxdata[2048]; 定义接受数据的数组,2k大小,2048字节.为BYTE类型,也即unsigned char类型.
CString strtemp; 定义一个CString类型的字符串strtemp;
if(m_ctrlComm.GetCommEvent()) 如果控制通信对象m_ctlComm有get的事件发生,
{
------------------------
这里应该加switch(ret) ,将上面getcommevent赋值给ret.
case 2:事件值为2表示接收缓冲区内有字符
{
variant_inp=m_ctrlComm.GetInput(); 控制通信器对象得到输入数据流.如果GetCommEvent返回2,说明有字符到达了,接收缓冲区内有字符
safearray_inp=variant_inp; 将variant inp转换为COleSafeArray 类型,付给safearry inp.因为COleSafeArray提供了丰富的函数处理.符合我们的需要.
len=safearray_inp.GetOneDimSize(); 获取输入安全数组的长度len
for(k=0;k
如下代码是为了实现:接收串口过来的数据!首先初始化一个泛型类型接受容器,接收串口接口发来的数据,然后显示在界面上的edit控件上!
VARIANT variant_inp; 用VARIANT 泛型变量类型 定义一个数组变量variant_inp; 泛型就是任何类型都可以放进去的意思.作为缓冲池使用很适合.
COleSafeArray safearray_inp; 用COleSafeArray用OLE安全数据容器类 定义一个对象名字是 safearray inp 因为VARIANT虽然可以放任何类型数据到这个数组中,但该类型没有丰富的处理成员函数,说白了他是结构体不是类,所以 需要做个转换,转为COleSafeArray类型的数组类即可.他具有非常丰富的成员函数.
那么,你会问为什么不直接让safearray_inp=m_ctrlComm.GetInput(); 读缓冲区,而要经过一个中间变量呢?
variant_inp=m_ctrlComm.GetInput(); 读缓冲区
safearray_inp=variant_inp; VARIANT转换成COleSafeArray型变量
VARIANT和COleSafeArray 是什么关系呢?
原因是:
这中间有调用不同的重载=运算符,m_ctrlComm.GetInput(); 的数据可以转化为variant_inp,有默认的转化方式,而safearray_inp=variant_inp则是另一个转化方式,如果直接转,可能数据不对.
VARIANT和COleSafeArray 一个是结构体,一个是类,各自的数据构造不一样.
long k=0; 初始化一个长整型变量 k=0;
int len; 定义长度len,整数型.
BYTE rxdata[2048]; 定义接受数据的数组,2k大小,2048字节.为BYTE类型,也即unsigned char类型.
CString strtemp; 定义一个CString类型的字符串strtemp;
if(m_ctrlComm.GetCommEvent()) 如果控制通信对象m_ctlComm有get的事件发生,
{
------------------------
这里应该加switch(ret) ,将上面getcommevent赋值给ret.
case 2:事件值为2表示接收缓冲区内有字符
{
variant_inp=m_ctrlComm.GetInput(); 控制通信器对象得到输入数据流.如果GetCommEvent返回2,说明有字符到达了,接收缓冲区内有字符
safearray_inp=variant_inp; 将variant inp转换为COleSafeArray 类型,付给safearry inp.因为COleSafeArray提供了丰富的函数处理.符合我们的需要.
len=safearray_inp.GetOneDimSize(); 获取输入安全数组的长度len
for(k=0;k
看了 谁能帮我解释一下这段程序的意...的网友还看了以下:
面朝大海,春暖花开.骑向雪山,后面接句什么好呢 2020-05-13 …
“有什么好奇怪的”是什么问句?疑问还是反问?有什么好奇怪的,言下之意就是没什么好奇怪的.我认为是反 2020-05-14 …
小孩满月酒上主人怎么说我是一个不善于表达人的人,小孩办满月酒时在酒桌上举杯敬所有宾客时说句什么好呢 2020-05-14 …
有一句话是怎么说的,叫刚送走一个什么,又来了一个什么?意思好像就是刚走了一个坏的,又来一个更坏的. 2020-06-13 …
想和朋友一起畅饮的好诗句?突然很怀念以前和朋友喝酒的情景,又想和他们一起畅饮一番,有什么好的诗句, 2020-07-01 …
追求卓越品质后接句什么好a?追求卓越品质后接句什么好?字数相同,谐音。多来几句,以便选择. 2020-07-16 …
后起之秀后面跟一句什么好 2020-10-30 …
1、以“生命”为题,写一句立意好,创意独特,韵味绵长,语言精练的睿语2、请以“假如生活中没有文学”为 2020-11-28 …
问一句名言,好像是说什么的大路不是一天走成的表达的意思就是说做什么事都要靠毅力坚持完成谁知道这句问一 2020-11-30 …
孤芳自赏婲独凄下句接什么好下一句什么好拜托了各位孤芳自赏婲独凄下句接什么好 2020-12-18 …