Forum: PC-Programmierung Zeichenkette in C bitweise ausgeben


von kickme (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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).

von Timmo H. (masterfx)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Klausi (Gast)


Lesenswert?

>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
Noch kein Account? Hier anmelden.