Vanuit serial gekleurde pixels naar mijn TFT sturen

algemene C code
Gebruikers-avatar
Berichten: 118
Geregistreerd: 01 Okt 2015, 11:54
Woonplaats: Castricum

Vanuit serial gekleurde pixels naar mijn TFT sturen

Berichtdoor FonzieBonzo » 04 Mrt 2019, 15:20

Hoi,

Ik wil graag vanuit mijn .NET applicatie afbeeldingen versturen naar mijn arduino-TFT scherm over de seriële poort.
Nu hoop ik dat iemand mij kan helpen met de arduinocode want dat lukt mij niet helemaal.
Mijn gedacht is om een string met waardes te sturen gescheiden door een | teken en een afsluiting met een \n

De eerste twee getallen zijn de start x en Y positie, vervolgens komen er kleurcodes welke op het TFT van links naar rechts als pixel worden ingekleurd.
Hieronder een stukje pseudocode hoe ik het in gedachte had, is iemand slimmer dan mij?

(ps Het zal wel niet de snelse methode zijn maar voor mijn project is dit niet belangrijk)

Gr,
Fonzie



cpp code
String inputString = "";
bool stringComplete = false;

void serialEvent()
{
int offsetX = -1;
int offsetInputString = 0;
int iStartX = 0;
int iStartY = 0;

while (Serial.available()) {
char inChar = (char)Serial.read();
inputString += inChar;
// if the incoming character is a newline, set a flag so the main loop can
// do something about it:
if (inChar == '\n') {
// na een '\n' weet ik dat een lijn met pixels is ontvangen, het eerste en tweede getal zijn de start x en y posities
// voorbeeld ontvangen vanuit serial : 50|60|0x0000|0xF800|0x07E0{\n}

iStartX = // eerste int welke voor het | teken staat
// zet offsetInputString na eerste |
iStartY = // eerste int welke NA het | teken staat
// zet offsetInputString na tweede |
// Nu hebben we de start x en y en komen de kleurcodes
//begin loop de inputString door tot de uiteindelijke '\n'

while (InputString[offsetInputString] != '\n')
{
while (InputString[offsetInputString] != '\n' & InputString[offsetInputString] != '|'
{
offsetInputString = offsetInputString + 1;
// intKleur vullen
} else
{
if (InputString[offsetInputString] == '|' {offsetInputString = offsetInputString + 1;}
tft.drawPixel(iStartX + offsetX, iStartY, intKleur);
offsetX = offsetX + 1;
}
}
inputString = "";
}
}
}

Advertisement

Gebruikers-avatar
Berichten: 116
Geregistreerd: 23 Dec 2011, 00:11
Woonplaats: Enschede

Re: Vanuit serial gekleurde pixels naar mijn TFT sturen

Berichtdoor bigred » 06 Mrt 2019, 09:15

Ik heb wel eens zoiets gedaan:
Code: Alles selecteren
int firstnumber = (incoming_serial.indexOf('W') +1); //first character posistion
int lastnumber = (incoming_serial.indexOf('W'), +4); //last character position
String autodegreestring = (incoming_serial.substring(firstnumber,lastnumber));


Hiermee kun je een deel van de string uitlezen, voorwaarde is wel dat de waarde die de pc verstuurd altijd de zelfde lengte heeft (001 tot 999 bijvoorbeeld).

Gebruikers-avatar
Berichten: 118
Geregistreerd: 01 Okt 2015, 11:54
Woonplaats: Castricum

Re: Vanuit serial gekleurde pixels naar mijn TFT sturen

Berichtdoor FonzieBonzo » 06 Apr 2019, 10:25

Beetje laat (sorry daarvoor bigred) en jou suggestie heeft mij tot de oplossing geleid!

Gr,
Fonzie

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 7 gasten