Wie können wir helfen?
Historischer Datensammler für ASCII-Daten von der seriellen Schnittstelle
Das folgende Beispiel veranschaulicht die Anwendung des Historical Data Collector mit einem Makro zur Aufzeichnung von ASCII-Zeichenfolgen über die serielle Schnittstelle.
Die Daten werden automatisch aufgezeichnet, wenn das lokale Bit LB1 gesetzt ist. LB1 wird im Makro Nr. 0 gesetzt, wenn Daten auf COM
Sie können:
-
-
- Alle historischen Daten löschen
- daten auf einem USB-Datenträger (FAT32 formatiert) sichern, der an das HMI angeschlossen ist
- Screenshot des HMI-Bildschirms auf USB-Diskette
- Sehen, dass die Daten über den COM-Port kommen
- Senden von Daten über den COM-Port
-
Laden Sie dieses einfache Beispiel (HMI-Projekt) herunter: Historischer Datensammler von ASCII-Daten von der seriellen Schnittstelle

Nach Drücken der Taste [>USB] finden Sie die .csv-Datei auf der USB-Diskette

Die 2 Makros in der HMI lauten wie folgt
Für das Senden von Daten
#include "MacroInit.h"
#include
void Macro_main(IN *p)
{
MarcoInit
//ToDo
unsigned char ch[512];
int Länge = 0;
int PortID = 0; //com1:0 com2:1
if(LocalBit[0]) //Beim Ändern von ASCII den Datenempfang stoppen und nach Fertigstellung wieder empfangen
zurückgeben;
memset(ch , 0 , 512);
length = GETCHARS(PortID,ch); //Empfang von Daten
if(length > 2) //Die Empfangsbedingung der Daten ist gesetzt, das erste Byte wird nicht angezeigt und das letzte Byte
{
LocalBit[1] = 1; //Bit gesetzt für Informationen (Datenprotokoll, Aufrufbildschirm, ..)
memset(&LocalWord[100], 0 , 256);
memcpy((unsigned char *)(&LocalWord[100]) , &ch[0], length-0);
CLEARBUFFER(PortID);/Entleeren
}
}
Für den Empfang von Daten
#include "MacroInit.h"
#include
// TASTE SENDEN
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(data) 1] = '!';
PUTCHARS(PortID,ch,strlen(data) 2);
LocalBit[0] = 0; //Empfang von Daten
}