Hello, I need to change the communication speed of serial port 2 while executing the program. There is a team that starts communication at 19200 and then changes to 115200.
De momento tengo el segundo puerto serial funcionando a una velocidad fija de 11500 con el siguiente código:
The intention is to pass a speed configuration parameter to the code
#if C
void SerialNative2(B4R::Object* unused)
{
::Serial2.begin(115200);
b4r_main::_serialnative2->wrappedStream = &::Serial2;
}
#EndIf
That instead of always using 115200 to be able to make a call
RunNative("SerialNative2", 19200) or RunNative("SerialNative2", 115200) as needed, including RunNative("SerialNative2", 9600),...
This is possible?
Thank you so much
De momento tengo el segundo puerto serial funcionando a una velocidad fija de 11500 con el siguiente código:
' Variables Globales de Proceso
Sub Process_Globals
Public Serial1 As Serial ' Puerto Serie 1
Public SerialNative2 As Stream ' Puerto Serie 2
Private PS2 As AsyncStreams ' Entrada de Datos del Puerto Seria
'Private wifi As ESP8266WiFi
Private T_1s As Timer ' Timer Cada Segundo
Public T_Principal As Timer ' Timer Bucle Principal
Public CPS_1 As Int ' Ciclos Por Segundo Rutina Principal
End Sub
' Se ejecuta una vez en el Arranque
Private Sub AppStart
' Inicializa el Puerto Serie 1
Serial1.Initialize(9600) ' Puerto de Comunicacion con el Encoder
RunNative("SerialNative2", null) ' Puerto Serie del VF
' Inicializa el Puerto Serie 2
PS2.Initialize(SerialNative2, "VF_Newdata","VF_Error")
' Lanza Tarea Principal
T_Principal.Initialize("T_Principal_Tick",CONFIG.PLC_TC) ' Sobre 185 Ciclos por Segundo
T_Principal.Enabled = True
' Inicializa Comunicacion con el VF
VF.Inicializa_MODBUS
' Inicia el PLC
PLC.Inicia_PLC
End Sub
'
' Entrada de Datos del VF
'
private Sub VF_Newdata (Buffer() As Byte)
' Si Hay datos en el Buffer, los procesa
If Buffer.Length >0 Then
' Gestiona Telegrama
VF.Entro_Telegrama(Buffer)
Log("Entro PS2 = ",Buffer)
End If
End Sub
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'
' Tarea Principal que se Ejecuta Ciclicamente
' Al Principio Se procesan los Flancos de las Teclas, Al Final se Borran los Flancos
Private Sub T_Principal_Tick
' ++++++++++++++++++++++++++++++
' Rutina Principal
' Analiza Los Flancos de las Teclas
TECLADO.Flancos_de_Teclado
' Gestion del Menu
TECLADO.Gestion_del__Menu
' Lee y Escribe los Expansores
IO.Lectura_Escritura_Expansores
' Si el PLC esta en RUN Procesa programa Puerta
If CONFIG.PLC_RUN = True Then
PLC.PLC_0 ' Bloque 0 del PLC
End If
' Cuenta el Numero de Ciclos por Segundo
CPS_1 = CPS_1 + 1
End Sub
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#if C
void SerialNative2(B4R::Object* unused)
{
::Serial2.begin(115200);
b4r_main::_serialnative2->wrappedStream = &::Serial2;
}
#End If
The intention is to pass a speed configuration parameter to the code
#if C
void SerialNative2(B4R::Object* unused)
{
::Serial2.begin(115200);
b4r_main::_serialnative2->wrappedStream = &::Serial2;
}
#EndIf
That instead of always using 115200 to be able to make a call
RunNative("SerialNative2", 19200) or RunNative("SerialNative2", 115200) as needed, including RunNative("SerialNative2", 9600),...
This is possible?
Thank you so much