首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

求教串口API发送有关问题

2013-11-15 
求教串口API发送问题最近在用VC6.0写一个串口DLL,本人以前做单片机的,头一次写MFC程序,研究了几天,大部分

求教串口API发送问题
最近在用VC6.0写一个串口DLL,本人以前做单片机的,头一次写MFC程序,研究了几天,大部分功能算是有了,但是有个writefile的问题令我十分头疼。

调用写函数的时候,写数据长度大于14的情况下,每次都是成功14个,剩下的就没发出去,返回成功发送数是14,这种情况有人遇见没?


int WINAPI WriteData(HANDLE hComm,char *cData,unsigned long ulLength,unsigned long * BytesWritten)
{
ComInfoList *p;
BOOL bStat;

p = CheckList(pHead,hComm);
if(p == NULL)
{
*BytesWritten = 0;
return SEND_DATA_FAIL;
}

if(p->hReader == NULL)
{
*BytesWritten = 0;
return SEND_DATA_FAIL;
}

if(p->myoverlapped.hEvent == NULL)
{
*BytesWritten = 0;
return SEND_DATA_FAIL;
}

if(!WriteFile(p->hComm,cData,ulLength,BytesWritten,&p->myoverlapped))
{
if(GetLastError() == ERROR_IO_PENDING)
{
bStat = WaitForSingleObject(p->myoverlapped.hEvent,INFINITE);
switch(bStat)
{
case WAIT_OBJECT_0:
if(!GetOverlappedResult(p->hComm,&p->myoverlapped,BytesWritten,FALSE))
{
return SEND_DATA_FAIL;
}
break;
default:
return SEND_DATA_FAIL;
break;
}
}
else
{
return SEND_DATA_FAIL;
}
}

return 0;
}
串口 api
[解决办法]
有可能是参数类型不对,不要用char,要改成BYTE或unsigned char,用字符有可能把0当成结束符了

热点排行