Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Gambas3: SerialPort1.Speed No Acepta Configuracion

Gambas3: SerialPort1.Speed No Acepta Configuracion
Artículo
Responder citando    Descargar mensaje  
Mensaje 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.



 
AlfredoSC - Ver perfil del usuario Enviar mensaje privado  
AlfredoSC [ Viernes, 07 Febrero 2020, 00:49 ]
 


Gambas3: SerialPort1.Speed No Acepta Configuracion
Comentarios
Responder citando    Descargar mensaje  
Mensaje 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.



 
tincho - Ver perfil del usuario Enviar mensaje privado  
tincho [ Viernes, 07 Febrero 2020, 20:34 ]
Responder citando    Descargar mensaje  
Mensaje 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.



 
AlfredoSC - Ver perfil del usuario Enviar mensaje privado  
AlfredoSC [ Sabado, 08 Febrero 2020, 23:45 ]
Responder citando    Descargar mensaje  
Mensaje 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



 
jguardon - Ver perfil del usuario Enviar mensaje privado  
jguardon [ Domingo, 09 Febrero 2020, 12:10 ]
Responder citando    Descargar mensaje  
Mensaje 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



 
vuott - Ver perfil del usuario Enviar mensaje privado  
vuott [ Domingo, 09 Febrero 2020, 14:59 ]
Responder citando    Descargar mensaje  
Mensaje 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?



 
AlfredoSC - Ver perfil del usuario Enviar mensaje privado  
AlfredoSC [ Domingo, 09 Febrero 2020, 17:30 ]
Responder citando    Descargar mensaje  
Mensaje 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



 
jguardon - Ver perfil del usuario Enviar mensaje privado  
jguardon [ Domingo, 09 Febrero 2020, 20:55 ]
Mostrar mensajes anteriores:    
 
Publicar nuevo tema  Responder al tema  Página 1 de 1
 
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 



 

cron