avr-gcc-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[avr-gcc-list] Re: Strings: escape sequence to insert arbitrary hex valu


From: David Brown
Subject: [avr-gcc-list] Re: Strings: escape sequence to insert arbitrary hex value ?
Date: Thu, 05 Feb 2009 07:58:26 +0100
User-agent: Thunderbird 2.0.0.19 (Windows/20081209)

Vincent Trouilliez wrote:
On Thu, 5 Feb 2009 15:18:44 +1030
"Daniel O'Connor" <address@hidden> wrote:

You can define it like so..
#define  LCD_CUSTOM_CHAR_FOO "\012"

then you can do..
char example[] = "foo" LCD_CUSTOM_CHAR_FOO "bar";

You might be able to do something more clever but I don't know how :)


Thanks Daniel (and Ivan as well, off-list), that worked a treat ! :-)

Only drawback I found, is that I must now have TWO #defines for each and
every custom character: one #define to represent the character as a
string, so I can embed it into a string, and also all the #defines I
already had, which represent the actual numerical value, for when I
need to print an individual/discrete character rather than print a
string. It's not the end of the world, but not very elegant either, so
if anybody has a solution to make do with only one define per character,
I am all ears ;-)


An alternative idea is to find an ASCII character that you don't need otherwise (say, "~"), and use it in your strings. Then do on-the-fly conversion when outputing the strings:

char example[] = "foo~bar";

void lcdWriteString(const char* p) {
        while (char c = *p++) {
                if (c == '~') {
                        lcdWriteChar(LCD_CUSTOM_CHAR_FOO);
                } else {
                        lcdWriteChar(c);
                }
        }
}

As long as you don't have too many, the overhead won't be bad (and the substitute characters won't be too confusing). It should also work with characters >= 128 as the substitutes, I believe.







reply via email to

[Prev in Thread] Current Thread [Next in Thread]