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:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Umwandlung von buffer in long
17.12.2015, 18:08 (Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2015 18:12 von Wampo.)
Beitrag #9
RE: Umwandlung von buffer in long
(17.12.2015 16:58)amithlon schrieb:  Hallo,

ich habe mir jetzt nicht alles angesehen, die Abfrage bei
http://ofdbgw.home-of-root.de/searchean/4010232053084
will ja nur die EAN haben wie es aussieht.
Was wandelst Du da um? Was kommt von Deinem Scanner?
Normalerweise kommt die EAN und ein Return, je nach Programmierung des Scanners wird manchmal ein * vorangestellt usw.
Mein Handscanner steht sendet die EAN + /r/n.
Ich könnte also die eingelesenen Daten direkt als String in die Abfrage hängen oder eben so abspreichern. Ein trim um den String um das Return zu entfernen und als Array of Char auf die SD-Card schreiben.
Die EAN ist durch ihre feste Länge ja auch beim zurücklesen eines Datensatzes problemlos zu trennen, sind ja die ersten 13 Zeichen des Datensatzes.

Also EAN von Scanner holen, die EAN als String aufbereiten, in die Webabfrage hängen.
Den String um Fachnummer und Titel mit den Trennzeichen erweitern und auf die SD-Card schreiben.

Beim Vergelichen einen Datensatz holen, die ersten 13 Zeichen mit der gesuchten EAN vergleichen und gefunden oder nicht.
Als Trennzeichen im Datensatz würde ich was exotisches nehmen, ~ oder #, sonst mußt Du noch aufpassen, daß die nicht im Titel vorkommen.
Datensatzende eben \r oder \n.
Benutzt Du feste Datensatzlängen? Bei 400 Datensätzen und einer SD-Card würde ich das machen.

Gruß aus Berlin
Michael

Ich hab keine Ahnung was mein Scanner an Daten ausgibt.
Es ist ein METROLOGIC ORBIT MS7120. Angeschlossen über PS/2.
Da er aber als Stand-Alone Konfiguriert ist gehe ich davon aus das er irgendwelche ASCII Daten schickt deswegen ja auch das Char umgewandle von 0x3f bla bla in irgendwas sinnvolles. Da kenn ich mich leider zu wenig damit aus... Ich hab den Code gefunden ihn für meine Bedürfnisse angepasst und jetzt funktioniert er eben.
Kann aber auch die PS/2 Library benutzen und bekomme damit auch die EAN raus per Serial. Allerdings is bei dem jetzigen Code vom Scanner alles Sauberer finde ich.
Beim PS/2 Test Sketch hatte ich probleme das Lesen anzuhalten und wieder auf bereitschaft zu schalten.

Ja die Suche benötigt nur die EAN Nummer.

Hast du dir den Code mal angeschaut den ich gepostet hab da steht drin was wohin gewandelt wird
Das sind die Gescannten Codes
Code:
const byte SCAN_CODES[QUANTITY_CODES] = {0x70, 0x69, 0x72, 0x7a, 0x6b, 0x73, 0x74, 0x6c, 0x75, 0x7d, 0x1c, 0x32, 0x21, 0x23, 0x24, 0x2b, 0x34, 0x33, 0x43, 0x3b, 0x42, 0x4b, 0x3a, 0x31, 0x44, 0x4d, 0x15, 0x2d, 0x1b, 0x2c, 0x3c, 0x2a, 0x1d, 0x22, 0x35, 0x1a, 0x16, 0x1e, 0x26, 0x25, 0x2e, 0x36, 0x3d, 0x3e, 0x46, 0x45, 0x29, 0x41, 0x49, 0x4a};
und werden in sinnvolle Chars gewandelt
Code:
const char CHARACTERS[QUANTITY_CODES] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', ' ', ',', '.', '/'};

Die Datenbank wird ja im grunde genommen von leer aufgebaut in dem das ich die Filme Scanne. Wenn sie dann eben noch nicht vorhanden sind werden sie als neuer Datensatz auf die SD karte in einer neuen zeile geschrieben.
Die Datensätze sind nicht Statisch und nicht immer gleich lang da ich eine Ansteigende Fachnummerierung habe und der Filmtitel sich ja jedes mal ändert.

Als lesevorgang und trennung der einzelnen Datensätze benutze ich das Besipiel von der SDFat.h lib.
Code:
#include <SdFat.h>

// SD chip select pin
const uint8_t chipSelect = SS;

// file system object
SdFat sd;

// create Serial stream
ArduinoOutStream cout(Serial);

char fileName[] = "3V_FILE.CSV";
//------------------------------------------------------------------------------
// store error strings in flash to save RAM
#define error(s) sd.errorHalt_P(PSTR(s))
//------------------------------------------------------------------------------
// read and print CSV test file
void readFile() {
  long lg;
  float f1, f2;
  char c1, c2;
  
  // open input file
  ifstream sdin(fileName);
  
  // check for open error
  if (!sdin.is_open()) error("open");
  
  // read until input fails
  while (sdin >> lg >> c1 >> f1 >> c2 >> f2) {
    
    // error in line if not commas
    if (c1 != ',' || c2 != ',') error("comma");
    
    // print in six character wide columns
    cout << setw(6) << lg << setw(6) << f1 << setw(6) << f2 << endl;
  }
  // Error in an input line if file is not at EOF.
  if (!sdin.eof()) error("readFile");
}

//------------------------------------------------------------------------------
void setup() {
  Serial.begin(9600);
  while (!Serial) {} // wait for Leonardo
  cout << pstr("Type any character to start\n");
  while (Serial.read() <= 0) {}
  delay(400);  // catch Due reset problem
  
  // initialize the SD card at SPI_HALF_SPEED to avoid bus errors with
  // breadboards.  use SPI_FULL_SPEED for better performance
  if (!sd.begin(chipSelect, SPI_HALF_SPEED)) sd.initErrorHalt();
  
  // create test file
  writeFile();
  
  cout << endl;

  // read and print test
  readFile();  
  
  cout << "\nDone!" << endl;
}
void loop() {}
Ich muss momentan einfach noch mit den Lib Beispielen arbeiten um tiefer reinzukommen, hab SD Karte vorher nie benutzt, ebenso wenig wie n Scanner und später noch den G-Code...

MfG Daniel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.12.2015, 00:35
Beitrag #10
RE: Umwandlung von buffer in long
Nun hab ich es doch anders gemacht, das umgewandle ging mir aufn Pointer. Jetzt benutze ich schon im Code vorhandene Methode zum lesen und zum vergleichen ob vorhanden oder nicht.

ich Vergleiche jetzt String mit dem buffer das funkionert.

Mit Unsigned long long hats leider auch nicht geklappt, deswegen nun die Notlösung.

Code:
/*
* Blu-Ray-Jukebox mit Roboterbedienung und Barcodescanner, erstellt von Daniel Agocs
* Projekt ins Leben gerufen am 01.12.2015
*
* Update Historie:
* 05.12.15 // V1.0 = Einbindung Barcodescanner, Textfinder und Ethernetverbindung // Spielerei:  WS2812b LED // Sketch 22.698 Bytes
* 11.12.15 // V1.1 = Einbindung SD Karte auf Ethernet Shield, Anpassung an Arduino Mega, Strukturierung
* 12.12.15 // V1.2 = Ethernet.h geändert (Verbindungstimeout von 60 auf 10 sec), SD und Ethernet Startsequence Optimiert
* 18.12.15 // V1.3 = SD Vergleich, SD Beschreiben wenn Daten nicht vorhanden, Weiterentwicklung und Bug Fixes // Sketch 32.686 Bytes
*
* Copyright by Daniel Agocs and iNET BLU-RAY JUKEBOX
*/


// Bibliotheken einbinden
//================================================================================​=
#include <SPI.h>
#include <Ethernet.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <ctype.h>
#include <Adafruit_NeoPixel.h>
#include <SdFat.h>

// Database Confi      
//================================================================================​=
bool db = false;
bool match;
unsigned int fach = 1;

// SD Confi          
//================================================================================​=
const int SDselect = 4;
SdFat sd;
SdFile myFile;

// NeoPixel Confi          
//================================================================================​=
#define NUMPIX 24
#define PIN 6
int wc = 8;  //Color Changer ++
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIX,PIN,NEO_GRB + NEO_KHZ800);

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

// BarcodeScanner Confi        
//================================================================================​=
int clockPin = 3;
int dataPin  = 2;

const int SCAN_ENTER = 0x5a;
const int SCAN_BREAK = 0xf0;
const int QUANTITY_CODES = 50;               // Menge der unterstützten Codes/Characters
const byte SCAN_CODES[QUANTITY_CODES] = {0x70, 0x69, 0x72, 0x7a, 0x6b, 0x73, 0x74, 0x6c, 0x75, 0x7d, 0x1c, 0x32, 0x21, 0x23, 0x24, 0x2b, 0x34, 0x33, 0x43, 0x3b, 0x42, 0x4b, 0x3a, 0x31, 0x44, 0x4d, 0x15, 0x2d, 0x1b, 0x2c, 0x3c, 0x2a, 0x1d, 0x22, 0x35, 0x1a, 0x16, 0x1e, 0x26, 0x25, 0x2e, 0x36, 0x3d, 0x3e, 0x46, 0x45, 0x29, 0x41, 0x49, 0x4a};
const char CHARACTERS[QUANTITY_CODES] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', ' ', ',', '.', '/'};

// Variablen Confi    
//================================================================================​=
boolean requested;                           // whether you've made a request since connecting
String  currentLine = "";                    // string to hold the text from server
String  titel = "";                          // string to hold the tweet
boolean readingTitel = false;                // if you're currently reading the tweet

int breakActive = 0;                         // boolean toggled by SCAN_BREAK scan code
int clockValue = 0;
byte dataValue;

const int BUFFER_LENG = 20;
char buffer[BUFFER_LENG];                    // serial input buffer
int bufferPos = 0;

unsigned long Start = 0;
unsigned long Stop = 0;
float Ergebnis = 0.00;


// Ethernet Confi          
//================================================================================​=
// 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";         //Zugriffsadresse bzw. Mirror
int port = 80;

bool ether = false;
const int ETHselect = 10;
EthernetClient client;

/* keine ahnung warum das da steht, aus altem Code übernommen, kann aber denke ich raus, geht auch ohne
void clearBuffer(char *buf);
void sendData();
int readData();
*/


//================================================================================​=
void setup(){
//================================================================================​=

  pinMode(dataPin, INPUT);    digitalWrite(dataPin, HIGH);                                              
  pinMode(clockPin, INPUT);   digitalWrite(clockPin, HIGH);
  pinMode(ETHselect, OUTPUT);
  pinMode(SDselect, OUTPUT);
  pinMode(53, OUTPUT);                //pin 53 als OUTPUT beim MEGA aktiviert Ethernet SD
  
  currentLine.reserve(256);                                               //keine Ahnung was die zwei machen
  titel.reserve(100);                                                     //übernommen aus anderem Code
  
  SPI.begin();
  lcd.begin(ZEICHEN,ZEILEN);
  Serial.begin(115200); while (!Serial){}
  strip.begin();
  strip.setBrightness(50);

// SD Karten Check und Init
//================================================================================​=
digitalWrite(ETHselect, HIGH);
digitalWrite(SDselect, LOW);
if (!sd.begin(SDselect, SPI_FULL_SPEED)){  // SPI_HALF_SPEED or SPI_FULL_SPEED
     lcd.setCursor(0,2);
     lcd.print("SD N/A // DB OFFLINE");
     db = false;
     errorLED();
   }else{
   if (myFile.open("database.txt", O_READ)){
      while (myFile.read() >= 0){
      lcd.setCursor(0,2);
      lcd.print(" SD OK // DB FOUND ");
      db = true;
      myFile.close();
      }
    }else{
     lcd.setCursor(0,2);
     lcd.print("SD OK // NO DB FOUND");
     db = false;
     errorLED();
    }
  }
   digitalWrite(ETHselect, LOW);
   digitalWrite(SDselect, HIGH);
      
  
if (!Ethernet.begin(mac)) {
     ether = true;
     lcd.setCursor(0,2);
     lcd.print("   Network failed   ");
     errorLED();
     }

  lcd.setCursor(0,0);
  lcd.print("iNET BLU-RAY JUKEBOX");
  lcd.setCursor(0,1);
  lcd.print("IP: ");
  lcd.print(Ethernet.localIP()) ;

  if (ether == false){
  //startup();
  lcd.setCursor(0,3);
  lcd.print(" Scan some BD-Stuff ") ;
  for (int i=0; i<3; i++){
    scanLED();
    delay(100);
  }
  }else{
  lcd.setCursor(0,3);
  lcd.print("!PLS RESTART SYSTEM!");
  while (ether == true){
  resetLED(15);
  }
}
}

//================================================================================​=
void loop(){
//================================================================================​=
if (client.connected()) {
     if (client.available()) {
      char inChar = client.read();                
        currentLine += inChar;
          Serial.print(inChar);
      // if you get a newline, clear the line:
      if (inChar == '\n')
      {
        currentLine = "";
      }
    
     if (currentLine.endsWith("<titel>")){                  
        
        readingTitel = true;
        titel = "";
      }
      if (readingTitel)
      {
        if (inChar != '<' )
        {
          titel += (char)inChar;
        }
        else
        {
          readingTitel = false;
          client.stop();
          titel.remove(0,1);            // erstes Zeichen vom String Löschen
          titel.remove(20);             // maximal 20 Zeichen darstellen rest löschen
        
searcheansd();
if(match == false){
  writesd();
  fach++;
}
    // clear buffer
    clearBuffer(buffer);
    bufferPos = 0;
    match = false;
    okLED();

      Stop = millis();
      Ergebnis = Stop - Start;
      lcd.setCursor(0,0); lcd.print("                    ");
      lcd.setCursor(0,0); lcd.print("Suchzeit: "); lcd.print(Ergebnis/1000);lcd.print(" sec ");
      lcd.setCursor(0,1); lcd.print("                    ");
      lcd.setCursor(0,1); lcd.print(titel);
      lcd.setCursor(10,3); lcd.print("  Stopped ");
      }
     }
    }
   }
  else {
scan();
  }
} // end of loop()

void searcheansd(){
  digitalWrite(ETHselect, HIGH);
  digitalWrite(SDselect, LOW);
  myFile.open("database.txt", O_READ);
  delay(10);
  
while (myFile.available()){
    char eandata = myFile.read();
       Serial.print(eandata);                
        currentLine += eandata;
        // if you get a newline, clear the line:
      if (eandata == '\n')
      {
        currentLine = "";
      }
    
    if (currentLine.endsWith(buffer)){                  
       Serial.print("\nMATCH"); Serial.print(" @ "); Serial.println(buffer); Serial.print("\n");
       Serial.print("\nFach Nr:"); Serial.print(" "); Serial.println(fach); Serial.print("\n");
       match = true;
       break;
      }
     }
  myFile.close();
  digitalWrite(ETHselect, LOW);
  digitalWrite(SDselect, HIGH);
}

void writesd(){
  digitalWrite(ETHselect, HIGH);
  digitalWrite(SDselect, LOW);
myFile.open("database.txt", O_RDWR | O_CREAT | O_AT_END); //Schreibt auf SD Karte und erstellt neue .txt wenn keine vorhanden
    myFile.print(buffer);
    Serial.print(buffer);
    myFile.print(",");
    Serial.print(",");
    myFile.print(fach);
    Serial.print(fach);
    myFile.print(",");
    Serial.print(",");
    myFile.println(titel);
    Serial.println(titel);
myFile.close();
  digitalWrite(ETHselect, LOW);
  digitalWrite(SDselect, HIGH);
}


void sendData(){
client.stop();
    delay(10);
    lcd.setCursor(0,3); lcd.print("Connection to Server");
if (client.connect(server, port)) {
    client.print("GET /searchean/"); client.print(buffer); client.println(" HTTP/1.1");  //Eingabe vom EAN vor der Suche, dann suchen
    client.println("HOST: ofdbgw.home-of-root.de");
    client.println("Connection: close");
    client.println();

    lcd.setCursor(0,2); lcd.print("EAN: "); lcd.print("               "); lcd.setCursor(5,2); lcd.print(buffer); lcd.print("  ");
    lcd.setCursor(10,3); lcd.print("   i.O.   ");
    okLED();
  }
  else {
    // kann keine Verbindung zum Server hergestellt werden:
    lcd.setCursor(10,3); lcd.print(" N.i.O.   ");
    errorLED();
  }
}
void scan(){
  // read data from scanner
  dataValue = readData();
  if (dataValue == SCAN_BREAK) {
     breakActive = 1;
  }

  // check for buffer overflow
  if (bufferPos < BUFFER_LENG) {
    // translate the scan codes to numbers
    // if there is a match, store it to the buffer
    for (int i = 0; i < QUANTITY_CODES; i++) {
      byte temp = SCAN_CODES[i];
      if (temp == dataValue) {
        if (!breakActive == 1) {
          buffer[bufferPos] = CHARACTERS[i];
          bufferPos++;
        } // end of breakActive
      } // end of "valid character"
    } // end of QUANTITY_CODES check
  }

  // code completely scanned
  if (dataValue == SCAN_ENTER) {
      // EAN was scanned
      Start = millis();
      scanLED();
      sendData();
      
     } // end of "SCAN_ENTER" check
  
  // Reset the SCAN_BREAK state if the byte was a normal one
  if (dataValue != SCAN_BREAK) {
    breakActive = 0;
  }
  dataValue = 0;
}
void clearBuffer(char *buf){
  int i=0;
  while(buf[i] != 0) {
     buf[i++] = 0;
  } // end of clear buffer loop
}
int readData(){
  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;
}
void startup(){
  rainbowCycle(2,5);
  }
void scanLED(){
for (int i=0; i < NUMPIX; i++) {
        strip.setPixelColor(i, 0, 0, 255);
      }
      strip.show();
        delay(50);
          clearstrip();
}
void okLED(){
  for (int i=0; i < NUMPIX; i++) {
        strip.setPixelColor(i, 0, 255, 0);
      }
      strip.show();
        delay(50);
          clearstrip();
}        
void errorLED(){
  for (int d=0; d < 4; d++){
     for (int i=0; i < NUMPIX; i++) {
        strip.setPixelColor(i, 255, 0, 0);
      }
      strip.show();
        delay(50);
          clearstrip();
            delay(250);
       }
}
void resetLED(uint8_t wait){
  int t;
  for (int i = 0; i < NUMPIX; i++) {
    strip.setPixelColor(i, wheel(wc));
    t = i - 1;
    if (t < 0) t = strip.numPixels() - 1;
    strip.setPixelColor(t, strip.Color(0, 0, 0));
    strip.show();
    delay(wait);
  }
   wc+=8;
  if (wc>255) wc=0;
}
void rainbowCycle(uint8_t sets, uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256*sets; j++) {
    for(i=0; i< NUMPIX; i++) {
      strip.setPixelColor(i, wheel(((i * 256 / NUMPIX) + j) & 255));
    }
    strip.show();
    delay(wait);
  }
}
void clearstrip(){
  for (int i=0; i < NUMPIX; i++) {
        strip.setPixelColor(i, 0, 0, 0);    //turn Strip to "BLACK"
      }
      strip.show();
}
uint32_t wheel(byte WheelPos){
  if(WheelPos < 85) //RED
  {
    return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  }
  else if(WheelPos < 170) //BLUE
  {
    WheelPos -= 85;
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  else {
    WheelPos -= 170;
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.12.2015, 08:55
Beitrag #11
RE: Umwandlung von buffer in long
Hallo,

(19.12.2015 00:35)Wampo schrieb:  Nun hab ich es doch anders gemacht, das umgewandle ging mir aufn Pointer. Jetzt benutze ich schon im Code vorhandene Methode zum lesen und zum vergleichen ob vorhanden oder nicht.

ich Vergleiche jetzt String mit dem buffer das funkionert.

Mit Unsigned long long hats leider auch nicht geklappt, deswegen nun die Notlösung.

Ich würde das nicht als Notlösung ansehen, dazu haben mich gerade EANs und Zeichensätze zwischen verschiedenen Systemen schon zu oft zur Verzeiflung gebracht. Hat auch beim debuggen den Vorteil, daß man sich das mal schnell per serieller zum PC schicken kann und gleich lesen kann, was gemeint ist.
Auf kleinen µC ist natürlich immer das Problem mit Platz und Geschwindigkeit.
Soweit ich Dein Vorhaben verstanden habe, spielt das bei diesem Teil aber kaum eine Rolle. Ist ja eine Benutzeraktion, der scannt was ein und da sind Reaktionszeiten selbst von ein paar hundert Millisekunden noch kein Problem.

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.12.2015, 09:46
Beitrag #12
RE: Umwandlung von buffer in long
Richtig Michi,

das ist mein Scanner, der Liefert wenn der Scann beendet ist ein ENTER über PS/2
   
dann wird der EAN weiter gegeben erstens zum SD Karten Abgleich
in dem Bild ist z.b. der Film schon in der Datenbank drin also haben wir ein treffer
    .

Und ich meine die Zeit zwischen Einscannen und durchforsten der SD Karte bis zum Treffer, mit ein paar Optimierungen is die Suche bei 400 Zeilen auf der SD Karte innerhalb von ein paar sec vorbei bis der Entnahmeroboter anfängt zu fahren. Das is mir am Anfang relativ egal solangs eben keine halbe std dauert. Updates und Optimierungsarbeiten kann ich immernoch machen wenn dann mal die Hardware steht.

So schaut das momentan aus bei mir. Mein Projekt is auch hier im Forum:
http://www.arduinoforum.de/arduino-Threa...arcodescan
       

Kannst es verfolgen wenn du möchtest, werde dazu noch einige Fragen stellen, weil ich eben viel neues an Hardware verwende die ich zuvor nie genutzt hab.

MfG Daniel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.12.2015, 10:09
Beitrag #13
RE: Umwandlung von buffer in long
Hallo,

(19.12.2015 09:46)Wampo schrieb:  Kannst es verfolgen wenn du möchtest, werde dazu noch einige Fragen stellen, weil ich eben viel neues an Hardware verwende die ich zuvor nie genutzt hab.

MfG Daniel

werde ich, war beim lesen schonaml über Dein Projekt gestolpert.
Falls Dir noch ein Bondrucker fehlt: ich kann einen Epson TM88 sehr günstig abgeben, Centronics-Schnittstelle. Ich mach mir da sowieso eine Ansteuerung wahrscheinlich per MCP23S17.

Ich habe ein paar Sachen von meinem ehemaligen Arbeitgeber ganz offiziell aus dem Schrott gerettet, 2 oder 3 Kassendisplay (müßten 2x20 VFD sein), Handscanner und eben die Drucker.
Das Kassensystem war mal mein Job, alles genaugenommen uralt, aber immernoch brauchbar, ich muß nur schauen, was da wirklich noch technisch ok ist.

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.12.2015, 10:53
Beitrag #14
RE: Umwandlung von buffer in long
(19.12.2015 10:09)amithlon schrieb:  Hallo,

(19.12.2015 09:46)Wampo schrieb:  Kannst es verfolgen wenn du möchtest, werde dazu noch einige Fragen stellen, weil ich eben viel neues an Hardware verwende die ich zuvor nie genutzt hab.

MfG Daniel

werde ich, war beim lesen schonaml über Dein Projekt gestolpert.
Falls Dir noch ein Bondrucker fehlt: ich kann einen Epson TM88 sehr günstig abgeben, Centronics-Schnittstelle. Ich mach mir da sowieso eine Ansteuerung wahrscheinlich per MCP23S17.

Ich habe ein paar Sachen von meinem ehemaligen Arbeitgeber ganz offiziell aus dem Schrott gerettet, 2 oder 3 Kassendisplay (müßten 2x20 VFD sein), Handscanner und eben die Drucker.
Das Kassensystem war mal mein Job, alles genaugenommen uralt, aber immernoch brauchbar, ich muß nur schauen, was da wirklich noch technisch ok ist.

Gruß aus Berlin
Michael

Klingt ganz schön gut... Wink Nicht wegschmeissen!!!!
Für das Projekt kann ich leider beides nicht gebrauchen aber ich behalte es im Hinterkopf. Sind das Thermodrucker? Oder Nadel?
Schrottkisten 4TW Big Grin Ich liebe sie, was ich aus den dingern bei uns schon rausgezogen hab.....pahhh unfassbar...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Rechnen mit float und unsigned long Rudi 3 306 03.06.2016 12:41
Letzter Beitrag: hotsystems
  Buffer reservieren im SRAM vom DUE arduinopeter 1 300 28.03.2016 10:16
Letzter Beitrag: rkuehle
  SPI Buffer empfangen BennIY 5 716 17.03.2016 13:35
Letzter Beitrag: Bitklopfer
  Umwandlung von Array in String Wampo 2 529 09.12.2015 21:58
Letzter Beitrag: Wampo
  Serial buffer Laura 36 3.851 11.06.2015 15:10
Letzter Beitrag: Thorsten Pferdekämper
  Variablen Typ double, char, long aus ext. EEPROM lesen SternGucker 8 1.533 02.04.2015 08:10
Letzter Beitrag: SternGucker
  Umwandlung von Koordinaten Matthias Wehrli 5 890 22.11.2014 17:32
Letzter Beitrag: itAxel
  long (int_32) bei Mega? HaWe 5 958 15.11.2014 23:10
Letzter Beitrag: tito-t
  string to long itsy 13 1.972 01.11.2014 15:39
Letzter Beitrag: itsy
  Umwandlung Hex in Dez therealnerd 2 1.118 26.03.2014 16:07
Letzter Beitrag: burgi650

Gehe zu:


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