Bläddra i källkod

【软件版本】
V
【模块名称】

【问题原因】
宽字节处理。
【修改描述】

【测试结果】

sat23 3 år sedan
förälder
incheckning
adffbc1438
3 ändrade filer med 21 tillägg och 21 borttagningar
  1. 10 10
      TCLCommand/TCLCommand/Serial.cpp
  2. 10 10
      TCLCommand/TCLCommand/utils.cpp
  3. 1 1
      TCLCommand/TCLCommand/utils.h

+ 10 - 10
TCLCommand/TCLCommand/Serial.cpp

@@ -131,7 +131,7 @@ DWORD CBaseSerial::Read(LPVOID Buffer, DWORD dwBufferLength, DWORD dwWaitTime /*
     if (!Stat.cbInQue)
         return 0; // 缓冲区无数据
 #endif
-    utils::_dprintf("缓冲区数据量:%ld", Stat.cbInQue);
+    utils::_dprintf(_T("缓冲区数据量:%ld"), Stat.cbInQue);
 
     unsigned long uReadLength = 0;
     // dwBufferLength = dwBufferLength > Stat.cbInQue ? Stat.cbInQue : dwBufferLength;//会越界;
@@ -142,9 +142,9 @@ DWORD CBaseSerial::Read(LPVOID Buffer, DWORD dwBufferLength, DWORD dwWaitTime /*
                 dwError = ::GetLastError();
                 if ( dwError == ERROR_IO_PENDING ) {
                     Sleep(50);
-                    utils::_dprintf("读等待:%ld", dwError);
+                    utils::_dprintf(_T("读等待:%ld"), dwError);
                 } else if ( dwError == ERROR_SUCCESS || dwError == ERROR_IO_INCOMPLETE ) {
-                    utils::_dprintf("读完成:%ld,%ld,%ld", dwError, uReadLength,_ReadOverlapped.InternalHigh);
+                    utils::_dprintf(_T("读完成:%ld,%ld,%ld"), dwError, uReadLength,_ReadOverlapped.InternalHigh);
                     // 奇葩:_ReadOverlapped并不能马上出长度,在超时后才会刷新出来(不知是否与Win平台有关);
                     if ( _ReadOverlapped.InternalHigh )
                         uReadLength = _ReadOverlapped.InternalHigh;
@@ -152,7 +152,7 @@ DWORD CBaseSerial::Read(LPVOID Buffer, DWORD dwBufferLength, DWORD dwWaitTime /*
                         uReadLength = Stat.cbInQue;
                     break;
                 } else {
-                    utils::_dprintf("读错误:%ld", dwError);
+                    utils::_dprintf(_T("读错误:%ld"), dwError);
                     uReadLength = 0;
                     break;
                 }
@@ -185,14 +185,14 @@ DWORD CBaseSerial::Write(LPVOID Buffer, DWORD dwBufferLength)
             while (!GetOverlappedResult(_hCommHandle, &_WriteOverlapped, &uWriteLength, FALSE)) {
                 dwError = GetLastError();
                 if (ERROR_IO_PENDING == dwError) {
-                    utils::_dprintf("写等待");
+                    utils::_dprintf(_T("写等待"));
                     continue;
                 } else if (dwError == ERROR_SUCCESS || dwError == ERROR_IO_INCOMPLETE){
                     uWriteLength = _WriteOverlapped.InternalHigh;
-                    utils::_dprintf("写完成:%ld", dwError);
+                    utils::_dprintf(_T("写完成:%ld"), dwError);
                     break;
                 } else {
-                    utils::_dprintf("写出错:%ld",dwError);
+                    utils::_dprintf(_T("写出错:%ld"),dwError);
                     uWriteLength = 0;
                     ClearCommError(_hCommHandle, &dwError, NULL);
                     break;
@@ -258,14 +258,14 @@ DWORD CBaseSerial::ReadSync(LPVOID Buffer, DWORD dwBufferLength)
 #else
     if ( ::ClearCommError(_hCommHandle, &dwError, &Stat) && dwError > 0 ) {
         ::PurgeComm(_hCommHandle, PURGE_RXABORT | PURGE_RXCLEAR);    // 清空输入缓冲区(PURGE_RXCLEAR)
-        utils::_dprintf("读出错: ClearCommError出错");
+        utils::_dprintf(_T("读出错: ClearCommError出错"));
     }
 
     DWORD uReadLength = 0;
     if ( !::ReadFile(_hCommHandle, Buffer, dwBufferLength, &uReadLength, NULL) )
     {
         DWORD dwError = GetLastError();
-        utils::_dprintf("读出错:%ld", dwError);
+        utils::_dprintf(_T("读出错:%ld"), dwError);
     }
 #endif
     return uReadLength;
@@ -284,7 +284,7 @@ DWORD CBaseSerial::WriteSync(LPVOID Buffer, DWORD dwBufferLength)
     if ( !::WriteFile(_hCommHandle, Buffer, dwBufferLength, &uWriteLength, NULL) )
     {
         DWORD dwError = GetLastError();
-        utils::_dprintf("写出错:%ld", dwError);
+        utils::_dprintf(_T("写出错:%ld"), dwError);
     }
 
     return uWriteLength;

+ 10 - 10
TCLCommand/TCLCommand/utils.cpp

@@ -20,17 +20,17 @@ namespace utils
         return str;
     }
 
-    std::string _dprintf(CHAR* pszStr, ...)
+    TString _dprintf(TCHAR* pszStr, ...)
     {
         const int LOGLEN = 1024*100;
-        static char pszData[LOGLEN] = {0};
+        static TCHAR pszData[LOGLEN] = {0};
         memset(pszData, 0, LOGLEN);
 #if _MSC_VER >= 1200 && _MSC_VER < 1500
         sprintf(pszData, _T("[%s %s]\t"), _T("TCL"), CTime::GetCurrentTime().Format(_T("%H:%M:%S")));
 #elif _MSC_VER >= 1500
         _stprintf_s(pszData, LOGLEN, _T("[%s %s]\t"), _T("TCL"), CTime::GetCurrentTime().Format(_T("%H:%M:%S")).GetString());
 #endif
-        int len = strlen(pszData);
+        int len = _tcslen(pszData)*sizeof(TCHAR);
         va_list args;
         va_start(args, pszStr);
 #if _MSC_VER >= 1200 && _MSC_VER < 1500
@@ -39,15 +39,15 @@ namespace utils
         _vsntprintf_s(pszData + len, LOGLEN - len, _TRUNCATE, pszStr, args);
 #endif
         va_end(args);
-        if (pszData[strlen(pszData) - 1] != '\n')
+        if (pszData[_tcslen(pszData)*sizeof(TCHAR) - 1] != '\n')
 #if _MSC_VER >= 1200 && _MSC_VER < 1500
             strcat(pszData, "\n");
 #elif _MSC_VER >= 1500
-            strcat_s(pszData, LOGLEN, "\n");
+            _tcscat_s(pszData, LOGLEN, _T("\n"));
 #endif
-        OutputDebugStringA(pszData);
+        OutputDebugString(pszData);
 
-        return std::string(pszData);
+        return TString(pszData);
     }
 
     std::string ByteToChars(byte b)
@@ -57,7 +57,7 @@ namespace utils
 #if _MSC_VER >= 1200 && _MSC_VER < 1500
         sprintf(szhex, "%02X", b);
 #elif _MSC_VER >= 1500
-        _stprintf_s(szhex, "%02X", b);
+        sprintf_s(szhex, "%02X", b);
 #endif
 
         return std::string(szhex);
@@ -103,7 +103,7 @@ namespace utils
 #if _MSC_VER >= 1200 && _MSC_VER < 1500
             sprintf(szhex, "%02X", pbuffer[i]);
 #elif _MSC_VER >= 1500
-            _stprintf_s(szhex, "%02X", pbuffer[i]);
+            sprintf_s(szhex, "%02X", pbuffer[i]);
 #endif
             hex.append(szhex);
         }
@@ -121,7 +121,7 @@ namespace utils
 #if _MSC_VER >= 1200 && _MSC_VER < 1500
             sprintf(szhex, "%02X%c", pbuffer[i], chSpace);
 #elif _MSC_VER >= 1500
-            _stprintf_s(szhex, "%02X%c", pbuffer[i], chSpace);
+            sprintf_s(szhex, "%02X%c", pbuffer[i], chSpace);
 #endif
             hex.append(szhex);
         }

+ 1 - 1
TCLCommand/TCLCommand/utils.h

@@ -2,7 +2,7 @@
 namespace utils
 {
     std::string& trim(std::string& str);
-    std::string _dprintf(CHAR* pszStr, ...);
+    TString _dprintf(TCHAR* pszStr, ...);
     std::string ByteToChars(byte b);
     BOOL IsValidString(LPCTSTR lpszString);
     unsigned char TwoHexCharToInteger(char high, char low);