Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: AD128160_kazushi_branch HTTPClient mbed PowerControl WiflyInterface
Fork of FontTest3 by

Please see at http://kazushi-lab.c.fun.ac.jp/pukiwiki/index.php?TwitterMbed
Diff: main.cpp
- Revision:
- 9:86dd65b94dca
- Parent:
- 8:22eb078985b1
- Child:
- 10:94f45d37174f
--- a/main.cpp Sun Feb 10 13:07:29 2013 +0000
+++ b/main.cpp Mon Feb 25 03:26:07 2013 +0000
@@ -35,6 +35,8 @@
unsigned char kstatus = 0;
bool estate = false;
unsigned char unibuf[4];
+unsigned char codes[512];
+bool emergency = false;
unsigned short convert(unsigned short utf){
unsigned short sjis = NULL;
@@ -47,45 +49,56 @@
return sjis;
}
-void drawChar(unsigned char c){
- if(estate && kstatus==4){ // 1st digit of utf-16
- unibuf[3] = c;
- char *endptr;
- unsigned short code = convert(strtol((char*)unibuf, &endptr, 16));
- //kanji_init();
- color(0xffff);
- k_puts(code);
- //kanji_end();
-#ifdef _DEBUG
- pc.printf("%s, %x\r\n", unibuf, code);
-#endif
- kstatus = 0;
- estate = false;
- } else if(estate && kstatus==3){ // 2nd digit of utf-16
- unibuf[2] = c;
- kstatus = 4;
- } else if(estate && kstatus==2){ // 3rd digit of utf-16
- unibuf[1] = c;
- kstatus = 3;
- } else if(estate && kstatus==1){ // 4th digit of utf-16
- unibuf[0] = c;
- kstatus = 2;
- } else if(estate && c=='u'){
- kstatus = 1;
- } else if(estate && !c=='u'){
- drawc(c);
- kstatus = 0;
- estate = false;
- } else if(c=='\\'){ // escape code
- estate = true;
- } else { // 4x8font
- drawc(c);
+void parseCode(const unsigned char* s){
+ unsigned int i = 0;
+ unsigned char c;
+
+ emergency = false;
+ while((c = *s++) != '\0') {
+ if(estate && kstatus==4){ // 1st digit of utf-16
+ unibuf[3] = c;
+ char *endptr;
+ unsigned short code = convert(strtol((char*)unibuf, &endptr, 16));
+ codes[i] = code>>8 & 0xFF;
+ i++;
+ codes[i] = code & 0xFF;
+ i++;
+ if(code==0x8149) emergency = true;
+ #ifdef _DEBUG
+ pc.printf("%s, %x\r\n", unibuf, code);
+ #endif
+ kstatus = 0;
+ estate = false;
+ } else if(estate && kstatus==3){ // 2nd digit of utf-16
+ unibuf[2] = c;
+ kstatus = 4;
+ } else if(estate && kstatus==2){ // 3rd digit of utf-16
+ unibuf[1] = c;
+ kstatus = 3;
+ } else if(estate && kstatus==1){ // 4th digit of utf-16
+ unibuf[0] = c;
+ kstatus = 2;
+ } else if(estate && c=='u'){
+ kstatus = 1;
+ } else if(estate && !c=='u'){
+ drawc(c);
+ kstatus = 0;
+ estate = false;
+ } else if(c=='\\'){ // escape code
+ estate = true;
+ } else { // 4x8font
+ codes[i] = c;
+ i++;
+ if(c=='!') emergency = true;
+ }
}
+
+ codes[i]= '\0';
}
void drawString(const unsigned char *s){
unsigned char c;
- while((c = *s++) != '\0') drawChar(c);
+ while((c = *s++) != '\0') drawc(c);
}
int connect(){
@@ -146,11 +159,12 @@
#ifdef _DEBUG
pc.printf("%s\r\n", c);
#endif
- color(0x001f);
+ //c = strtok(c, "@");
+ parseCode((unsigned char*)c);
+ if(emergency) color(0xf800); else color(0x001f);
cls();
color(0xffff);
- //c = strtok(c, "@");
- drawString((unsigned char*)c); newline();
+ drawString(codes); newline();
//c = strtok(NULL, "@");
//drawString((unsigned char*)c); newline();
break;
@@ -160,7 +174,7 @@
led2 = 0;
- //delete [] buf;
+ delete [] buf;
}
int main() {
