背景:使用RealPort軟件創建的Windows Server 2003 R2有線服務虛擬串口, 串口配置爲COM5,9600波特,8個數據位,無奇偶校驗位,1個停止位,無流量控制, 使用RXTX 2.1-7。RXTX虛擬串口讀取問題
找到端口COM5,使用portId.open方法創建串行端口,並將端口參數和流量控制設置爲與上述設備驅動程序設置相匹配。 我得到serialPort IntupStream並將其包裝在InputStreamReader中,以便我可以控制輸入編碼。 默認編碼當然是Cp1252 我讀過如果您使用8個數據位,編碼應該是ISO-8859-1 aka Latin1。 並正在使用InputStreamReader方法: int c = isr.read(); 在一個while循環中的情況下SerialPort.Event.DATA_AVAILABLE 打印出整數c並將其轉換爲字符((char)c); 問題在於數字和結果字符偏移過高(範圍爲135 - 250) 消息全部以「All Rights Reserved。」結尾),每條消息中的最後一個字符相同。 然而,從人物到人物的轉變並不一致。 已嘗試過其他編碼: UTF8/UTF-8將數字轉換得更高。 ascii/us-ascii也是如此。 Cp1252將數字移動到130-350範圍,但是移動到65533,8222和8240的3個字符除外。 注意:使用InputStreamReader.getEncoding()UTF8和UTF-8是UTF8和ASCII,us-ascii是ASCII 。
我應該嘗試其他編碼嗎?其他人看過這種東西?