C RbPi UART远程控制插座

C RbPi UART远程控制插座,c,sockets,raspberry-pi,uart,remote-control,C,Sockets,Raspberry Pi,Uart,Remote Control,我想在我的raspberry pi上没有额外的库的情况下远程控制我房间手册中的插座。我想用C语言的UART接口。这个插座有433MHz的接收机,我用的是433MHz的发射机。在其他图书馆,你可以输入这样的内容:发送11111。插座代码、插座编号、状态。但是如何在C中使用write函数格式化这个命令呢?10表示字符数。我使用下面的代码。我通过minicom测试了输出,效果很好。但是接收者现在怎么知道这是一个地址呢 #include <stdio.h> #include <stri

我想在我的raspberry pi上没有额外的库的情况下远程控制我房间手册中的插座。我想用C语言的UART接口。这个插座有433MHz的接收机,我用的是433MHz的发射机。在其他图书馆,你可以输入这样的内容:发送11111。插座代码、插座编号、状态。但是如何在C中使用write函数格式化这个命令呢?10表示字符数。我使用下面的代码。我通过minicom测试了输出,效果很好。但是接收者现在怎么知道这是一个地址呢

#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;
}

我是否理解正确:您通过UART发送一个命令,通过无线收发器传输消息。嗅探UART输出证明您的代码正常,即TX line发送您希望它在软件中发送的内容,实际问题是rx模块如何获取该消息/如何使rx模块获取该消息


如果是这样的话,主要的问题是你实际使用的是什么样的无线电收发或TRX,我是指芯片/模块代码,如CC1120、NRF2401等。?有很多433MHz的无线电模块可用,我想首先查阅他们的数据表,或者至少在这里张贴零件号是正确的方法。

我想:协议提供了一个必须放置从机地址的字段。或者通信是1->1,就像RS232一样,只允许1个从机。我假设每个套接字都有不同的代码,对吗?是的,主代码是11111,套接字代码从a到E,所以我认为a是1。然后是开的条件1。是的,完全正确。我测试了从计算机引脚到TX的输出,但没有测试从TX天线到RX的输出。。我不知道如何发送字符串或单个字符,有空格或没有。。我使用这种类型的TX:。插座是433,92 MHz的普通远程插座,它们都有相同的代码,我可以更改,遥控器也有这个代码,所以插座知道它是地址,并且有一个插座号a到E。所以第一个插座的地址是这样的:11111代码代表所有插座+1A=1作为数字1,1代表打开。当我给TX通电和接地并向其发送数据时,它会立即发送数据,这对吗?只是为了确保它会被传输。我现在所能推荐的就是尝试将RPI与插座的远程控制连接起来,或者用您拥有的RX替换插座内的无线电模块,并添加一些逻辑来控制它。出于安全性考虑,我会选择第一种解决方案,而且复杂度可能更低。如果不知道插座的确切射频参数和您的发送,您现在想要实现的目标是不可能的,即使在这种情况下,也不值得这么做。尝试编辑之前的评论,但为时已晚:您的发送应该和设计用于其接收,而通常没有其他功能,因此,改变解决问题的方法似乎是最好的解决方案。不,TX与插座一起工作。我用一些python库对它进行了测试,但我认为它也可以直接使用UART,也许可以。我将搜索C库并对其进行测试。谢谢你的帮助,也许有一天会有用的。