1

正如标题所说。我正在尝试与远程串行设备通信。我知道我可以通过套接字编程作为客户端应用程序来做到这一点。

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 响应它接收到数据。

这就是我与远程串行设备通信的方式。对于阅读这篇文章的任何人来说,我与远程串行通信的方式是否可行?如果不能,请告诉我如何与远程串行设备通信的其他方式。

谢谢...

4

0 回答 0