Hallo zusammen, ich möchte in C gerne über rs232 ein Display ansteuern. Dazu Soll ein eingegebener Text von C so umgewandelt werden, dass C 8 Byte aus jedem eingegebenen zeichen macht und bitweise über die rs232 schickt. "space" ist z.B. 00000000,00000000 00000000,00000000 00000000,00000000 00000000,00000000 Nun weiß ich nicht, wie ich ein geschriebenes Wort mit C einzeln auslese (hoffe ich drücke mich richtig aus) C müsste also bei dem wort "TEST" erst das T auslesen und 8 byte daraus machen, dann aus E 8 Byte usw. Eine Tabelle, welches Zeichen was für Bytes hat habe ich. #include<stdio.h> int main() { char Eingabe; do{ system("cls"); printf ("Bitte geben sie ein Wort ein (8 Zeichen)\n"); fflush(stdin); scanf ......??????? bin dankbar für jede Hilfe Gruß Kickme
kickme wrote: > Hallo zusammen, > ich möchte in C gerne über rs232 ein Display ansteuern. > Dazu Soll ein eingegebener Text von C so umgewandelt werden, dass C 8 > Byte aus jedem eingegebenen zeichen macht und bitweise über die rs232 > schickt. > > "space" ist z.B. 00000000,00000000 > 00000000,00000000 > 00000000,00000000 > 00000000,00000000 > > Nun weiß ich nicht, wie ich ein geschriebenes Wort mit C einzeln auslese > (hoffe ich drücke mich richtig aus) > C müsste also bei dem wort "TEST" erst das T auslesen und 8 byte daraus > machen, dann aus E 8 Byte usw. > Eine Tabelle, welches Zeichen was für Bytes hat habe ich. > > #include<stdio.h> > int main() > { > char Eingabe; So schon mal gar nicht. Der Datentyp char akzeptiert grade mal 1 Zeichen. Für einen String brauchst du aber viele Zeichen. Kram das C-Lehrbuch deiner Wahl hervor und lies im Abschnitt über Strings nach, wie das in C geht Warum glaubt eigentlich jeder, dass er programmieren ohne vernünftige Unterlagen lernen kann? Man kann es nicht! Einen Computer programmieren ist weitaus schwieriger als alles andere, was dir im täglichen Leben unterkommt (ausser vielleicht die vereinheitlichte Feldtheorie zu finden).
Bist du sicher, dass du so einen Overhead produzieren willst? Warum sendest du es nicht einfach so wie der String ist? Sehe ich das richtig, dass du jedes Bit als ein Zeichen übertragen willst? Also angenommen du willst das Zeichen "3" übertragen (das wäre 0x33), dann willst du 0011,0011 übertragen? Das kannst du ganz einfach mit einer Maske lösen, die du immer weiterschiebst.
1 | int main(int argc, char* argv[]) |
2 | {
|
3 | unsigned char mask; |
4 | char string[] = "TEST"; |
5 | char *temp; |
6 | |
7 | temp = string; |
8 | while(*temp){ |
9 | mask = 0x80; |
10 | while(mask){ |
11 | mask >>= 1; |
12 | if(*temp & mask) |
13 | printf("1"); |
14 | else
|
15 | printf("0"); |
16 | }
|
17 | temp++; |
18 | }
|
19 | |
20 | return 0; |
21 | }
|
Das printf musst du natürlich durch die Funktion ersetzen die die Daten über die serielle Schnittstelle ausgibt
Mir scheint, der Threadstarter möchte Bitmapmuster ausgeben, um so
eine Art "ASCII-Art" zu erzeugen.
Darauf lässt mich jedenfalls
> Eine Tabelle, welches Zeichen was für Bytes hat habe ich.
schließen.
>T auslesen und 8 byte daraus >machen, dann aus E 8 Byte usw. Super witzig... den Speicherbedarf eines Zeichens mal eben verachtfachen... super!!<grin> SCNR
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.