早教吧作业答案频道 -->其他-->
谁能帮我解释一下这段程序的意思?最好每一句特别是开头那几句有什么作用?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
看了 谁能帮我解释一下这段程序的意...的网友还看了以下:
英语翻译if作为连词,引导条件状语从句,它表示的意思是“假如”“如果”等.在复合句中如果主句用将来 2020-05-13 …
if语句改写成switch语句,【7】请将以下语句改写成switch语句(注意:不允许出现任何形式 2020-05-16 …
宾语从句的if有可以省略的情况么?如题:宾语从句中的if有可以省略的情况么?请不要罗列宾从的介绍! 2020-07-08 …
强调句中if用法用If来表示强调:1)If从句+Idon'tknowwho/what,etc.do 2020-07-09 …
PHP,if、if..else语句用if、if...else语句写出下面两个程序.给出一个年份,判 2020-07-09 …
谁能帮我解释一下这段程序的意思?最好每一句特别是开头那几句有什么作用?VARIANTvariant 2020-07-23 …
C++语句执行顺序问题.If(条件1){switch(表达式1)//1{casea:{}.}if(条 2020-10-30 …
19.下述关于if的语句描述中,错误的是:.A)if语句可以与循环语句嵌套使用B)if语句中不能嵌套 2020-11-23 …
将下两条if语句合并成一条if语句,该怎么合并?以下两条if语句合并成一条if语句为if(ab)pr 2020-11-28 …
if当是否的意思的时候后面跟什么时态例:Ifhe(go)tobeijingtomorrow,I'll 2021-02-01 …