首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

VC++循环基础有关问题

2013-04-09 
VC++循环基础问题unsigned char *p,i,tmp1[100],tmp2[100]for(i0i300i++){nRetSerRecv(atol((const

VC++循环基础问题
unsigned char *p,i,tmp1[100],tmp2[100];
for(i=0;i<300;i++){
nRet=SerRecv(atol((const char *)p),tmp1,850);
//pedt->SetWindowText((const char *)tmp1);

}
pedt->SetWindowText((const char *)tmp1);
我这里要循环调用SerRecv函数多次,然后把多次调用这个函数得到的tmp1值一起显示在文本框怎么处理?
[解决办法]
循环调用SerRecv函数多次, 这倒也没什么大的关系
首先要确定函数内部的实现,其次是参数的传递。
问题是SetWindowText函数在循环里被调用,程序运行完后,你只能看到到for循环最后一次的值了。

“然后把多次调用这个函数得到的tmp1值一起显示在文本框怎么处理?”
不知道你的业务逻辑是什么需求,所以按照字面的理解:
1,可不可以换个控件?
2,可不可以在for循环里把tmp1值存储到临时变量里,最后一起用文本框以多行方式显示。
[解决办法]


CString str;
TCHAR *p,i,tmp1[100],tmp2[100];
for(i=0;i<300;i++){
nRet=SerRecv(atol((const char *)p),tmp1,850);
                str.Append(tmp1);
//pedt->SetWindowText((const char *)tmp1);

}

要注意宽字符问题
[解决办法]
每次接收到的数据长度知道么,如果知道,那就在temp1后面加上一个帧长的变量,然后每次循环,都在temp1后面添加,这样temp1里最后跳出循环就是存的多次循环后的数值了

[解决办法]
引用:
C/C++ code?12345678CString str;    TCHAR *p,i,tmp1[100],tmp2[100];    for(i=0;i<300;i++){                nRet=SerRecv(atol((const char *)p),tmp1,850);                str.Append(tmp1);    ……

这要写貌似略有问题

CString str;
    TCHAR *p,i,tmp1[100],tmp2[100];
    for(i=0;i<300;i++)
{        
        nRet=SerRecv(atol((const char *)p),tmp1,850);
        temp1[nRet]='\0';
                str.Append(tmp1);
}

应该补一行~
[解决办法]
引用:
引用:每次接收到的数据长度知道么,如果知道,那就在temp1后面加上一个帧长的变量,然后每次循环,都在temp1后面添加,这样temp1里最后跳出循环就是存的多次循环后的数值了知道。这是做的串口通信,每次只接受到一个数据。不过你说的不太懂,我对C不熟悉


串口通信最好自己写个解析串口报文的函数(不知道你的SerRecv函数有没有做过这个功能),把串口报文组装成一个整的报文,然后搞个tmp2,连接字符串。

热点排行