INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 4 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Umwandlung von Array in String
09.12.2015, 20:10
Beitrag #1
Umwandlung von Array in String
Hallo zusammen,

ich glaube ich brauche mal n denkanstoß.

wie bekomme ich denn aus dem
Code:
// lese buffer                                                  
    int i=0;                                                            
    if (buffer[i] != 0) {                                                
      while(buffer[i] != 0) {    
       buffer[i] = 0;                                                  
        i++;
      }

ne zusammenhängende Variable?
Ich muss die Variable Buffer in eine art String oder Integer wandeln. Problem ist gerade mein Hirn, ich sitz nun seit ner halben Std an dem Part und kriegs nicht gebacken. Denke ich aber interger da die Variable meistens 13 zahlen beinhaltet.
Achja ausgegeben werden aus dem buffer nur Zahlen.
Bei Serial.print geht das ja ganz schön weil da alle aus dem buffer gelesenen Zahlen einfach hinterneinader geschrieben werden.

MfG Daniel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.12.2015, 21:26
Beitrag #2
RE: Umwandlung von Array in String
Hallo,
verstehe ich das richtig? Du hast ein Array "buffer", in jedem Element des Arrays ist eine Zahl und du möchtest alle Zahlen des Arrays zu einer großen Zahl oder zu einem String zusammenfassen? Was nun wirklich? Zahl oder String?
Welchen Stellenwert haben die einzelnen Array-Zahlen zueinander und wie groß ist jede einzelne Zahl maximal, oder sind es nur einzelne Ziffern pro Array-Element? Werden die Zahlen oder Ziffern einfach hintereinander gereiht oder steckt auch eine Wertigkeit dahinter? In welchem Array-Element steht die höherwertiger Zahl oder Ziffer? Du siehst: Fragen über Fragen. Vielleicht könntest du den Sachverhalt einmal besser erklären. Deine Code-Schnitzel geben auch nicht richtig Auskunft. Du setzt dabei jedes buffer-Array-Element auf Null? Zeige einmal deinen Gesamtcode her.
Gruß
Retian
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.12.2015, 21:58
Beitrag #3
RE: Umwandlung von Array in String
Sorry war vielleicht alles n bissl schwammig geschrieben aber hab es bereits selbst herausgefunden.

Code:
eancode += (char)buffer[i];

diese Schreibweise übergibt die einzelnen zahlen aus dem Char buffer in den String eancode.

Kompletter Code unten (bitte nicht ganz beachten is och mittendrin)


Code:
// Bibliotheken einbinden
//================================================================================​=
#include <SPI.h>
#include <Ethernet.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>

// LCD Configuration          
//================================================================================​=
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#define ZEICHEN 20
#define ZEILEN 4

// BarcodeScanner Confi        
//================================================================================​=
int SCAN_ENTER = 0x5a;
int SCAN_BREAK = 0xf0;
int breakActive = 0;
int clockPin = 3;
int dataPin = 2;
int clockValue = 0;
byte dataValue;
byte scanCodes[10] = {0x45,0x16,0x1e,0x26,0x25,0x2e,0x36,0x3d,0x3e,0x46};
char characters[10] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
int quantityCodes = 10;
char buffer[64] = {};
int bufferPos = 0;
int bufferLength = 64;


// Ethernet Configuration          
//================================================================================​=
// IP Configuration in Windows unter Start --> Suche --> "CMD" --> "ipconfig/all"
byte     mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };  //MAC Adresse vom EthernetShield
byte      ip[] = { 192, 168, 178, 30};                    //IP  Adresse vom EthernetShield
byte gateway[] = { 192, 168, 178, 1 };                    //Lokale Gateway Adresse
byte  subnet[] = { 255, 255, 255, 0 };                    //Lokale Subnet  Adresse

char server[] = "ofdbgw.home-of-root.de";         // facebook URL, facebook IP: 31.13.93.3

EthernetClient client;

// Variablen          
//================================================================================​=
const int SDselect = 4;
const int ETHselect = 10;


int port = 80;                                // Port von Facebook Server (viele HTTP --> PORT 80)
boolean requested;                            // whether you've made a request since connecting
String eancode = "";
String currentLine = "";                      // string to hold the text from server
String fbcount = "";                          // string to hold the tweet
boolean readingFbcount = false;               // if you're currently reading the tweet


void setup(){
  pinMode(ETHselect, OUTPUT);                 // Chipselect für EthernetShield und SD Karte
  digitalWrite(ETHselect, LOW);               // Chipselect auf 'LOW' Aktiviert in dem fall Ethernetmodul
  pinMode(SDselect, OUTPUT);
  digitalWrite(SDselect, HIGH);               // Deaktiviert hier dann SD Karten Modul

  pinMode(dataPin, INPUT);                                              
  pinMode(clockPin, INPUT);
  Serial.begin(115200);
  
  //currentLine.reserve(256);
  //fbcount.reserve(100);
  
   lcd.begin(ZEICHEN,ZEILEN);                 // LCD mit Zeichen und Zeilen
   SPI.begin();                               // SPI Starten für kommunikation zwischen Arduino und Ethernetshield

  if ( !Ethernet.begin(mac)) {                // Ethernet starten und abfragen ob eine Verbindung besteht
                                
     while ( true ) ;
  }
  delay(1000);
  lcd.setCursor(0,3);
  lcd.print("IP: ") ;
  lcd.print(Ethernet.localIP()) ;

}

void loop(){
scanning();

Serial.print("0");
  if (client.connected()) {
    Serial.print("1");
     if (client.available()) {
      Serial.print("2");
      char inChar = client.read();                
        currentLine += inChar;

      // if you get a newline, clear the line:
      if (inChar == '\n')
      {
        currentLine = "";
      }
      
      // if the current line ends with <fan_count>, it will
      // be followed by the tweet:
      if (currentLine.endsWith("<titel>")){                  
        
        // Likes gefunden, String Löschen
        readingFbcount = true;
        fbcount = "";
      }
      // if you're currently reading the bytes of the facebook count,
      // add them to the tweet String:
      if (readingFbcount)
      {
        if (inChar != '<' )
        {
          fbcount += (char)inChar;
        }
        else
        {
          // if you got a "<" character,
          // you've reached the end of the facebook
          readingFbcount = false;
          client.stop();
          
          fbcount.remove(0,1);
          lcd.setCursor(0,0); lcd.print(fbcount);
      }
     }
    }
   }
  }

void connectToServer(){
client.stop();
    lcd.setCursor(0,3);
    lcd.print("Connection to SERVER");
    delay(250);  //make Info Readable
   if (client.connect(server, port)) {      // mit Client Verbinden
    client.print("GET /searchean/");
    Serial.print("GET /searchean/");
    client.print(eancode);
    Serial.print(eancode);
    client.println(" HTTP/1.1");
    Serial.println(" HTTP/1.1");
    client.println("HOST: ofdbgw.home-of-root.de");
    client.println("Connection: close");    // Verbindung beenden
    client.println();
  //Serial.print("\nEAN: ");
  //Serial.print(eancode);
    lcd.setCursor(0,2);
    lcd.print("EAN: ");
    lcd.print(eancode);
    lcd.setCursor(0,3);
    lcd.print("Connection   DONE   ");

}else {
    // if you couldn't make a connection:
    lcd.setCursor(0,3);
    lcd.print("Connection  FAILED  ");
   }
}
void scanning(){
dataValue = dataRead();
         eancode = "";                                      
  // If there is a break code, skip the next byte                        
  if (dataValue == SCAN_BREAK) {                                        
    breakActive = 1;                                                    
  }                                                                      
  // Translate the scan codes to numbers                                
  // If there is a match, store it to the buffer                        
  for (int i = 0; i < quantityCodes; i++) {                              
    byte temp = scanCodes[i];                                            
    if(temp == dataValue){                                              
      if(!breakActive == 1){                                            
        buffer[bufferPos] = characters[i];                              
        bufferPos++;                                                    
      }                                                                  
    }                                                                    
  }                                                                      
  //Serial.print('*'); // Output an asterix for every byte              
  // Print the buffer if SCAN_ENTER is pressed.                          
  if(dataValue == SCAN_ENTER){                                          
                                              
    // Read the buffer                                                  
    int i=0;                                                            
    if (buffer[i] != 0) {                                                
      while(buffer[i] != 0) {                                            
       eancode += (char)buffer[i];                                      
        buffer[i] = 0;  
        i++;                                                            
      }
      Serial.print("\nEAN: ");
      Serial.print(eancode);                                                                  
    }                                                                    
       connectToServer();                                      
   bufferPos = 0;                                                        
                                              
  }                                                                      
  // Reset the SCAN_BREAK state if the byte was a normal one            
  if(dataValue != SCAN_BREAK){                                          
    breakActive = 0;                                                    
  }                                                                      
  dataValue = 0;                                                        
}

int dataRead() {
  byte val = 0;                                                          
  // Skip start state and start bit                                      
  while (digitalRead(clockPin));  // Wait for LOW.                      
  // clock is high when idle                                            
  while (!digitalRead(clockPin)); // Wait for HIGH.                      
  while (digitalRead(clockPin));  // Wait for LOW.                      
  for (int offset = 0; offset < 8; offset++) {                          
    while (digitalRead(clockPin));         // Wait for LOW              
    val |= digitalRead(dataPin) << offset; // Add to byte                
    while (!digitalRead(clockPin));        // Wait for HIGH              
  }                                                                      
// Skipping parity and stop bits down here.                            
  while (digitalRead(clockPin));           // Wait for LOW.              
  while (!digitalRead(clockPin));          // Wait for HIGH.            
  while (digitalRead(clockPin));           // Wait for LOW.              
  while (!digitalRead(clockPin));          // Wait for HIGH.            
  return val;                                                            
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  String / HTTP Request Marc2014 2 74 08.12.2016 09:05
Letzter Beitrag: amithlon
  Ein als "const" deklariertes Array übergeben Retian 5 130 08.11.2016 18:39
Letzter Beitrag: Tommy56
  String zusammensetzen Mathias 13 555 01.09.2016 21:15
Letzter Beitrag: Mathias
  String-Array füllen? torsten_156 9 452 08.07.2016 20:07
Letzter Beitrag: amithlon
  String in EEPROM Speichern BennIY 2 418 27.06.2016 10:23
Letzter Beitrag: BennIY
  Messwerte in Array speichern ArduinoMega2560 2 422 07.06.2016 16:30
Letzter Beitrag: SkobyMobil
  String - Buchstabenposition auswerten scritch 5 667 01.04.2016 16:25
Letzter Beitrag: rkuehle
  String nach UTF16 konvertieren (UTF-16) ThoEngel 0 302 20.02.2016 19:22
Letzter Beitrag: ThoEngel
  array von Php --> Arduino zu senden (ethernet) Mourti 0 447 27.01.2016 22:11
Letzter Beitrag: Mourti
  Problem mit char array Retian 12 1.006 03.01.2016 22:34
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste