1

クライアントからサーバーに配列 adc_array=[w, x, y, z] を送信したいだけです。以下はクライアント側のコードですが、私のサーバーはjsonのみを受け入れるPythonです。コードをコンパイルしてもエラーは発生しませんが、2 つの警告が表示されます。2- 警告: ファイルの最後に改行がありません。

しかし、サーバー側では、配列全体を受け取ることができず、代わりに配列の最初の文字を取得するだけです [ 。

私はCプログラミングが初めてです。助けていただければ幸いです。

// Main function
void FlyportTask()
{
// Flyport connects to default network
WFConnect(WF_DEFAULT);
while(WFGetStat() != CONNECTED);
vTaskDelay(25);
UARTWrite(1,"Flyport Wi-fi connected...hello world!\r\n");

BOOL UdpSocketOpenRequest=TRUE;
BYTE UdpSocket=0;


// openinging UDP socket
if (UdpSocketOpenRequest) //open socket
{
    UdpSocketOpenRequest=FALSE;
    if (UdpSocket!=0) //if this is not equals to zero
    {
        UDPClientClose(UdpSocket);
    }   
    UARTWrite(1,"OpenSocket\r\n");
    UdpSocket= UDPClientOpen("10.0.0.106", "8000"); //Client socket opening 
}


while(1)
{
    //defining pointer
    int *array_pointer;
    int adc_array[4];
    int j;
    char buf[10];       //buffer to print 

    // I have made a separate function to get adc values which returns the pointer to the array.
    array_pointer = get_adcval();

    UARTWrite (1, "ADC Array\r\n");

    for (j = 0; j < 4; j++)
    {
        adc_array[j] = *(array_pointer + j);
        sprintf (buf, "%d", adc_array[j]);
        UARTWrite (1, buf);
        UARTWrite (1, "\n");
    }


    //if UDP socket is open, send the data 
    if ((UdpSocket!=0))
    {
        // defining pointer of serial_out
        char *s_out;
        int size;

        // creating a JSON array from adc_array with 4 elements
        cJSON * int_array = cJSON_CreateIntArray(adc_array,4);

        // Serializing the array
        s_out = cJSON_Print(int_array);

        //Writing to the serial output/monitor
        UARTWrite(1, "\r\narray to be sent\r\n");
        UARTWrite(1, s_out);
        UARTWrite(1,"\r\n");

                    // Assume adc_array=[1021, 1022, 1023, 1024]
                    // I get output [1021, 1022, 1023, 1024]

        //compose message
        size = strlen(s_out);
        UDPWrite (UdpSocket, s_out, size);

                    // at the server side, i just receive only first character i.e. [

        /*to free the memory */
        free(s_out);

    }



    //
    // remember to add delay vTaskDelay(50) 50ms
    //remember to close the socket


}


}
4

2 に答える 2