unsigned char in array "buxieren" ?!



  • Hallo zusammen,

    ich stehe vor einem "kleinen" Problem. Ich habe eine Funktion welche ich zwar nicht selbst geschrieben habe, aber ich glaube ich habe sie verstanden. Nun muss ich die Funktion etwas abändern (->Problem 😉 )

    hier der Code:

    void UDP(void)
    {
       SCHAR socket_no;
       PSOCKET_INFO socket_ptr;
       byte *data_ptr;
       word16 data_len;
       int status;
    
       socket_no = mn_open(ip_dest_addr,DEFAULT_PORT,ECHO_PORT,NO_OPEN,PROTO_UDP,\
                           STD_TYPE,data_buff,DATA_BUFF_LEN);
    
       data_ptr = &Data_1;        //Hier ist mein Problem, denk ich (?)
       data_len = strlen((char *)Data);
    
       if (socket_no < 0)
       {
          return;
       }
    
       socket_ptr = MK_SOCKET_PTR(socket_no);    // Get pointer to the socket
    
       status = 0;
       status = mn_send(socket_no,data_ptr,data_len);
       status = 0;
       data_ptr = &Data_2;                //und hier das gleich nochmal.
       data_len = strlen((char *)Data_2);
       status = mn_send(socket_no,data_ptr,data_len);
       status = 0;
       mn_abort(socket_no);
    }
    

    Ursprünglich stand statt dem data_ptr = &Data da ein

    data_ptr = ECHOSTRING[8]={0}
    

    . Mit einem String hat auch alles funktioniert, da der data_ptr dann ja auch auf die Startadresse zeigt. Leider kommen meine Daten in einem

    unsigned char Data
    

    an. Die mn_send Funktion erwartet aber für data_ptr : " Adress of the Buffer containing the Data to send ". Das habe ich irgendwie nicht hinbekommen.
    In Data_1 enthält dabei den oberen 8Bit-Bereich und Data_2 den unteren 8Bit-Bereich einer eigentlich zusammenhängenden Nachricht.

    Nun zu meiner Frage:
    Wie kann ich den 8-Bit-Inhalt von

    unsigned char Data_1 und Data_2
    

    in ein passendes Array schreiben? 😕 Die Bitweise-Operatoren habe ich mir angeschaut, aber mein Hirn hängt irgendwie an einer FOR-Schleife die dann schön alle Bits hintereinander anordnet.

    Könnt Ihr mir helfen???

    Danke schon im Voraus,
    Michael

    (Hintergrund-Info)
    Das ganze ist für die Auswertung von Sensordaten die über SPI an einen µC gesendet werden. Diese Daten sollen dann über UDP an einen PC weiter geleitet werden.



  • Wie kann ich den 8-Bit-Inhalt von unsigned char Data_1 und Data_2 in ein passendes Array schreiben?

    unsigned char[] arr = {Data_1, Data_2};



  • wennze zwei mal ein byte verschickst, macht es nicht viel sinn für jedes byte nen strlen abzufragen, ne.



  • ugga ugh schrieb:

    wennze zwei mal ein byte verschickst, macht es nicht viel sinn für jedes byte nen strlen abzufragen, ne.

    da hast du allerdings recht 😉

    Das mit dem Array werd ich noch testen. danke schonmal!



  • Danke für die Hilfe, es läuft einwandfrei 👍
    (zumindest hat es den anschein...🙄 )

    Schönen Dank!


Anmelden zum Antworten