CSerial einen Hexwert senden



  • Hallo,

    ich habe ein Problem, ich steuere mit mit einer Seriellen-Klasse ein Microprozessor an. Über den ComPort 2.
    Wenn ich folgenden Code nehme funktioniert das alles einwandfrei:

    char	cBuffer[2] = "a"; 
    	CSerial myserial;
    	myserial.Open(2,9600);
    	myserial.SendData(cBuffer,1);
    	myserial.Close();
    

    Die Klasse ist von Codeprojekt.com

    Nun muß ich aber Steuerbefehle senden und zwar als Hexadezimal Code zum Beispiel 0x03 als Befehl zum Display löschen.

    Nun zu meiner Frage wie wandle ich den Hexwert in einen CharBuffer.

    Ich habe folgendes versucht:

    int b = 0x03;
    char cBuffer[5];
    itoa(b,cBuffer,16);
    
    CSerial myserial;
    	myserial.Open(2,9600);
    	myserial.SendData(cBuffer,4);
    	myserial.Close();
    

    Erstellt wird das Programm, aber der Microcontroller sagt es käme nur die Zahl 3 an, welches ein NULLCommand ist(liegt aber am Microcontroller Programm).

    Kann mir vielleicht jemand weiter helfen?
    Danke, schon mal im vorraus. 😋

    Mfg
    Anlen



  • itoa wandelt zahlen in einen String um also wird zum Beispiel 5 zu "5" (entspricht 0x53 und nicht 0x05)

    Wie ich das sehe willst du wies aussieht mehrere Steuerbefehle mit einmal senden, die dann nacheinander abgearbeitet werden.
    Probier mal

    char acBuffer[]={0x03};//Für andere Befehle {0x03,0x09}, damit bleibt das variabel
    
    CSerial myserial;
    myserial.Open(2,9600);
    
    for(int i=0;i<sizeof(acBuffer);i++) //Nacheinander Befehle senden
        myserial.SendData(acBuffer,1);
    
    myserial.Close();
    

    So bleibt das Variabel und wird als HEX übertragen.



  • 😃 😃 😃


Anmelden zum Antworten