www.mikrocontroller.net

Forum: PC-Programmierung Zeichenkette in C bitweise ausgeben


Autor: kickme (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht 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.
int main(int argc, char* argv[])
{
  unsigned char mask;
  char string[] = "TEST";
  char *temp;
  
  temp = string;  
  while(*temp){
       mask = 0x80;
       while(mask){
      mask >>= 1;
      if(*temp & mask)
        printf("1");
      else
        printf("0");  
    }
    temp++;
  }

return 0;
}
Das printf musst du natürlich durch die Funktion ersetzen die die Daten 
über die serielle Schnittstelle ausgibt

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klausi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.