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里最后跳出循环就是存的多次循环后的数值了
[解决办法]
这要写貌似略有问题
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);
}
应该补一行~
[解决办法]
串口通信最好自己写个解析串口报文的函数(不知道你的SerRecv函数有没有做过这个功能),把串口报文组装成一个整的报文,然后搞个tmp2,连接字符串。