Using the F() macro to save text for LCD in flash


i've run problem library i'm using, i'm guessing it's little detail fix, i'm @ loss.
normally,  lcds , libraries, this:
lcd.println(f("hello worl"));

i have lcd/keyboard controller comes library manufacturer wrote.  works (so far) except can't save text flash memory via f().  example be:
code: [select]

disp.lcd_cls(); // clear display
disp.lcd_rowcol(0, 2); //row, col
disp.lcd_print("drill table menu");


in example, need this, won't work:
code: [select]
disp.lcd_print(f("drill table menu"));

it this lcd/keypad controller seen here:

i'm using i2c, , the library here, wrote.  talked him it, , wasn't familiar flash () function.
is hard implement library? have lot of text display , have have f() function.
thanks,
 

quote
is hard implement library?
no... although haven't looked @ code, because won't download external sites.  if attach post, take look.  there 2 easy ways:

1)  derived class print class.  you must make sure single-character write method overridden in class:

        virtual size_t write(uint8_t c); 

the print class use method provide other print methods (int, float, char *, etc.).

2)  add method class, using print.cpp example:

code: [select]
size_t lcdclassname::print(const __flashstringhelper *ifsh)
{
  pgm_p p = reinterpret_cast<pgm_p>(ifsh);
  size_t n = 0;
  while (1) {
    unsigned char c = pgm_read_byte(p++);
    if (c == 0) break;
    if (write(c)) n++;
    else break;
  }
  return n;
}

the f macro result of type const __flashstringhelper *, that's method need provide.

the first technique best, may able eliminate bunch of code library, duplicating print class providing.  the second technique may quicker if aren't familiar c++ classes.

cheers,
/dev



p.s. print class source code, print.h , print.cpp,  in arduino install directory, under hardware/arduino/avr/cores/arduino.


Arduino Forum > Using Arduino > Programming Questions > Using the F() macro to save text for LCD in flash


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'