Я хочу использовать разъемы дистанционного управления в моей ручной комнате без дополнительной библиотеки на моем малиновом пи. Я хочу использовать интерфейс 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;
}
Я предполагаю: протокол обеспечивает подачу, где вы должны поместить ведомый адрес. Или сообщение 1-> 1 (например, RS232), и разрешено только одно подчиненное. – LPs
Ну, я бы предположил, что каждый сокет имеет другой код, верно? – immibis
да, главный код 11111, а код сокета - от A до E, поэтому A - это я, я думаю. а затем условие 1 для «включено». – Sven