Puerto Serie - Modo binario

Desde el script se pueden enviar y recibir datos en modo binario.

Para enviar y recibir texto leer "Puerto Serie - Modo texto"

Las fuentes/destinos 402, 403, 404 y 405 usados para acceder al buffer pueden ser compartidos por otra funciones.

Fuente /
Destino
Indice
Valor
R/W
Descripción
Función
5
4
1 -> COM A
write_io Habilita COM N en modo Script (en start, write_io 5,4,1; COM A script)
Serie
402
12
0
write_io Buffer serie envio - Selecciona e inicia
Serie
Envío
405
0
write_io Buffer serie envio - Envia datos binarios cargados con 403/404 
402
13
0 a 199
write_io Buffer serie recepción - Selecciona y posiciona
Serie
Recepción
405
0 o N
write_io Buffer serie recepción - Vacia al buffer (0 = Todo)
405
-
0 a 200
read_io Buffer serie recepción - Cantidad de bytes  (antes seleccionar buffer)
403
1
10^N
-2 -> 0.01
-1 -> 0.1
0 -> 1
1 -> 10
2 -> 100
write_io Buffers - Configura exponente para flotantes
Buffer binario
2
0-> MSB / 1 ->LSB
0-> MSW / 1 ->LSW
write_io Buffers - Configura orden bytes/words
404
1
Numero según formato, exponente y orden
read/write_io Buffers - Entero 8 bits sin signo
2
read/write_io Buffers - Entero 8 bits con signo
3
read/write_io Buffers - Entero 16 bits sin signo
4
read/write_io Buffers - Entero 16 bits con signo
6
read/write_io Buffers - Entero 32 bits con signo
7
read/write_io Buffers - Flotante 32 bits

Ejemplo de envío: Inicialización de puerto y envío de una trama binaria con números en distintos formatos.

start {
  write_io 5,4,1; #Configura COM A en modo script;
};

if a=0 {
  a=1;

  write_io 402,12,1; #Selecciona buffer binario;

  write_io 403,2,0;#MSB;
  write_io 404,4,-3000; #SINT16;
  write_io 404,4,1000; #SINT16;
  write_io 403,2,0;#MSW;
  write_io 404,6,-70000; #SINT32;
  write_io 404,6,70000; #SINT32;
  write_io 403,2,1;#LSW;
  write_io 404,6,-70000; #SINT32;
  write_io 404,6,70000; #SINT32;
  write_io 403,2,1;#LSB;
  write_io 404,4,1000; #SINT16;
  write_io 403,2,0;#MSB;
  write_io 404,4,1000; #SINT16;

  write_io 403,2,0;#MSW;
  write_io 403,1,2;#10^2; #/100;
  write_io 404,7,123456; #FLOAT32;
  write_io 403,1,-2;#10^-2; #*100;
  write_io 404,7,123456; #FLOAT32;
  write_io 403,2,1;#LSW;
  write_io 403,1,2;#10^2; #/100;
  write_io 404,7,123456; #FLOAT32;
  write_io 403,1,-2;#10^-2; #*100;
  write_io 404,7,123456; #FLOAT32;

  write_io 405,12,0; #Envia datos cargados;
};
end;

Por el puerto serie salen estos bytes (se expresan en hexadecimal)

F4 48 03 E8 FF FE EE 90 00 01 11 70 EE 90 FF FE 11 70 00 01 E8 03 03 E8 44 9A 51 EC 4C 3C 61 00 51 EC 44 9A 61 00 4B 3C

Ejemplo de recepción: Inicialización de puerto y recibe tramas de 39 bytes de largo con valores en distintos formato. Los datos que se envian se expresan a continuación en hexadecimal.

F4 48 03 E8 FF FE EE 90 00 01 11 70 EE 90 FF FE 11 70 00 01 E8 03 03 E8 44 9A 51 EC 4C 3C 61 00 51 EC 44 9A 61 00 4B 3C

12 34 56 78 90

Lo datos recibidos se guarda en distintas variables del script. Y esos son los resultados

B=-3000
C=1000
D=-70000
E=70000
F=-70000
G=70000
H=1000
I=1000
J=123456
K=123456
L=123456
M=123456

start {
  write_io 5,4,1; #Configura COM A en modo script;
};
write_io 402,13,1; #Selecciona buffer binario;

read_io 405,A,0; #Lee cuantos bytes hay en el buffer;
if A>39{
  write_io 403,2,0;#MSB/MSW;
  write_io 402,13,1; read_io 404,B,4; #SINT16;
  write_io 402,13,3; read_io 404,C,4; #SINT16;
  write_io 402,13,5; read_io 404,D,6; #SINT32;
  write_io 402,13,9; read_io 404,E,6; #SINT32;
  write_io 403,2,1;#LSB/LSW;
  write_io 402,13,13; read_io 404,F,6; #SINT32;
  write_io 402,13,17; read_io 404,G,6; #SINT32;
  write_io 402,13,21; read_io 404,H,4; #SINT16;
  write_io 403,2,0;#MSB/MSW;
  write_io 402,13,23; read_io 404,I,4; #SINT16;
  write_io 402,13,25; write_io 403,1,2; read_io 404,J,7; #10^2 /100 FLOAT32;
  write_io 402,13,29; write_io 403,1,-2; read_io 404,K,7; #10^-2 *100 FLOAT32;
  write_io 403,2,1;#LSB/LSW;
  write_io 402,13,33; write_io 403,1,2; read_io 404,L,7; #10^2 /100 FLOAT32;
  write_io 402,13,37; write_io 403,1,-2; read_io 404,M,7; #10^-2 *100 FLOAT32;
  write_io 405,13,0; #Vacia todo el buffer de recepcion;
};
end;

2024-10-14