中国开发网: 论坛: 程序员情感CBD: 贴子 117339
haitao
我这样读串口有问题吗?
//读取串口,最多maxlen个字符
int CComPort::GetMaxStr(char *buf,int maxlen)
{
#ifdef WIN32
DWORD rch = maxlen;
if(!ReadFile(idComDev, buf,rch,&rch,NULL))
{
m_errstr=L"error ReadFile";
return rch;
}
else
{
//*len = rch;
return rch;
}
#else
int rch = maxlen;
rch = read(idComDev,buf,rch);
return rch;
#endif
}

//阻塞方式读取len个字节,或直到超时timeout(ms)
bool CComPort::GetStrTimeout(char *buf,int *len,int timeout)
{
int p=0,r,l=*len;
const int tms=200;
//timeout=timeout / 200;
while (l>0 && timeout>0)
{
r=GetMaxStr(buf+p,l);
p+=r;
l-=r;
if (l<=0)
{
break;
}
timeout-=tms;
SleepMS(tms);
}
*len=p;
return l==0;
}
我的blog:http://szhaitao.blog.hexun.com & http://www.hoolee.com/user/haitao
--以上均为泛泛之谈--
不尽牛人滚滚来,无边硬伤纷纷现 人在江湖(出来的),哪能不挨刀(总归是要的)
网络对话,歧义纷生;你以为明白了对方的话,其实呢?

您所在的IP暂时不能使用低版本的QQ,请到:http://im.qq.com/下载安装最新版的QQ,感谢您对QQ的支持和使用

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录