AngyalRobert

hx711 command handle

Dec 28th, 2019
102
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //-- soros port kezelése
  2.   while (Serial.available() > 0) {  // amíg van a soros port bufferben beolvasható karakter
  3.     char serRead= Serial.read(); // serRead az épp beolvasott karakter
  4.     switch (commandPtr){   // commandPtr az a változó ami a beérkezett karakterek számát számolja.
  5.       case 0: if (serRead== commandStart) {  // start karakter, ez a @, így kezdődik minden üzenet amit küld a nanonak.
  6.                 commandPtr++;
  7.                 serTimeout= millis()+ 100;  // a timeout, 100 msec. Ezen belül kell megérkezni az üzenet vége karakternek.
  8.                 Serial.println( "START");
  9.               }
  10.               break;
  11.       case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11:
  12.               // parancsok
  13.               //   nullázás           ZERO
  14.               //   végérték megadás   ENDP004000  
  15.               //   átalagolás száma   AVGC30   01..99
  16.               //   tizedes pontok     DECP2    0..5
  17.               //   lepes nagysag      LEPS01   01 02 05 10 20 50
  18.               //   nyug feltétel      NYUG01   01..99 tizedosztás
  19.               if (serRead== commandEnd ) {  // commandEnd az üzenet vége karakter
  20.                 commandPtr= 0;
  21.                 serTimeout= 0;
  22.                 if (strncmp( command, "ZERO", 4)== 0){ // ha a command, vagyis a beolvasott üzenet a ZERO string
  23.                   if (strlen( command)== 4){
  24.                     zeroAd= avgAd;
  25.                     Serial.print( "ZERO: ");
  26.                     Serial.println( avgAd);
  27.                     EEPROM.put( 0, zeroAd);
  28.                   }else{
  29.                     Serial.print( "LENGTH ERROR ");
  30.                     Serial.println( command);
  31.                   }
  32.                 }else
  33.                 if (strncmp( command, "ENDP", 4)== 0){ // ha a beolvasott üzenet az ENDP string
  34.                   if (strlen( command)== 10){
  35.                     strncpy( setPoint, command+ 4, 6);
  36.                     setPoint[ 6]= 0;
  37.                     long endValue= strtol( setPoint, NULL, 10);
  38.                     long endAd= avgAd- zeroAd;
  39.                     spanAd= (float)endValue/ (float) endAd;
  40.                     Serial.print( "endAd: ");
  41.                     Serial.print( endAd);
  42.                     Serial.print( "  endValue: ");
  43.                     Serial.print( endValue);
  44.                     Serial.print( "  spanAd: ");
  45.                     Serial.println( spanAd);
  46.                     EEPROM.put( 4, spanAd);
  47.                   }else{
  48.                     Serial.print( "LENGTH ERROR ");
  49.                     Serial.println( command);
  50.                   }
  51.                 }else
  52.                 if (strncmp( command, "AVGC", 4)== 0){ // ha a beolvasott üzenet az AVGC string
  53.                   if (strlen( command)== 6){
  54.                     strncpy( setPoint, command+ 4, 2);
  55.                     setPoint[ 2]= 0;
  56.                     avgCount= strtol( setPoint, NULL, 10);
  57.                     Serial.print( "avgCount: ");
  58.                     Serial.println( avgCount);
  59.                     EEPROM.put( 12, avgCount);
  60.                   }else{
  61.                     Serial.print( "LENGTH ERROR ");
  62.                     Serial.println( command);
  63.                   }
  64.                 }else
  65.                 if (strncmp( command, "DECP", 4)== 0){ // ha a beolvasott üzenet a DECP string
  66.                   if (strlen( command)== 5){
  67.                     strncpy( setPoint, command+ 4, 1);
  68.                     setPoint[ 1]= 0;
  69.                     decPoint= strtol( setPoint, NULL, 10);
  70.                     Serial.print( "decP: ");
  71.                     Serial.println( decPoint);
  72.                     EEPROM.put( 13, decPoint);
  73.                   }else{
  74.                     Serial.print( "LENGTH ERROR ");
  75.                     Serial.println( command);
  76.                   }
  77.                 }else
  78.                 if (strncmp( command, "NYUG", 4)== 0){ // ha a beolvasott üzenet a NYUG string
  79.                   if (strlen( command)== 6){
  80.                     strncpy( setPoint, command+ 4, 2);
  81.                     setPoint[ 2]= 0;
  82.                     nyugFelt= strtol( setPoint, NULL, 10);
  83.                     Serial.print( "nyugFelt: ");
  84.                     Serial.println( nyugFelt);
  85.                     EEPROM.put( 14, nyugFelt);
  86.                   }else{
  87.                     Serial.print( "LENGTH ERROR ");
  88.                     Serial.println( command);
  89.                   }
  90.                 }else
  91.                 if (strncmp( command, "LEPS", 4)== 0){ // ha a command, vagyis a beolvasott üzenet a LEPS string
  92.                   if (strlen( command)== 6){
  93.                     strncpy( setPoint, command+ 4, 2);
  94.                     setPoint[ 2]= 0;
  95.                     lepes= strtol( setPoint, NULL, 10);
  96.                     Serial.print( "lepes: ");
  97.                     Serial.println( lepes);
  98.                     EEPROM.put( 15, lepes);
  99.                   }else{
  100.                     Serial.print( "LENGTH ERROR ");
  101.                     Serial.println( command);
  102.                   }
  103.                 }else
  104.                 {
  105.                   Serial.print( "ERROR: ");
  106.                   Serial.println( command);
  107.                 }
  108.               }else{
  109.                 command[ commandPtr-1]= serRead; // ha még nem jött a parancs vége karakter, akkor hozzáadja a beolvasott karaktert
  110.                 command[ commandPtr]= 0;  // lezárja a command stringet
  111.                 commandPtr++;   // növeli a karakterek számát
  112.                 if (commandPtr> 11) {   // ha túl sok karakter jött, és még nem jött commandEnd, akkor törli az egész üzenetet.
  113.                   commandPtr= 0;
  114.                   serTimeout= 0;
  115.                   Serial.println( "ERROR 11");
  116.                 }
  117.               }
  118.               break;
  119.       default:
  120.               break;  
  121.     }
  122.   }
  123.   if (serTimeout>0 && millis()> serTimeout){  // ha időtúllépés van, törli az üzenetet.
  124.     serTimeout= 0;
  125.     commandPtr= 0;
  126.     Serial.println( "TIMEOUT");
  127.   }
RAW Paste Data