首页 文章

Arduino和Raspberry Pi串口通信多个变量

提问于
浏览
0

我有覆盆子pi和arduino . 到目前为止,我已经能够使用串行通信将数据发送到arduino,但它只发送一个变量,我有多个变量(2)我想发送到arduino(x,y坐标) . 有谁知道这是否可能 . 我希望从pi发送的第一个数字是x,第二个数字是y,下一个是下一个坐标的x .

我已经尝试编辑我用来发送一个变量的代码,但它不起作用 .

任何帮助都是极好的

1 回答

  • 2

    考虑以下方法同时发送2个变量:

    int xpos, ypos;
    
        char x_tx_buffer[20], y_tx_buffer[20];
        char x_dummy_buffer[20];
        char y_dummy_buffer[20];
        char *p_x_tx_buffer, *p_y_tx_buffer;
    
        sprintf(x_dummy_buffer,"%d", xposs);
        sprintf(y_dummy_buffer,"%d", yposs);
    
        p_x_tx_buffer = &x_tx_buffer[0];
        *p_x_tx_buffer++ = x_dummy_buffer[0];
        *p_x_tx_buffer++ = x_dummy_buffer[1];
        *p_x_tx_buffer++ = x_dummy_buffer[2];
        *p_x_tx_buffer++ = x_dummy_buffer[3];
    
        p_y_tx_buffer = &y_tx_buffer[0];
        *p_y_tx_buffer++ = y_dummy_buffer[0];
        *p_y_tx_buffer++ = y_dummy_buffer[1];
        *p_y_tx_buffer++ = y_dummy_buffer[2];
        *p_y_tx_buffer++ = y_dummy_buffer[3];
        uart0_filestream = open("/dev/ttyAMA0", O_RDWR | O_NOCTTY | O_NDELAY);      //Open in non blocking read/write mode
        if (uart0_filestream == -1)
        {
            //ERROR - CAN'T OPEN SERIAL PORT
            printf("Error - Unable to open UART.  Ensure it is not in use by another application\n");
        }
        if (uart0_filestream != -1)
        {
            int countx = write(uart0_filestream, &x_tx_buffer[0], (p_x_tx_buffer - &x_tx_buffer[0]));       //Filestream, bytes to write, number of bytes to write
            int county = write(uart0_filestream, &y_tx_buffer[0], (p_y_tx_buffer - &y_tx_buffer[0]));       //Filestream, bytes to write, number of bytes to write
            if (countx < 0 || county < 0)
            {
                printf("UART TX error\n");
            }
        }
        close(uart0_filestream);
    

    您一次最多可以发送8个字节 . 记住这一点,你可以修改about代码,在同一个uart0_filestream中发送你的x和y值 .

    祝好运 .

相关问题