Guten Tag. ich möchte über den uart eine 16bit zahl senden. Gibst da noch eine andere Möglichkeit. mfg int x=588 uint8_t HighByte = x >>8; uint8_t LowByte = x ; uart_putc(HighByte); uart_putc(LowByte );
>jens schrieb: >> Gibst da noch eine andere Möglichkeit. >nö Doch! im Prinzip dasselbe, aber etwas direkter...
1 | int x=588 |
2 | UART_putc(*((char*)&x)); |
3 | UART_putc(*((char*)&x+1)); |
1 | int x=588 |
2 | UART_putc(*((char*)&x+1)); //High-Byte? |
3 | UART_putc(*((char*)&x)); //Low-Byte |
Oups, ist doch nicht das selbe, welches das High-Byte oder Low-Byte ist, hängt vom Endian-Mode deines Compiler/CPU Systems ab und ist nicht in jedem Fall portierbar, Deine Methode mit dem shiften hingegen schon! ;o)
ich kann leider nur denn Pixel setzen von 0 bis 255 in X=Richtung sowie in Y=Richtung. Viellesicht kann mir da einer helfen mfg
1 | //SENDEN
|
2 | int x=588 |
3 | int y=388 |
4 | |
5 | uart_putc(13 ); |
6 | uart_putc(*((char*)&x+1)); //High-Byte? |
7 | uart_putc(*((char*)&x)); //Low-Byte |
8 | uart_putc(*((char*)&y+1)); //High-Byte? |
9 | uart_putc(*((char*)&y)); //Low-Byte |
10 | uart_putc( m ); //0=invert,1=not invert |
11 | |
12 | |
13 | //EMPFANG
|
14 | if (c==13) // Set Pixel |
15 | { unsigned char x1,x2,y1,y2,c; |
16 | int xpos; |
17 | int ypos; |
18 | x1=uart_getchar(); //HighByte in X |
19 | x2=uart_getchar(); //LowByte in X |
20 | y1=uart_getchar(); //HighByte in Y |
21 | y2=uart_getchar(); //LowByte in Y |
22 | c=uart_getchar(); //0=invert,1=not invert |
23 | xpos=x1; |
24 | xpos+=x2; |
25 | ypos=y1; |
26 | ypos+=y2; |
27 | lcd_setpixel(xpos,ypos,c); |
28 | }
|
> xpos=x1; > xpos+=x2; Du musst schon die Bytes wieder richtig zusammensetzen. wenn du die Ziffern 2 und 3 hast, wird daraus nicht das Ergebnis 23, indem du die 2 und die 3 addierst. xpos = x1 * 256 + x2; oder xpos = x1 << 8 + x2;
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.