Hex als char Array über UDP-Socket verschicken

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hex als char Array über UDP-Socket verschicken

    Hallo.

    Ich muss Hex-Werte mit Hilfe von Winsock über ein UDP-Socket verschicken, die dann von einer Steuerbox ausgewertet werden.
    Da die "sendto" Funktion von Winsock ein Char-Array erwartet, muss ich das entsprechend umwandeln.
    Mein Problem liegt daran, dass VS-2005 das umgewandelte Char-Array in ASCII zerlegt und dann das convertierte Array an meine Steuerbox schickt.
    Und aus '050E18' wird '303530453138', was meine Steuerbox natürlich nicht versteht.
    (Das lasse ich mir mit Wireshark anzeigen.)

    Quellcode

    1. int a,b;
    2. a = 05;
    3. b = 14;
    4. c = 18;
    5. sprintf(buffer, "%x%x%x", a, b, c);
    6. ...
    7. rc=sendto (s,buffer,sizeof(buffer),0,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
    (Das erstellen des Sockets usw. habe ich zur besseren Übersicht weggelassen)

    Wenn ich die Signale hart reinschreiben kann, dann komme ich mit :

    Quellcode

    1. char buffer[]= "\x05\x0e\x18";
    2. ...
    3. rc=sendto (s,buffer,sizeof(buffer),0,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));


    auf genau das, was ich möchte. Allerdings ist das keine Option.

    Das Problem ist auch, da ich diesen Code in einer Matlab S-Function nutze, muss ich mit integer Variablen arbeiten.

    Habt ihr eine Idee, wie ich das Lösen kann?
    Danke.
  • Okay, ein Arbeitskollege konnte mir einen Lösungsweg sagen:

    Quellcode

    1. int a[3];
    2. a[0] = 5;
    3. a[1] = 14;
    4. a[2] = 24;
    5. for(int i=0;i<3;i++)
    6. {
    7. printf("%x\n", a[i]);
    8. buf[i]=a[i];
    9. }
    10. rc=sendto (s,buf,sizeof(buf),0,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
    Alles anzeigen