正如标题所说。我正在尝试与远程串行设备通信。我知道我可以通过套接字编程作为客户端应用程序来做到这一点。
socket_FD = socket(AF_INET, SOCK_STREAM, 0);
当我连接到远程串行设备时,我可以使用 read() 和 write() 函数从远程串行设备传输和接收数据。
接收:
n = read(socket_FD, recvBuff, sizeof(recvBuff)-1)) > 0);
传输:
n = write(socket_FD, bufftosend, strlen(bufftosend));
现在让我在客户端应用程序(例如浏览器)之外发送数据,我将利用管道(FIFO)并在 linux 中创建这个管道。我发送的所有数据都将被重定向到远程串口。
通过终端向管道发送数据:
echo "THIS IS A COMMAND" > /path/to/FIFO
通过 php 向管道发送数据:
fd = fopen("/path/to/FIFO", "w");
fwrite(fd, "THIS IS A COMMAND");
fclose(fd);
我的客户端应用程序将读取此管道,并在收到数据时将其发送到远程串行。
while((n = read(fd, buf, sizeof buf - 1)) > 0 ){ //fd is the opened pipe.
buf[n - 1] = '\0';
n = write(socket_FD, buf, strlen(buf));
}
然后,远程串行设备将以 OK 响应它接收到数据。
这就是我与远程串行设备通信的方式。对于阅读这篇文章的任何人来说,我与远程串行通信的方式是否可行?如果不能,请告诉我如何与远程串行设备通信的其他方式。
谢谢...