我的串口程序 BuildCommDCB("COM1:115200,n,8,1",&dcb);使用了这一句以后,出现
以下问题
Unhandled exception in callsu.exe (KERNEL32.DLL): 0xC0000005:Access Violation
在2k 和xp下调试均没有次错误,但是在98和me下有。
hCommDev=CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
if(hCommDev!=(HANDLE)-1)
{ flagcom=TRUE;
dcb.BaudRate=9600;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=ONESTOPBIT;
// BuildCommDCB("COM1:115200,n,8,1",&dcb);
SetCommState(hCommDev,&dcb); //以上为初始化串口
COMMTIMEOUTS CommTimeOuts;
CommTimeOuts.ReadIntervalTimeout=MAXDWORD;
CommTimeOuts.ReadTotalTimeoutMultiplier=0;
CommTimeOuts.ReadTotalTimeoutConstant=0;
CommTimeOuts.WriteTotalTimeoutMultiplier=0;
CommTimeOuts.WriteTotalTimeoutConstant=1000;
SetCommTimeouts(hCommDev,&CommTimeOuts);
PurgeComm(hCommDev,PURGE_TXCLEAR);
PurgeComm(hCommDev,PURGE_RXCLEAR); //设置读写串口超时时间
bReturn=WriteFile(hCommDev,strOutMsg,strlen(strOutMsg),&dwBytesWritten,NULL);
if(!bReturn)flagmodem=FALSE;
else flagmodem=TRUE;
}
else flagcom=FALSE;
98系统下确实有问题,最好别这样调试。
章哥,看来你这超难问题没人会了