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