-
Notifications
You must be signed in to change notification settings - Fork 1
/
glcd.ino
76 lines (57 loc) · 1.29 KB
/
glcd.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/**
Author: (c) Joseph Cheng
last updated: 2012/7/3
**/
#include <glcd.h>
#define SOP '{'
#define EOP '}'
boolean started = false;
boolean ended = false;
char inData[17]; // sx,sy:dx,dy;
byte index = 0;
unsigned int sx; // 0 ~ 128
unsigned int sy; // 0 ~ 64
unsigned int dx;
unsigned int dy;
void setup() {
// Initialize serial
Serial.begin(9600);
// Initialize GLCD
GLCD.Init(NON_INVERTED);
}
void loop() {
if(Serial.available()) {
while(Serial.available() > 0) {
char inChar = Serial.read();
if(inChar == SOP) {
index = 0;
inData[index] = '\0';
started = true;
ended = false;
} else if(inChar == EOP) {
ended = true;
break;
} else {
inData[index++] = (char) inChar;
inData[index] = '\0';
}
}
if(started && ended) {
Serial.println(inData);
if(strcmp(inData, "c") == 0) {
GLCD.ClearScreen();
}
if(sscanf(inData, "%d,%d:%d,%d", &sx, &sy, &dx, &dy) == 4) {
GLCD.DrawLine(sx, sy, dx, dy, BLACK);
}
// Reset for the next packet
started = false;
ended = false;
index = 0;
inData[index] = '\0';
}
}
}
inline const char * const BoolToString(bool b) {
return b ? "true" : "false";
}