Auf den letzten Metern

Dependencies:   mbed

Revision:
20:0f975b296b67
Parent:
19:8fdd91276de8
Child:
21:2c1292affc10
--- a/main.cpp	Mon Dec 05 13:51:24 2022 +0000
+++ b/main.cpp	Mon Dec 05 15:32:54 2022 +0000
@@ -151,6 +151,8 @@
 * Description : pointer to data
 */
 
+byte bComp;
+
 
 word wSerial; /*
 * Description : serielles Ausgaberegister
@@ -433,6 +435,12 @@
 // Empfangsroutine vom COM-Port des PC 
 void vIsrRxComX( void ){ // Empfangsroutine 
 if(stComX.readable()){ // Empfangs-ISR 
+for(int i=60; i>0; i--){
+    abTxBufferOld[i]=abTxBuffer[i];
+}
+for(int i=60; i>0; i--){
+    abTxBuffer[i]=abTxBuffer[i-1];
+}
 abTxBuffer[0] = stComX.getc();
 SYS_vStartComX(1, &abTxBuffer[0]);
 }
@@ -447,11 +455,11 @@
             bDisplayState = enPotiAnzeige;
             bMainState = enPotiAnzeige;
         }
-        if(bMainState==enPotiAnzeige) {
+        else if(bMainState==enPotiAnzeige) {
             bDisplayState = enVergleich;
             bMainState = enVergleich;
         }
-        if(bMainState==enVergleich) {
+        else {
             bDisplayState = enSchwellenwert;
             bMainState = enSchwellenwert;
         }
@@ -473,9 +481,15 @@
 }
 
 void vCheckCom(void){
-    vComA();
-    vComPlus();
-    vComMinus();
+    for(int i=60; i>=0; i--){
+        if(abTxBufferOld[i]!=abTxBuffer[i]) bComp=1;
+    }
+    if(bComp==1){
+        vComA();
+        vComPlus();
+        vComMinus();
+    }
+    bComp=0;
 }