VC COM口读据 内存泄漏 状态函数读不了???

dzq138 2011-03-30 11:34:55
环境:Visual studio 2008 + Device Emulator (windows mobile 6) 并装Fake GPS
已确认COM4是可用的,通过其它软件也验证这一点.


HANDLE m_hComm; //头声明这句全局变量,在头文件中

DCB commParam;//过程变量
commParam.DCBlength = sizeof(DCB);

//打开COM口
m_hComm = CreateFile( L"\\COM4:",
GENERIC_READ ,//允许读和写 不需要写
0, //独占方式(共享模式)
NULL,
OPEN_EXISTING, //打开而不是创建(创建方式)
0, // //0, 同步方式 重叠方式
NULL
);
if (m_hComm == INVALID_HANDLE_VALUE)
{
return false;
}
//前面打开端口是成功的!
//以下两个设置不成功!
if (!GetCommState(m_hComm,&commParam))
{//必定不成功!!!!!!!!!!!!!
return false;
}
GetCommTimeouts 返回false;
GetCommState 返回false

只好强行设置
SetupComm(m_hComm,1024,1024); //返回true
SetCommTimeouts
SetCommState
这三个函数都能成功!
在读数据的时候想先得到缓冲区的值也不成功
ClearCommError(ceSeries->m_hComm,&dwReadErrors,&cmState); //返回FALSE
只好强行读
ReadFile(m_hComm, readBuf, 2048, &actualReadLen,0); //能读到数据.
但每运行十秒左右就有一个4096b的内存泄漏!!!
在真机上运行也是样的结果.困扰了我好久的一个问题.
如果有其它代替读COM的方法,也可.


两台电脑中都试过同样的情况.

如果有同样环境的朋友,可以建一个工程,
就测试CreateFile打开端口,再读GetCommState是否成功???

望能在百忙之中帮忙看看原因.十分感谢!
...全文
120 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dzq138 2011-04-05
  • 打赏
  • 举报
回复
在真机上也是一样的.读不到...
4096b还是在不停的少......真见鬼.......
beyondma 2011-03-30
  • 打赏
  • 举报
回复
返回false;
GetCommState 返回false
只好强行设置
SetupComm(m_hComm,1024,1024); //返回true
SetCommTimeouts
SetCommState 这三个函数都能成功!
在读数据的时候想先得到缓冲区的值也不成功
ClearCommError(ceSeries->m_hComm,&dwReadErrors,&cmState); //返回FALSE
只好强行读
ReadFile(m_hComm, readBuf, 2048, &actualReadLen,0); //能读到数据.
但每运行十秒左右就有一个4096b的内存泄漏!!!
在真机上运行也是样的结果.困扰了我好久的一个问题.
如果有其它代替读COM的方法,也可.
这个太怪了,在真机上试过吗?

7,660

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧