Hex als char Array über UDP-Socket verschicken

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

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

    Source Code

    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 :

    Source Code

    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:

    Source Code

    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));
    Display All