请在原程序上帮我改改 谢谢int port=1,baud=9600; HANDLE m_hcom;
DCB dcb;
COMMTIMEOUTS timeouts;
char cFileName[10];
memset(cFileName,0,10);
wsprintf(cFileName,"COM%d:",port);
m_hcom = CreateFile(cFileName,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,NULL); SetupComm(m_hcom,1024,1024);
PurgeComm(m_hcom, PURGE_TXCLEAR|PURGE_RXCLEAR);
//timeouts
GetCommTimeouts(m_hcom,&timeouts);
timeouts.ReadIntervalTimeout = MAXDWORD;
timeouts.ReadTotalTimeoutConstant = 1000;
timeouts.ReadTotalTimeoutMultiplier = 1000;
timeouts.WriteTotalTimeoutConstant = 1000;
timeouts.WriteTotalTimeoutMultiplier = 1000;
SetCommTimeouts(m_hcom,&timeouts);
//dcb
GetCommState(m_hcom,&dcb);
dcb.BaudRate = baud;
dcb.ByteSize = 8;
dcb.Parity = ODDPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(m_hcom,&dcb); //返回错误串
DWORD dwError;
char chError[50];
memset(chError,0,50);
bool fread=FALSE;
OVERLAPPED overlapped;
char buffer[1024];
memset(buffer,0,1024);
unsigned long nLength;
while(!fread)
{
if(!ReadFile(m_hcom,buffer,1024,&nLength,&overlapped))
{
dwError = GetLastError();
wsprintf(chError,"ReadFile Error:%d\n",dwError);
return 0;
}
}
DCB dcb;
COMMTIMEOUTS timeouts;
char cFileName[10];
memset(cFileName,0,10);
wsprintf(cFileName,"COM%d:",port);
m_hcom = CreateFile(cFileName,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,NULL); SetupComm(m_hcom,1024,1024);
PurgeComm(m_hcom, PURGE_TXCLEAR|PURGE_RXCLEAR);
//timeouts
GetCommTimeouts(m_hcom,&timeouts);
timeouts.ReadIntervalTimeout = MAXDWORD;
timeouts.ReadTotalTimeoutConstant = 1000;
timeouts.ReadTotalTimeoutMultiplier = 1000;
timeouts.WriteTotalTimeoutConstant = 1000;
timeouts.WriteTotalTimeoutMultiplier = 1000;
SetCommTimeouts(m_hcom,&timeouts);
//dcb
GetCommState(m_hcom,&dcb);
dcb.BaudRate = baud;
dcb.ByteSize = 8;
dcb.Parity = ODDPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(m_hcom,&dcb); //返回错误串
DWORD dwError;
char chError[50];
memset(chError,0,50);
bool fread=FALSE;
OVERLAPPED overlapped;
char buffer[1024];
memset(buffer,0,1024);
unsigned long nLength;
while(!fread)
{
if(!ReadFile(m_hcom,buffer,1024,&nLength,&overlapped))
{
dwError = GetLastError();
wsprintf(chError,"ReadFile Error:%d\n",dwError);
return 0;
}
}
memset(cFileName,0,10);
wsprintf(cFileName,"COM%d:",port);
m_hcom = CreateFile(cFileName,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,NULL);
///////////////////////////////////////////////////////////m_hcom = CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,NULL);或者
char cFileName[10];
memset(cFileName,0,10);
wsprintf(cFileName,"COM%d",port);//去掉:号
m_hcom = CreateFile(cFileName,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,NULL);
改为
sprintf(cFileName,"COM%d:",port);还有看你的port的值是多少,是不是非法的