求教串口API发送问题
最近在用VC6.0写一个串口DLL,本人以前做单片机的,头一次写MFC程序,研究了几天,大部分功能算是有了,但是有个writefile的问题令我十分头疼。
调用写函数的时候,写数据长度大于14的情况下,每次都是成功14个,剩下的就没发出去,返回成功发送数是14,这种情况有人遇见没?
串口 api
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;
}
[解决办法]
有可能是参数类型不对,不要用char,要改成BYTE或unsigned char,用字符有可能把0当成结束符了