【发布时间】:2010-07-12 15:34:34
【问题描述】:
背景:Windows Server 2003 R2,使用RealPort软件创建的Wire Service虚拟串口, 串口配置为 COM5,9600 波特,8 个数据位,无奇偶校验位,1 个停止位,无流量控制, 使用 RXTX 2.1-7。
找到 COM5 端口,使用 portId.open 方法创建串行端口,并设置端口参数和流控制以匹配上面的设备驱动程序设置。 我得到了 serialPort IntupStream 并将其包装在 InputStreamReader 中,这样我就可以控制输入编码。 默认编码当然是cp1252 我读过,如果您使用 8 个数据位,则编码应该是 ISO-8859-1 aka Latin1。 并且正在使用 InputStreamReader 方法: int c = isr.read(); 在 SerialPort.Event.DATA_AVAILABLE 情况下的 while 循环中 打印出整数 c 并将其转换为字符 ((char)c); 问题是数字和生成的字符移动得太高(范围是 135 - 250) 消息均以“保留所有权利。)”结尾,并且每条消息中的最后一个字符相同。 然而,从一个角色到另一个角色的转变并不一致。 尝试过其他编码: UTF8/UTF-8 将数字移动得更高。 ascii/us-ascii 也是如此。 Cp1252 将数字移至 130 - 350 范围内,但 3 个字符移至 65533、8222 和 8240。 注意:使用 InputStreamReader.getEncoding() UTF8 和 UTF-8 是 UTF8 而 ascii 和 us-ascii 是 ASCII。
还有其他我应该尝试的编码吗?其他人见过这种东西吗?
【问题讨论】:
标签: java rxtx virtual-serial-port