我有一个树莓派和一个 arduino。到目前为止,我已经能够让 Pi 使用串行通信向 arduino 发送数据,但是它只发送一个变量,并且我有多个变量(2)要发送到 arduino(x,y 坐标)。有谁知道这是否可能。我希望从 pi 发送的第一个数字是 x,第二个是 y,下一个是下一个坐标的 x。
我尝试编辑用于发送一个变量的代码,但它不起作用。
任何帮助都是极好的
我有一个树莓派和一个 arduino。到目前为止,我已经能够让 Pi 使用串行通信向 arduino 发送数据,但是它只发送一个变量,并且我有多个变量(2)要发送到 arduino(x,y 坐标)。有谁知道这是否可能。我希望从 pi 发送的第一个数字是 x,第二个是 y,下一个是下一个坐标的 x。
我尝试编辑用于发送一个变量的代码,但它不起作用。
任何帮助都是极好的
考虑以下方法同时发送 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 值。
祝你好运。