在程序中,用串口API接收数据,能正确读取出数据,但用memcpy把接收到的BYTE类型的数据recvbuff拷贝到另一个BYTE变量pBuff中后,pBuff中的数据不对了查了一天多,目前仍未找出问题所在,求高手帮忙
拷贝部分的代码如下: BYTE *pBuff = new BYTE[wCount+1];
memset(pBuff,'\0',wCount+1);
memcpy(pBuff,recvbuff,wCount+1);
拷贝部分的代码如下: BYTE *pBuff = new BYTE[wCount+1];
memset(pBuff,'\0',wCount+1);
memcpy(pBuff,recvbuff,wCount+1);
解决方案 »
- 退出按钮 和 OnDestory()问题
- 求 使凹图形的凹边变为凸边的算法 急!!!
- 有没有可以用C# 或者C++调用的MSN API 资料和函数库呀?
- ClassView不能显示自定义基类的需函数
- 怎么样用onTimer让位图DC内不同坐标显示出来?
- 请教如何编程锁定windows系统?
- 程序执行后怎么没显示矩形呀?(内详)
- 请教关于CTreeCtrl的二个问题!请大侠帮帮忙呀!:-(~~
- 在picture控件中我怎么通过控件的窗口指针得到鼠标右键点击的消息和位置,如下所说:
- 关于OnContextmenu与OnRButtonDown的问题
- 工具栏上添加 “报警”图标求助!!!!
- 画图放大缩小问题
应该是memcpy(pBuff,recvbuff,wCount);吧,你是直接看pBuff的值不对吗?那么memcpy时,recvbuff的值正确吗?代码能再全一点吗
recvbuff接收的数据是正确的,(在一个UI线程中实现串口API接收和发送数据的)调试的时候,发现pBuff的内存数据也是改变了的,
但是我把通过消息数据传回主线程的时候,得到的数据,查看内存是对了,但显示,解析就与UI线程中的显示不一样,主线程中只能 显示一部分
可能出现的问题的是地方是:BYTE转换成CString的问题,目前没有明白道理呵呵……谢谢大家的帮助……
我不知道原因是什么?因为在接收的线程中,将recvbuff(一个BYTE数组)转换成CString后,显示的内容是对的,但在主线程中,对于传递回的BYTE指针,用相同的方法时,不仅遇到0x00不会显示,而且能显示的个数很少……
memset(pBuff,'\0',wCount+1);
memcpy(pBuff,recvbuff,wCount+1);///字符串结束符也要占位置的
memcpy(pBuff,recvbuff,wCount);试试,可能是recvbuff中的内容太多,导致pBuff没有结束字符,也有可能是你的recvbuff没有结束字符