2013-08-12 4 views
0

У меня есть малина pi и ардуино. До сих пор я мог передавать данные Pi в arduino, используя последовательную связь, однако он посылает только одну переменную, и у меня есть несколько переменных (2), которые я хочу отправить в arduino (координаты x, y). Кто-нибудь знает возможно ли это. Я хочу, чтобы первое число, которое было отправлено из pi, было x, а второе - y, а следующее - x следующего координационного ect.Arduino и Raspberry Pi Последовательная связь + множество переменных

Я пробовал редактировать код, который я использую для отправки одной переменной, но она не работает.

Любая помощь будет удивительным

+1

Добро пожаловать в переполнение стека! Могу ли я направить вас на это: http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist –

+0

Хотя вы описали свою проблему, вам сложно помочь, не зная, как выглядит ваш код. Посетите [здесь] (http://stackoverflow.com/editing-help) за помощью с кодом форматирования в свой вопрос. Также может быть полезно использовать [jsFiddle] (http://jsfiddle.net), чтобы помочь проиллюстрировать вашу точку зрения. –

ответ

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 байт в то время. Имейте это в виду, и с этим вы можете изменить код, чтобы отправить свои значения x и y в тот же uart0_filestream.

Удачи.

Смежные вопросы