How Can We Help?
Raccoglitore di dati storici di dati ASCII dalla porta seriale
L’esempio seguente illustra l’applicazione di Historical Data Collector con una macro per registrare stringhe ASCII dalla porta seriale.
I dati vengono registrati automaticamente quando è impostato il bit locale LB1. LB1 è impostato nella macro n°0 quando i dati arrivano sulla COM
È possibile:
-
-
- Cancellare tutti i dati storici
- eseguire il backup dei dati su un disco USB (formattato FAT32) inserito nell’HMI
- Fare uno screenshot della schermata HMI su disco USB
- Vedere i dati provenienti dalla porta COM
- Inviare i dati tramite la porta COM
-
Scaricate questo semplice esempio (progetto HMI): Raccoglitore di dati storici di dati ASCII dalla porta seriale
Dopo aver premuto il pulsante [>USB], si troverà il file .csv sul disco USB
Le 2 macro nell’HMI sono le seguenti
Per l’invio di dati
#include "MacroInit.h"
#include
void Macro_main(IN *p)
{
MarcoInit
//ToDo
unsigned char ch[512];
int lunghezza = 0;
int PortID = 0; //com1:0 com2:1
if(LocalBit[0]) /Stop alla ricezione dei dati durante la modifica dell'ASCII, e poi ricezione dopo il completamento
ritorno;
memset(ch , 0 , 512);
length = GETCHARS(PortID,ch); //Ricezione dei dati
if(length > 2) //La condizione di ricezione dei dati è impostata, il primo byte non viene mostrato, fine all'ultimo byte
{
LocalBit[1] = 1; //Bit impostato per informazioni (datalog, schermata di chiamata, ..)
memset(&LocalWord[100], 0 , 256);
memcpy((unsigned char *)(&LocalWord[100]) , &ch[0], length-0);
CLEARBUFFER(PortID); //svuotamento
}
}
Per i dati di ricezione
#include "MacroInit.h"
#include
// PULSANTE DI INVIO
void Macro_main(IN *p)
{
MarcoInit
//ToDo
unsigned char ch[512];
unsigned char * data = (unsigned char *)(&LocalWord[0]);
int PortID = 0; //com1:0 com2:1
memset(ch , 0 , 512);
ch[0] = ':';
memcpy(&ch[1], data , strlen(data));
ch[strlen(dati) 1] = '!';
PUTCHARS(PortID,ch,strlen(dati) 2);
LocalBit[0] = 0; /Ricezione dei dati
}