Pregunta

Antecedentes: Windows Server 2003 R2, Servicio de cables Puerto de serie virtual creado con software de RealPort, Puerto en serie configurado como COM5, 9600 BAUD, 8 bits de datos, no hay bits de paridad, 1 bit de parada, sin control de flujo, Utilizando rxtox 2.1-7.

Se encuentra el puerto COM5, el puerto serie se crea utilizando el método PORTID.OPEN y los parámetros de puerto y el control de flujo se configuran para que coincidan con la configuración del controlador del dispositivo anterior. Obtengo el número de intuuperes en Serialport y lo envié en un inportStreamReader para poder controlar la codificación de entrada. La codificación predeterminada es, por supuesto, CP1252 He leído que si está utilizando 8 bits de datos, la codificación debe ser ISO-8859-1 aka latin1. y estoy utilizando el método de inportstreamReader: int c= isr.read (); en un bucle de tiempo en el caso serialport.event.data_aveable Imprimiendo el entero C y se proyecta a un carácter ((char) c); El problema es que los números y los caracteres resultantes se desplazan demasiado alto (el rango es de 135 a 250) Todos los mensajes terminan con "Todos los derechos reservados)" y los últimos caracteres en cada mensaje son los mismos. Sin embargo, el turno no es consistente de carácter a carácter. Han probado otras codificaciones: UTF8 / UTF-8 cambia los números aún más altos. al igual que ASCII / US-ASCII. CP1252 cambia los números al rango de 130 - 350, excepto por 3 caracteres que se desplazan a 65533, 8222 y 8240. Nota: El uso de la inputStreamreaLeader.getEncoding () UTF8 y UTF-8 son UTF8 y ASCII y US-ASCII son ASCII.

¿Hay otras codificaciones que debería intentar? ¿Alguien más ha visto este tipo de cosas?

¿Fue útil?

Solución

Estoy haciendo casi exactamente lo mismo.9600 BAUD, 8N1 (8 bits de datos, sin paridad, 1 bit de parada) y no tenemos problemas con el cambio de personajes.Ni siquiera establecemos la codificación, en ninguna parte.

Nuestro flujo de entrada es simplemente de tipo de entrada y se establece con serialport.getInputstream ();

Intente retroceder de la entradaReReReder y solo usar un "entrada de entrada" simple ".La codificación debe hacerse cargo de sí misma.

Espero que eso ayude de alguna manera,

- GMALE

Otros consejos

Tener dos de los puertos de servicio de alambre.I Una vez que publiqué aproximadamente para ser un conflicto entre la configuración de hardware en el TCP al dispositivo en serie llamado Digi.Pude remediar el problema en ese puerto cambiando la configuración de serie COM5 a 9600,7,1,0,0.El cambio de valores se debió al uso de 8 bits de datos vs 7. Esto, por supuesto, significaba que tuve que cambiar los parámetros del puerto en el código para que coincida.Su correcto en el que el lector fue innecesario, sin embargo, me ayudó a llegar a la solución observando el cambio de turno con la codificación, hasta que llegó a mí que menos bits de datos también tendrían el mismo efecto.

Ahora estoy buscando la magia en el segundo puerto.

La segunda configuración del puerto fue de 1200,8,1,0,0 Utilizando 9600, la corriente causó en su mayoría de 0s con unos 128s.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top