正如标题所说。我正在尝试与远程串行设备通信。我知道我可以使用套接字编程作为客户端应用程序。
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));
}
然后,远程串行设备会响应它接收数据。
这就是我与远程串行设备通信的方式。对于读这篇文章的人来说,我与远程序列通信的方式是否正常?如果没有,请告诉我如何与远程串行设备通信。
谢谢...