【问题标题】:Arduino and Raspberry Pi Serial communication + multiple variablesArduino 和 Raspberry Pi 串行通信 + 多个变量
【发布时间】:2013-08-12 19:39:21
【问题描述】:

我有一个树莓派和一个 arduino。到目前为止,我已经能够让 Pi 使用串行通信向 arduino 发送数据,但是它只发送一个变量,并且我有多个变量(2)要发送到 arduino(x,y 坐标)。有谁知道这是否可能。我希望从 pi 发送的第一个数字是 x,第二个是 y,下一个是下一个坐标的 x。

我尝试编辑用于发送一个变量的代码,但它不起作用。

任何帮助都会很棒

【问题讨论】:

  • 欢迎来到 Stack Overflow!我可以向您推荐这个:meta.stackexchange.com/questions/156810/…
  • 虽然您确实描述了您的问题,但如果不知道您的代码是什么样的,就很难帮助您。访问here 获取有关将代码格式化为您的问题的帮助。使用jsFiddle 来帮助说明您的观点也可能会有所帮助。

标签: serial-port arduino raspberry-pi serial-communication


【解决方案1】:

考虑以下方法同时发送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 代码以将 x 和 y 值发送​​到同一个 uart0_filestream 中。

祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-27
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多