Added sorting & cz characters support
This commit is contained in:
parent
7f6cb1b950
commit
e448385949
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
|||
config.py
|
||||
*.pyc
|
||||
assets
|
||||
|
|
1432
client/Ubuntu_24px.h
Normal file
1432
client/Ubuntu_24px.h
Normal file
File diff suppressed because it is too large
Load diff
|
@ -4,9 +4,10 @@
|
|||
#include "freertos/queue.h"
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include "Ubuntu_24px.h"
|
||||
|
||||
M5GFX display;
|
||||
M5Canvas canvas(&display);
|
||||
//M5GFX display;
|
||||
//M5Canvas canvas(&display);
|
||||
M5_LoRaWAN LoRaWAN;
|
||||
|
||||
String response;
|
||||
|
@ -15,15 +16,18 @@ void setup() {
|
|||
M5.begin();
|
||||
LoRaWAN.Init(&Serial2, 13, 14);
|
||||
delay(100);
|
||||
display.begin();
|
||||
display.setTextSize(1);
|
||||
canvas.setColorDepth(1); // mono color
|
||||
canvas.createSprite(display.width(), display.height());
|
||||
canvas.setTextSize((float)canvas.width() / 160);
|
||||
canvas.setTextScroll(true);
|
||||
//canvas.setFreeFont(&Pixel2_24px);
|
||||
|
||||
display.println("Module Connect.....");
|
||||
//display.begin();
|
||||
//display.setTextSize(1);
|
||||
//canvas.setColorDepth(1); // mono color
|
||||
//canvas.createSprite(display.width(), display.height());
|
||||
//canvas.setTextSize((float)canvas.width() / 160);
|
||||
//canvas.setTextScroll(true);
|
||||
M5.Lcd.begin();
|
||||
M5.Lcd.setTextSize(1);
|
||||
M5.Lcd.setFreeFont(&Ubuntu_24px);
|
||||
|
||||
//display.println("Module Connect.....");
|
||||
M5.Lcd.drawString("Checking LoraWAN module...", 0, 0);
|
||||
while (!LoRaWAN.checkDeviceConnect())
|
||||
;
|
||||
LoRaWAN.writeCMD("AT?\r\n");
|
||||
|
@ -109,7 +113,7 @@ struct departure {
|
|||
};
|
||||
|
||||
struct departure departures[20];
|
||||
int departure_index = 0;
|
||||
int departureIndex = 0;
|
||||
|
||||
struct departure parseDeparture(String s) {
|
||||
struct departure d;
|
||||
|
@ -120,27 +124,35 @@ struct departure parseDeparture(String s) {
|
|||
return d;
|
||||
}
|
||||
|
||||
void displayDeparture(struct departure d) {
|
||||
canvas.print(d.line);
|
||||
canvas.print(" ");
|
||||
canvas.print(d.last_stop);
|
||||
canvas.print(" ");
|
||||
void displayDeparture(struct departure d, int y) {
|
||||
M5.Lcd.drawString(d.line, 0, y*30);
|
||||
M5.Lcd.drawString(d.last_stop, 40, y*30);
|
||||
String departure = "<1";
|
||||
if(d.departure >= 10) departure = String(d.departure/10);
|
||||
canvas.print(departure);
|
||||
canvas.println("");
|
||||
if(departure.length() == 1) departure = " " + departure;
|
||||
M5.Lcd.drawString(departure, 290, y*30);
|
||||
}
|
||||
|
||||
int departureComparation(const void *a,const void *b) {
|
||||
departure *x = (departure *) a;
|
||||
departure *y = (departure *) b;
|
||||
return x->departure - y->departure;
|
||||
}
|
||||
|
||||
void sortDepartures() {
|
||||
qsort(departures, departureIndex, sizeof(departure), departureComparation);
|
||||
}
|
||||
|
||||
void removeDeparture(int pos) {
|
||||
for (int i = pos; i < departure_index-1; i++) {
|
||||
for (int i = pos; i < departureIndex-1; i++) {
|
||||
departures[i] = departures[i+1];
|
||||
}
|
||||
departure_index--;
|
||||
departureIndex--;
|
||||
}
|
||||
|
||||
void addDeparture(String s) {
|
||||
struct departure d = parseDeparture(s);
|
||||
for(int i=0; i<departure_index; i++) {
|
||||
for(int i=0; i<departureIndex; i++) {
|
||||
if(departures[i].id == d.id) {
|
||||
if(d.line != "") departures[i].line = d.line;
|
||||
if(d.last_stop != "") departures[i].last_stop = d.last_stop;
|
||||
|
@ -149,9 +161,13 @@ void addDeparture(String s) {
|
|||
}
|
||||
}
|
||||
if(d.line == "" || d.last_stop == "") return;
|
||||
departures[departure_index] = d;
|
||||
displayDeparture(departures[departure_index]);
|
||||
departure_index++;
|
||||
departures[departureIndex] = d;
|
||||
departureIndex++;
|
||||
sortDepartures();
|
||||
}
|
||||
|
||||
departure* getDepartures() {
|
||||
return departures;
|
||||
}
|
||||
|
||||
time_t seconds;
|
||||
|
@ -167,13 +183,19 @@ void loop() {
|
|||
seconds = time(NULL);
|
||||
if(seconds / 6 > last_update) {
|
||||
last_update++;
|
||||
canvas.fillSprite(TFT_BLACK);
|
||||
for(int i=0; i<departure_index; i++) {
|
||||
departures[i].departure -= 1;
|
||||
if(departures[i].departure < -3) removeDeparture(i);
|
||||
displayDeparture(departures[i]);
|
||||
//canvas.fillSprite(TFT_BLACK);
|
||||
departure *results = getDepartures();
|
||||
int lines = 7;
|
||||
for(int i=0; i<=lines; i++) {
|
||||
M5.Lcd.fillRect(0, i*30, 320, 30, BLACK);
|
||||
if(i < departureIndex) {
|
||||
displayDeparture(results[i], i);
|
||||
}
|
||||
if(i == lines) {
|
||||
M5.Lcd.drawString(String(last_update), 0, i*30);
|
||||
}
|
||||
}
|
||||
}
|
||||
canvas.pushSprite(0, 0);
|
||||
//canvas.pushSprite(0, 0);
|
||||
delay(10);
|
||||
}
|
Loading…
Reference in a new issue