背景:使用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 。
我应该尝试其他编码吗?其他人看过这种东西?