Gambas3: SerialPort1.Speed No Acepta Configuracion


Objetivo: Gambas3: SerialPort1.Speed No Acepta Configuracion
Hola: Quiero pedir ayuda para resolver un problema con la configuración del SerialPort1 relativo a su velociad en bps.

Tengo Ubuntu 18.04 64 bits, Gambas3. Mi proyecto ya tiene definido el gb.net. El programa no manda ningún mensaje de error, pero al enviar datos por el puerto serial (/dev/ttyS0, con sus permisos correspondientes) el receptor no responde. Así que viendo las señales con el osciloscopio y esperando observar la emisión de un solo
byte, la señal debería tener una duración de 1.04 ms aproximadamente, para 9600 bps. Sin embargo la señal que se emite es de 2.1 ms ( correspondiendo a una velocidad de aproximadamente 5000 bps) y esa es la razón por la que el receptor no recibe. Probé a 19200 bps y sigue resultando una señal de 2.1 ms. Así que algo debo estar haciendo mal. Esta es la configuración del puerto:

SerialPort1.PortName = "/dev/ttyS0"
SerialPort1.DataBits = "8" 'SerialPort.Bits8
SerialPort1.FlowControl = SerialPort.none
SerialPort1.Parity = SerialPort.None
SerialPort1.Speed = "9600"
SerialPort1.StopBits = "1" 'SerialPort.Bits1
'Sp.Open

Por favor si alguien tiene la amabilidad de darme una idea de cómo lo puedo solucionar, se lo agradeceré mucho.

Nota: En gambas2 esto no sucedía.

Perfil MP  
Objetivo: Re: Gambas3: SerialPort1.Speed No Acepta Configuracion
AlfredoSC escribió:  
Hola: Quiero pedir ayuda para resolver un problema con la configuración del SerialPort1 relativo a su velociad en bps....
Por favor si alguien tiene la amabilidad de darme una idea de cómo lo puedo solucionar, se lo agradeceré mucho.
Nota: En gambas2 esto no sucedía.

Lo siento, pero no te puedo ayudar con ese tema, peor me viene a la mente que hay algo de estas cosas en el foro.
Saludos.

Perfil MP  
Objetivo: Re: Gambas3: SerialPort1.Speed No Acepta Configuracion
tincho escribió:  
AlfredoSC escribió:  
Hola: Quiero pedir ayuda para resolver un problema con la configuración del SerialPort1 relativo a su velociad en bps....
Por favor si alguien tiene la amabilidad de darme una idea de cómo lo puedo solucionar, se lo agradeceré mucho.
Nota: En gambas2 esto no sucedía.

Lo siento, pero no te puedo ayudar con ese tema, peor me viene a la mente que hay algo de estas cosas en el foro.
Saludos.


Después de leer algunos de los temas del foro y hacer varios cambios, me puse a analizar el oscilograma: Yo envío como prueba un solo byte, por facilidad el "7" es decir 0x37. En el osciloscopio aparecen 2 bytes seguidos, el 0x37 y el 0x0A, por eso era la duración de 2.1 ms. De dónde viene esa 0x0A (?) me pregunté. Entonces en mi sentencia puse un ; al final, así

Print #SerialPort1, dato;

y se envío únicamente el 0x37 ("7") con duración de 1 ms. Así que el tema está solucionado y ese ; al final es muy importante. Sin embargo la literatura de SerialPort debería considerar describir, que si no se usa ; Gambas3 adicionará un LF (0x0A) por default, aunque empiezo a sospechar que es obvio....De todos modos Gracias por leer el tema y saludos.

Perfil MP  
Objetivo: Re: Gambas3: SerialPort1.Speed No Acepta Configuracion
Hola

Me alegra que lo hayas podido solucionar. Aunque en el pasado he utilizado bastante el puerto serie en mis programas (para comunicarme con transceptores de radio), no lograba entender tu problema sin saber cómo estabas enviando y leyendo el puerto. Aún así, me llamó la atención que le pases una cadena a los parámetros del puerto en lugar de enteros, que es lo que almacenan las constantes que se deberían usar (SerialPort.BitsX). Me imagino que gambas hará la conversión internamente.

En cualquier caso, enhorabuena y bienvenido, estamos aquí para ayudar siempre que podamos.

Saludos

Perfil MP  
Objetivo: Re: Gambas3: SerialPort1.Speed No Acepta Configuracion
AlfredoSC escribió:  
De dónde viene esa 0x0A (?) me pregunté. Entonces en mi sentencia puse un ; al final, así

Print #SerialPort1, dato;

y se envío únicamente el 0x37

La función "Print" escribe un flujo de datos de manera formateada, ponendo en fin el valor &0A (0x0A). ...típicamente una cadena de caracteres.

Para evitar este formateo, tienes que usar la función Write: http://gambaswiki.org/wiki/lang/write?nh

Perfil MP  
Objetivo: Re: Gambas3: SerialPort1.Speed No Acepta Configuracion
vuott escribió:  
AlfredoSC escribió:  
De dónde viene esa 0x0A (?) me pregunté. Entonces en mi sentencia puse un ; al final, así

Print #SerialPort1, dato;

y se envío únicamente el 0x37

La función "Print" escribe un flujo de datos de manera formateada, ponendo en fin el valor &0A (0x0A). ...típicamente una cadena de caracteres.

Para evitar este formateo, tienes que usar la función Write: http://gambaswiki.org/wiki/lang/write?nh


Habiendo consultado el link que envías, encontré este Warning: When writing a string, the length of the string is sent before the string contents. "Cuando se escribe un string (cadena), la longitud del string es enviada antes del contenido del string", lo cual nos lleva al envío de 2 bytes; la longitud y la cadena, por lo que Write podría llevarme otra vez al problema original, que opinan?

Perfil MP  
Objetivo: Re: Gambas3: SerialPort1.Speed No Acepta Configuracion
AlfredoSC escribió:  
"Cuando se escribe un string (cadena), la longitud del string es enviada antes del contenido del string", lo cual nos lleva al envío de 2 bytes; la longitud y la cadena, por lo que Write podría llevarme otra vez al problema original, que opinan?


Si especificas la longitud de la cadena a continuación de dicha cadena, no. Sólo se envía la cadena.

WRITE [ # Stream , ] String [ , Length ]

Lo que pasa es que es opcional, en caso de no especificar la longitud, entonces sí que se envía ese dato. Para obtener la longitud de la cadena previamente al envío puedes hacer esto:

WRITE #stream, cadena_envio, String.Len(cadena_envio)


Es recomendable el uso de las funciones de cadena String porque se tienen en cuenta los caracteres UTF8 especiales, que como sabes, ocupan 2 bytes en lugar de 1. De otro modo, la cadena enviada podría quedar truncada al final si contiene algún carácter acentuado o especial.

Saludos

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4426s (PHP: -80% SQL: 180%)
Consultas SQL: 45 - Debug off - GZIP Activado