User manual

Schritt-für-Schritt-Anleitung
16. Jetzt muss die Funktion, die die Ansteuerung der LED übernimmt, erzeugt werden.
/* Funktion für die Steuerung der LED */
Handle_Led()
{
new iTxStatus; // Zwischenspeicher für den Verbindungsstatus
iTxStatus = rM2M_TxGetStatus(); // Akuellen Verbindungsstatus vom System lesen
if(iTxStatus & RM2M_TX_ACTIVE) // Wenn gerade eine GPRS-Verbindung besteht ->
{
Led_Off(); // LED ausschalten
Led_On(DEFAULT_COLOR); // LED einschalten (Default LED-Farbe)
}
/* Wenn gerade ein Verbindungsaufbau durchgeführt wird oder die Wartezeit bis zum Retry läuft -> */
else if(iTxStatus & (RM2M_TX_STARTED|RM2M_TX_RETRY))
{
Led_Off(); // LED ausschalten
Led_Flicker(0, DEFAULT_COLOR); // LED flackert dauerhaft (Default LED-Farbe)
}
else if( iTxStatus & RM2M_TX_FAILED) // Wenn der letzte Verbindungsaufbau fehlgeschlagen ist ->
{
Led_Off(); // LED ausschalten
Led_Blink(0, 0x00FF0000); // LED blinkt dauerhaft rot
}
else // Andernfalls ->
Led_Off(); // LED ausschalten
}
17. Die nächste Funktion, die generiert werden muss, übernimmt die Behandlung des Übertragungsintervalls.
/* Funktion für die Erzeugung des Übertragungsintervalls */
Handle_Transmission()
{
iTxTimer--; // Zähler mit den sec. bis zur nächsten Übertragung reduzieren
if(iTxTimer <= 0) // Wenn der Zähler abgelaufen ist ->
{
rM2M_TxStart(); // Eine Verbindung zum Server herstellen
iTxTimer = iTxItv; // Zählervar. auf akt. Übertragungsintv. [sec.] zurücksetzen
}
}
18. Danach ist die Funktion zu entwerfen, die die Aufzeichnung der Daten übernimmt.
/* Funktion für die Aufzeichnung der Daten */
Handle_Record()
{
/* Zwischenspeicher in dem der zu speichernde Datensatz zusammengesetzt wird. */
new aRecData{HISTDATA_SIZE};
iRecTimer--; // Zähler mit sec. bis zur nächsten Aufzeichnung reduzieren
if(iRecTimer <= 0) // Wenn der Zähler abgelaufen ist ->
{
new aSysValues[TIoTbox_SysValue]; // Zwischenspeicher für die int. Messwerte (VBat, VUsb, Temp)
IoTbox_GetSysValues(aSysValues); // Auslesen der aktuellen int. Messwerte (VBat, VUsb, Temp)
/* Zusammensetzen des zu speichernden Datensatzes im Zwischenspeicher "aRecData"
- Das erste Byte(Postion 0 im Array "aRecData") wird auf 0 gesetzt damit der Server den Datensatz,
wie beim Entwurf des Connectors angegeben, beim Empfangen in Messdatenkanal 0 kopiert
- Auf Postion 1-2 wird die Batteriespannung (VBat) kopiert. Datentyp: s16
- Auf Postion 3-4 wird die USB-Ladespannung (VUsb) kopiert. Datentyp: s16
- Auf Postion 5-6 wird die Temperatur (Temp) kopiert. Datentyp: s16 */
aRecData{0} = 0; // "Split-tag"
rM2M_Pack(aRecData, 1, aSysValues.VBat, RM2M_PACK_BE + RM2M_PACK_S16);
rM2M_Pack(aRecData, 3, aSysValues.VUsb, RM2M_PACK_BE + RM2M_PACK_S16);
rM2M_Pack(aRecData, 5, aSysValues.Temp, RM2M_PACK_BE + RM2M_PACK_S16);
/* Zusammengesetzten Datensatz ans System zur Aufzeichnung übergeben */
rM2M_RecData(0, aRecData, HISTDATA_SIZE);
iRecTimer = iRecItv; // Zählervariable auf akt. Aufzeichnungsintv. zurücksetzen
/* Aktuelle Messwerte über die Console ausgegeben */
printf("Vb:%d Vu:%d Ti:%d\r\n",aSysValues.VBat, aSysValues.VUsb, aSysValues.Temp);
}
}
Rev. 01 19