2015-05-14 2 views
1

Я хочу использовать разъемы дистанционного управления в моей ручной комнате без дополнительной библиотеки на моем малиновом пи. Я хочу использовать интерфейс UART в C. Сокет имеет приемник 433 МГц, и я использую передатчик 433 МГц. В других библиотеках вы вводите что-то вроде этого: send 11111 1 1. (код сокета, номер сокета, условие). Но как отформатировать эту команду в C с помощью функции write()? 10 - количество символов. Я использую этот код ниже. Я тестировал выход через minicom, который отлично работает. Но как теперь приемник знает, что он был адресован?C RbPi UART Пульты дистанционного управления

#include <stdio.h> 
#include <string.h> 
#include <unistd.h> 
#include <fcntl.h> 
#include <errno.h> 
#include <termios.h> 

int main(int argc, char ** argv) { 
    int fd; 
    // Open the Port. We want read/write, no "controlling tty" status, and open i$ 
    fd = open("/dev/ttyAMA0", O_RDWR | O_NOCTTY | O_NDELAY); 
    if (fd == -1) { 
    perror("open_port: Unable to open /dev/ttyAMA0 - "); 
    return(-1); 
    } 

    // Turn off blocking for reads, use (fd, F_SETFL, FNDELAY) if you want that 
    fcntl(fd, F_SETFL, 0); 

// Write to the port 
    int n = write(fd,"11111 1 1",10); 
    if (n < 0) { 
    perror("Write failed - "); 
    return -1; 
    } 

    // Don't forget to clean up 
    close(fd); 
    return 0; 
} 
+0

Я предполагаю: протокол обеспечивает подачу, где вы должны поместить ведомый адрес. Или сообщение 1-> 1 (например, RS232), и разрешено только одно подчиненное. – LPs

+0

Ну, я бы предположил, что каждый сокет имеет другой код, верно? – immibis

+0

да, главный код 11111, а код сокета - от A до E, поэтому A - это я, я думаю. а затем условие 1 для «включено». – Sven

ответ

0

Правильно ли вы: вы отправляете команду через UART для передачи сообщения через радиопередатчик. Вынюхивание выхода UART подтверждает ваш код в том смысле, что линия TX отправляет то, что вы хотите отправить в программное обеспечение, и фактический вопрос: «Как модуль rx получает это сообщение/как заставить модуль rx получить его?»

Если это так, главный вопрос заключается в том, какие радиостанции TX/RX или TRX вы используете (я имею в виду коды чипов/модулей, такие как CC1120, NRF2401 и т. Д.)? Есть много радиомодулей 433 МГц, я полагаю, что сначала советую их спецификацию или, по крайней мере, опубликовать номер детали, это правильный путь.

+0

Да точно. Я тестировал вывод с компьютерного штыря на TX, но не от антенны TX до RX. Я не знаю, как его отправить (в строковых или одиночных символах с пространством или без). I используйте этот тип TX: http://goo.gl/HP5PEc. И сокеты - это обычные удаленные сокеты с частотой 433,92 МГц. Все они имеют один и тот же код, который я могу изменить, также у пульта дистанционного управления есть этот код, поэтому сокет знает, что он адресован, и у них есть номер сокета от A до E. So первый сокет будет адресован следующим образом: 11111 (код для всех сокетов) +1 (A = 1 как номер 1) и 1 (для включения). – Sven

+0

Это rx-сокет: http://goo.gl/aJhmLF – Sven

+0

Правильно ли, когда я могу подавать и передавать данные на него, он сразу же передает его? Просто чтобы быть уверенным, что он будет передан. – Sven

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