為解決遠端除錯串口設備需求,開發一款串口資料雙向透傳至 TCP/IP 網路的中介程式。核心架構:
客戶端 ←→ (CTcpSocket) 轉接程式 (CSerialPort) ←→ 串口設備
支援多組連線對應,透過 config.ini 設定埠號、鮑率、日誌等參數。
基於開源 CSerialPort 類別修改:
OnCommunication(WPARAM, LPARAM) 回調處理接收資料核心管理結構 CItem 封裝單一轉發通道:
class CItem {
public:
CTcpSocket m_sockDateListen, m_sockDateMain; // 資料通道
CTcpSocket m_sockDebugListen, m_sockDebugMain; // 除錯通道
CSerialPort m_serialPort;
int m_iDataPort, m_iDebugPort, m_iSerialPort, m_iBaud;
CString m_strLogFileName;
BOOL m_logFlag, m_dataSockInUse, m_debugSockInUse;
// 統計計數器與錯誤記錄...
};
採用結構化日誌便於事後分析:
[時間 方向 資料長度] 16位元組十六進制 [字元顯示]
圖一 程式介面顯示轉發條目
圖二 日誌結構示意
[item1]
TcpDataPort=9990
TcpDebugPort=9991
SerialPort=1
Baud=9600
LogFile=item1.txt
LogOn=On
Enabled=0
開發環境:VC++ 2005 測試通過。完整原始碼含 CSerialPort、CTcpSocket、CItem 三大核心類別實作。