|
@@ -33,6 +33,9 @@ BOOL CSynSerial::OpenSerialPort(IN CONST BYTE & byCommPort, IN CONST DWORD & dwB
|
|
|
{
|
|
|
// 打开串口失败;
|
|
|
DWORD dwError = GetLastError();
|
|
|
+#ifdef __CONSOLE__
|
|
|
+ printf("CreateFile Error=%d\n", dwError);
|
|
|
+#endif
|
|
|
return FALSE;
|
|
|
}
|
|
|
|
|
@@ -44,6 +47,9 @@ BOOL CSynSerial::OpenSerialPort(IN CONST BYTE & byCommPort, IN CONST DWORD & dwB
|
|
|
CloseHandle(m_hSerialPort);
|
|
|
m_hSerialPort = INVALID_HANDLE_VALUE;
|
|
|
DWORD dwError = GetLastError();
|
|
|
+#ifdef __CONSOLE__
|
|
|
+ printf("SetupComm Error=%d\n", dwError);
|
|
|
+#endif
|
|
|
return FALSE;
|
|
|
}
|
|
|
|
|
@@ -54,6 +60,9 @@ BOOL CSynSerial::OpenSerialPort(IN CONST BYTE & byCommPort, IN CONST DWORD & dwB
|
|
|
CloseHandle(m_hSerialPort);
|
|
|
m_hSerialPort = INVALID_HANDLE_VALUE;
|
|
|
DWORD dwError = GetLastError();
|
|
|
+#ifdef __CONSOLE__
|
|
|
+ printf("PurgeComm Error=%d\n", dwError);
|
|
|
+#endif
|
|
|
return FALSE;
|
|
|
}
|
|
|
|
|
@@ -65,6 +74,9 @@ BOOL CSynSerial::OpenSerialPort(IN CONST BYTE & byCommPort, IN CONST DWORD & dwB
|
|
|
CloseHandle(m_hSerialPort);
|
|
|
m_hSerialPort = INVALID_HANDLE_VALUE;
|
|
|
DWORD dwError = GetLastError();
|
|
|
+#ifdef __CONSOLE__
|
|
|
+ printf("GetCommState Error=%d\n", dwError);
|
|
|
+#endif
|
|
|
return FALSE;
|
|
|
}
|
|
|
|
|
@@ -88,6 +100,9 @@ BOOL CSynSerial::OpenSerialPort(IN CONST BYTE & byCommPort, IN CONST DWORD & dwB
|
|
|
CloseHandle(m_hSerialPort);
|
|
|
m_hSerialPort = INVALID_HANDLE_VALUE;
|
|
|
DWORD dwError = GetLastError();
|
|
|
+#ifdef __CONSOLE__
|
|
|
+ printf("SetCommState Error=%d\n", dwError);
|
|
|
+#endif
|
|
|
return FALSE;
|
|
|
}
|
|
|
|
|
@@ -98,6 +113,9 @@ BOOL CSynSerial::OpenSerialPort(IN CONST BYTE & byCommPort, IN CONST DWORD & dwB
|
|
|
CloseHandle(m_hSerialPort);
|
|
|
m_hSerialPort = INVALID_HANDLE_VALUE;
|
|
|
DWORD dwError = GetLastError();
|
|
|
+#ifdef __CONSOLE__
|
|
|
+ printf("GetCommTimeouts Error=%d\n", dwError);
|
|
|
+#endif
|
|
|
return FALSE;
|
|
|
}
|
|
|
|
|
@@ -115,6 +133,9 @@ BOOL CSynSerial::OpenSerialPort(IN CONST BYTE & byCommPort, IN CONST DWORD & dwB
|
|
|
CloseHandle(m_hSerialPort);
|
|
|
m_hSerialPort = INVALID_HANDLE_VALUE;
|
|
|
DWORD dwError = GetLastError();
|
|
|
+#ifdef __CONSOLE__
|
|
|
+ printf("SetCommTimeouts Error=%d\n", dwError);
|
|
|
+#endif
|
|
|
return FALSE;
|
|
|
}
|
|
|
|
|
@@ -263,6 +284,9 @@ DWORD CSynSerial::WriteComm(IN BYTE * pWirteBuf, IN CONST INT32 nWriteSize)
|
|
|
|
|
|
if (pWirteBuf == NULL || !::AfxIsValidAddress(pWirteBuf, nWriteSize, FALSE))
|
|
|
{
|
|
|
+#ifdef __CONSOLE__
|
|
|
+ printf("WriteComm Error=AfxIsValidAddress\n");
|
|
|
+#endif
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -278,17 +302,28 @@ DWORD CSynSerial::WriteComm(IN BYTE * pWirteBuf, IN CONST INT32 nWriteSize)
|
|
|
DWORD dwError = GetLastError();
|
|
|
if ( ERROR_IO_PENDING == GetLastError() )
|
|
|
{
|
|
|
- while(!GetOverlappedResult(m_hSerialPort, &m_wrOverlapped, &dwBytesWritten, FALSE)){
|
|
|
+ while(!GetOverlappedResult(m_hSerialPort, &m_wrOverlapped, &dwBytesWritten, FALSE))
|
|
|
+ {
|
|
|
dwError = GetLastError();
|
|
|
if ( ERROR_IO_PENDING == dwError || dwError == ERROR_IO_INCOMPLETE ) {
|
|
|
continue;
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
+#ifdef __CONSOLE__
|
|
|
+ printf("GetOverlappedResult Error=%d\n", dwError);
|
|
|
+#endif
|
|
|
ClearCommError(m_hSerialPort, &dwError, NULL);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+#ifdef __CONSOLE__
|
|
|
+ printf("WriteFile Error=%d\n", dwError);
|
|
|
+#endif
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 返回写入字节数;
|
|
@@ -302,6 +337,9 @@ DWORD CSynSerial::ReadComm(IN BYTE *pReadBuf, IN CONST DWORD& dwReadSize, WORD t
|
|
|
|
|
|
if (pReadBuf == NULL || !::AfxIsValidAddress(pReadBuf, dwReadSize, FALSE))
|
|
|
{
|
|
|
+#ifdef __CONSOLE__
|
|
|
+ printf("ReadComm Error=AfxIsValidAddress\n");
|
|
|
+#endif
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -315,10 +353,17 @@ DWORD CSynSerial::ReadComm(IN BYTE *pReadBuf, IN CONST DWORD& dwReadSize, WORD t
|
|
|
if ( GetLastError() == ERROR_IO_PENDING ) {
|
|
|
while(!GetOverlappedResult(m_hSerialPort, &m_wrOverlapped, &dwRealRead, FALSE)){
|
|
|
dwError = GetLastError();
|
|
|
- printf("\t 码值=%d, 长度=%d, 内容=%s \n\n", dwError, dwRealRead, pReadBuf);
|
|
|
+#ifdef __CONSOLE__
|
|
|
+ if ( dwError != ERROR_IO_INCOMPLETE)
|
|
|
+ printf("\t ErroCode=%d, Len=%d, Buffer=%s \n\n", dwError, dwRealRead, pReadBuf);
|
|
|
+#endif
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+#ifdef __CONSOLE__
|
|
|
+ printf("Len=%d, Buffer=%s \n\n", dwRealRead, pReadBuf);
|
|
|
+#endif
|
|
|
+
|
|
|
return dwRealRead;
|
|
|
}
|