- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 5 von 5

Thema: ASCII Zeichen über serielle Schnittstelle ausgeben??

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.03.2007
    Beiträge
    7

    ASCII Zeichen über serielle Schnittstelle ausgeben??

    Anzeige

    E-Bike
    Hallo,

    ich programmiere gerade kleine Miniroboter und benutze Visual C++ in VS 2005.

    Die Roboter brauchen die Zahlen 0-255 als ASCII-Zeichen, d.h. wenn ich ihnen "50" schicken möchte muss ich ihnen "P" schicken.

    Wie kann ich mit .NET ein Integer in ein ASCII-Zeichen umwandeln, das ich dann in der Konsole oder über eine serielle Schnittstelle ausgeben kann?

    Das muss doch irgendwie mit der Encoding-Klasse funktionieren, ich bekomms aber nicht hin.

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    16.10.2005
    Ort
    Adendorf
    Alter
    42
    Beiträge
    46
    die meisten c bibliotheken bieten eine Funktion die sich itoa() nennt (integer to ascii).
    http://wsgs.blogspot.com

    Wenn deine Freundin denkt,du bist bei deiner Frau,und deine Frau denkt,du bist bei deiner Freundin, dann hast du endlich Zeit ins Labor zu gehen

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    itoa macht aus int i=50 einen string "50". das ist glaube ich nicht erwünscht. allerdings verwende ich kein ".NET".
    ich würde sowas machen:
    Code:
    #include <stdio.h>
    char ch[2];
    int wert=50;
    sprintf(ch,"%c",wert);

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    24.01.2007
    Beiträge
    53
    @ maetsches

    Hallo du am einfachsten ist es wenn du den ASCII Wert als HEX Wert abspeicherst und diesen dann ausgibst.
    Und noch besser wäre es dann noch das ganze in einer unsigned char Variable zu peichern als in einer int, da diese doppelt so groß ist.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    Ist es wirklich nur ein zeichen oder in wirklich kein ein string ?
    Die String klasse kann nämlich ein Array of byte zurück geheben.

    im Übrigen geben ich michas_rob recht wenn nur die werte 0 - 255 gehen da ist ein int zu groß klar bei den heutige PC macht es nix aus aber ich gehöre hal noch zu den die mal mit C16 angefangen haben wo es nur 16K hauptspeicher gab.

    Wenn es wirklich ein int über tragen werden soll da müsste das Funktionieren:

    int nWert = 320;

    BYTE nChar1 = LOBYTE(nWert);
    BYTE nChar2 = HIBYTE(nWert);

    oder

    BYTE nChar1 = nWert >> 8;
    BYTE nChar2 = nWert;

    Man müsste das ziel genauer kennen.

    itoa() ist leider die Falsche antwort das würde auf dem int mit dem wert 50
    drei Bytes machen <35><30><00>. das nur so am rande


    Gruß
    P: Meine Tochter (06.11.07) und https://www.carnine.de
    M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen