[Solved] Large Text file - Single Row Thermal Printer


hi arduino community,

so first time asking comunity because exceeded possible tutorials , scripts. :smiley-sad:

here go:
my plan print string text file saved on sd card. string long because law text , on 500 chars long.
first tryied longest string copying string code , printed fine.
second implemented sd card , adjusted code 1 row of txt file.
so there problem starts. think sram of arduino uno small have string in buffer , print it. prints 130 chars of string.
so third attempt bring arduino mkr1000 print. worked fine. can't acces sd card :/
>i download file somewhere didn't find code support one.
>trying acces ethernet/sd shield on pins didn't work

so questions are:
1. can somehow solve sram problem? maybe arduino mega?
2. can rewrite code doesn't need sram needs now? maybe getting single char till end of row?
3. can somehow include file uploading mkr1000?
4. if 3 isn't possible can download somehow? ftp server?
5. can read maybe google spreadsheet?

here code:
code: [select]

#include "adafruit_thermal.h"
#include <sd.h>
#include <spi.h>

adafruit_thermal printer(&serial1);     // pass addr printer constructor

const int buttonpin = 9;    
byte buttonstate = 0;
int c = 1;

file printfile;
string buffer; //buffer getting string
boolean sdfound;
string artikelnr;
string artikel;
string test;
int i=0;
int r=7;

void setup() {
  serial.begin(9600);
  
  pinmode(buttonpin, input);
  pinmode(7, output); digitalwrite(7, low);
  
  serial1.begin(19200); // use instead if using hardware serial
  printer.begin();        // init printer (same regardless of serial type)
  printer.println(f("grundgesetz"));  //printer test
  printer.println(f("_______________"));
  printer.println(f(" "));
  printer.setdefault(); // restore printer defaults
 printgg(getartikel(6),"2"); //test sd function getartikel(int), test there static "2" law number
}

void loop() {
  buttonstate = digitalread(buttonpin); //there button start action
  if (buttonstate == high) {
    printgg(getartikelnr(6),"2");
  } else {
    
  }
}

void printgg (string artikel, string artikelnr){
  printer.justify('c'); //printer center of page

  printer.println(f("grundgesetz")); //print header
  printer.println(f("_______________"));
  printer.println(f(" "));
  
  printer.boldon();
  
  printer.setsize('l'); //print law number
  printer.println(f("artikel"));
  printer.println(artikelnr);
  printer.boldoff();
  printer.println(f("_______________"));
  printer.println(f(" "));

  printer.setsize('s'); // print law (long string)
    printer.justify('l');
  printer.println(artikel);
  printer.justify('c');
  printer.println(f("_______________"));

  printer.println(f(" ")); //print spacer rip off @ thermal printer
  printer.println(f(" "));
  printer.println(f(" "));

  printer.sleep();      // tell printer sleep
  delay(3000l);         // sleep 3 seconds
  printer.wake();       // must wake() before printing again, if reset
  printer.setdefault(); // restore printer
}


string getartikelnr(int r){ //r variable row get
  if (sdfound == 0) {
    if (!sd.begin(53)) {
      serial.print("the sd card cannot found");
      while(1);
    }
  }
  sdfound = 1;
  printfile = sd.open("gg.txt"); //get file
  if (!printfile) {
    serial.print("the text file cannot opened");
    //while(1);
  }
  //go through every row of text file
  while (printfile.available()) {
    buffer = printfile.readstringuntil('$');
    if (i==r){  //if r reached return string
     printfile.close();
     return buffer;

    }  
    i++;
  }
  serial.println(f("nr geholt"));
  printfile.close();
}

string getartikel(int r){ //like getartikelnr() gets next row because of file structure
    if (sdfound == 0) {
    if (!sd.begin(53)) {
      serial.print("the sd card cannot found");
      while(1);
    }
  }
  sdfound = 1;
  printfile = sd.open("arduino.txt");
  if (!printfile) {
    serial.print("the text file cannot opened");
    //while(1);
  }
  while (printfile.available()) {
    buffer = printfile.readstringuntil('$');
    if (i==r+1){  
     printfile.close();
     return buffer;
    }  
    i++;
  }
  serial.println(f("artikel geholt"));
  printfile.close();
}


the text file that:
art 1 $
(1) die wuerde des menschen ist unantastbar. sie zu achten und zu schuetzen ist verpflichtung aller staatlichen gewalt.(2) das deutsche volk bekennt sich darum zu unverletzlichen und unveraeusserlichen menschenrechten als grundlage jeder menschlichen gemeinschaft, des friedens und der gerechtigkeit in der welt.(3) die nachfolgenden grundrechte binden gesetzgebung, vollziehende gewalt und rechtsprechung als unmittelbar geltendes recht. $
art 2 $
(1) jeder hat das recht auf die freie entfaltung seiner persoenlichkeit, soweit er nicht die rechte anderer verletzt und nicht gegen die verfassungsmaessige ordnung oder das sittengesetz verstoesst.(2) jeder hat das recht auf leben und koerperliche unversehrtheit. die freiheit der person ist unverletzlich. in diese rechte darf nur auf grund eines gesetzes eingegriffen werden. $

i got txt file xml , rewrote txt. here original xml example:
code: [select]
<norm builddate="20160301215503" doknr="bjnr000010949bjne001700314"><metadaten><jurabk>gg</jurabk><enbez>art 1</enbez></metadaten><textdaten><text format="xml"><content><p>(1) die wuerde des menschen ist unantastbar. sie zu achten und zu schuetzen ist verpflichtung aller staatlichen gewalt.(2) das deutsche volk bekennt sich darum zu unverletzlichen und unveraeusserlichen menschenrechten als grundlage jeder menschlichen gemeinschaft, des friedens und der gerechtigkeit in der welt.(3) die nachfolgenden grundrechte binden gesetzgebung, vollziehende gewalt und rechtsprechung als unmittelbar geltendes recht.</p></content></text><fussnoten/></textdaten></norm>
<norm builddate="20160301215503" doknr="bjnr000010949bjne001800314"><metadaten><jurabk>gg</jurabk><enbez>art 2</enbez></metadaten><textdaten><text format="xml"><content><p>(1) jeder hat das recht auf die freie entfaltung seiner persoenlichkeit, soweit er nicht die rechte anderer verletzt und nicht gegen die verfassungsmaessige ordnung oder das sittengesetz verstoesst.(2) jeder hat das recht auf leben und koerperliche unversehrtheit. die freiheit der person ist unverletzlich. in diese rechte darf nur auf grund eines gesetzes eingegriffen werden.</p></content></text></textdaten></norm>


thank



Arduino Forum > Using Arduino > Project Guidance > [Solved] Large Text file - Single Row Thermal Printer


arduino

Comments

Popular posts from this blog

Error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode - Raspberry Pi Forums

class MPU6050 has no member named begin

missing filename after '-o'