From b0ca12b0a63651ee313f33e27a66a3fad75828c0 Mon Sep 17 00:00:00 2001
From: Ole Artz <ole.artz@t-online.de>
Date: Mon, 23 Aug 2021 12:29:31 +0200
Subject: [PATCH] LANTelnetTOI2C_Board: single channel read via telnet is now
 possible. Attention! Last value bit of telnet answer is decimal place and has
 to devided by 16

---
 .../LANTelnetToI2C_Board.ino                  | 25 ++++++++-----------
 1 file changed, 10 insertions(+), 15 deletions(-)

diff --git a/esp32/EthernetUART/LANTelnetToI2C_Board/LANTelnetToI2C_Board.ino b/esp32/EthernetUART/LANTelnetToI2C_Board/LANTelnetToI2C_Board.ino
index 6088267..bd0f402 100644
--- a/esp32/EthernetUART/LANTelnetToI2C_Board/LANTelnetToI2C_Board.ino
+++ b/esp32/EthernetUART/LANTelnetToI2C_Board/LANTelnetToI2C_Board.ino
@@ -330,11 +330,8 @@ void loop(){
     for(i = 0; i < MAX_SRV_CLIENTS; i++) {
       if (serverClients[i] && serverClients[i].connected()) {
         if(serverClients[i].available()) {
-          //get data from the telnet client and push it to the UART
-//          while(serverClients[i].available()) Serial.write(serverClients[i].read());
           //get data from the telnet client and push it to I2C
-          while(serverClients[i].available()) {getstring = serverClients[i].read(); //<------ Hier ist der Fehler mit getstring
-            Serial.print("\nGETDATASTRING: "); Serial.print(getstring);
+          while(serverClients[i].available()) {getstring = char(serverClients[i].read());
             for(uint8_t m=0; m < getstring.length(); m++){
               getdata(getstring.charAt(m));
             }
@@ -390,7 +387,7 @@ void get_adc_val() {
   size_t len = sbuf.length();
 
   uint8_t buf[len];
-  sbuf.toCharArray((char*)buf, len);
+  sbuf.toCharArray((char*)buf, len); // Copies the String’s characters to the supplied buffer.
 
   counter += 1;
     if (counter == 1) {
@@ -513,7 +510,6 @@ void getdata(uint8_t buf) {
 
 //write 
     if (rxbuf[0] == 'W'){
-    Serial.print("WRITECHECK");
     //ADCsettings
     if (hex_to_int(rxbuf[5]) == 9) {
 //    uint8_t val = (hex_to_int(rxbuf[7])*16+hex_to_int(rxbuf[8]))&0xFF;
@@ -523,30 +519,29 @@ void getdata(uint8_t buf) {
 
     send_answer_hex(&rxbuf[0], new_gain);
     }
+    }
 
 //read
     if (rxbuf[0] == 'R'){
-    Serial.print("READCHECK");
-   
+    //read single ADC Channel
     if (hex_to_int(rxbuf[5]) == 10) {
-      //read single ADC Channel
-    uint8_t adc_val = 0xFFFF;
+    uint16_t adc_val = 0xFFFF;
         //CH0
-        if (hex_to_int(rxbuf[4]) == 0) {adc_val=fadc0;
+        if (hex_to_int(rxbuf[4]) == 0) {adc_val=fadc0*16;
         }
         //CH1  
-        if (hex_to_int(rxbuf[4]) == 1) {adc_val=fadc1;
+        if (hex_to_int(rxbuf[4]) == 1) {adc_val=fadc1*16;
         }
         //CH2
-        if (hex_to_int(rxbuf[4]) == 2) {adc_val=fadc2;
+        if (hex_to_int(rxbuf[4]) == 2) {adc_val=fadc2*16;
         }
         //CH3  
-        if (hex_to_int(rxbuf[4]) == 3) {adc_val=fadc3;
+        if (hex_to_int(rxbuf[4]) == 3) {adc_val=fadc3*16;
         }
     send_answer_hex(&rxbuf[0], adc_val);                                        
     }
     }
     }
+    if (rxcnt >= 10 || buf == '\n' || buf == '\r') { rxcnt = 0; }
     }
   }
-}
-- 
2.43.0