谁能帮我解释一下这段程序的意思?最好每一句特别是开头那几句有什么作用?
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/07/08 00:37:25
谁能帮我解释一下这段程序的意思?最好每一句特别是开头那几句有什么作用?
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
![谁能帮我解释一下这段程序的意思?最好每一句特别是开头那几句有什么作用?](/uploads/image/z/6827897-65-7.jpg?t=%E8%B0%81%E8%83%BD%E5%B8%AE%E6%88%91%E8%A7%A3%E9%87%8A%E4%B8%80%E4%B8%8B%E8%BF%99%E6%AE%B5%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%84%8F%E6%80%9D%3F%E6%9C%80%E5%A5%BD%E6%AF%8F%E4%B8%80%E5%8F%A5%E7%89%B9%E5%88%AB%E6%98%AF%E5%BC%80%E5%A4%B4%E9%82%A3%E5%87%A0%E5%8F%A5%E6%9C%89%E4%BB%80%E4%B9%88%E4%BD%9C%E7%94%A8%3F)
小弟只有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