我从网络上收到的数据,我把它从一串BYTE转换后存到了一个CString aaa里面,并且用AfxMessageBox弹出来显示,例如:收到+81.59547564,在Debug的时候一切正常,CString aaa里面是+81.59547564,且AfxMessageBox弹出+81.59547564
但是,程序实际运行的时候AfxMessageBox弹出空对话框,关闭后紧接着弹出547564,关闭后紧接着弹出+81.59,程序里我明明只调用了一次AfxMessageBox阿,而且怎还自动分段了,还是倒过来的-_-
但是,程序实际运行的时候AfxMessageBox弹出空对话框,关闭后紧接着弹出547564,关闭后紧接着弹出+81.59,程序里我明明只调用了一次AfxMessageBox阿,而且怎还自动分段了,还是倒过来的-_-
解决方案 »
- CListCtrl收不到VK_RETURN键值的键盘消息,如何解决?
- 关于文件读取的问题
- 将控件的caption改成中文后,test时出现乱码,VC6.0环境。谢谢!!
- IDL文件中的结构体不能生成GUID
- 帮忙看一下这个代码解析那个战神2的login页面有什么问题好吗?username和password全部取不到!!!
- 请问模式对话框能不能对父窗口进行操作
- cdecl,stdcall,pascal三种动态库的区别?
- ***如何在DLL中使用ADO?***
- 大侠们请进,别客气!
- "无法对DAO/Jetdb引擎进行初始化"错误!在线等30分钟,谢谢!
- 如何动态改变菜单中的文字
- 如何用程序代吗模拟菜单操作?
网络收取数据不一定是一次收到,也许分了几次
当你输出buffer中的内容时需要先确认这一次的数据全部收到了
再显示的。
在Debug下好用说明收数据和速度有关,可以Sleep一下试试。
我同意Caps77的看法,仔细查查是不是真的只使用了一次MessageBox.
显示
BEGIN_EVENTSINK_MAP(CMyDialog,CDialog)
ON_EVENT(CMyDialog,ID_COMM_CTRL,1,OnCommMsg,VTS_NONE)
END_EVENTSINK_MAP()
然后在对话框初始化中开串口
m_Com.Create(NULL,WS_CHILD|WS_VISIBLE,CRect(0,0,10,10),this,ID_COMM_CTRL);
......
m_Com.SetInputMode(1);
m_Com.SetRThreshold(1);
m_Com.SetSettings("9600,n,8,1");
......
然后事件处理
CMyDialog::OnCommMsg()
{
CString recv;
用m_Com.getinput()取了数据,转换并存到recv里
最后跳出对话框
AfxMessageBox(recv);
}
然后如果串口有收到数据就出现上面我说的那种现象了-_-
不存在AfxMessageBox循环多遍阿,OnCommMsg根本没有循环
如果说数据分段收到的话为什么最后的内容先跳出来?-_-