Как читать / записывать данные в Modbus TCP-IP? - PullRequest
0 голосов
/ 23 октября 2019

Я хотел бы передать данные между устройством (сервером, на ОС Linux) и ПК (на ОС Linux / Windows), используя modbus tcp-ip, как прикреплено на рисунке.

Пока что яобработали задание, когда клиент отправляет данные на сервер, а сервер отправляет данные клиенту (см. ниже «код клиента»).

, и я хотел бы отправить значение «низкий / высокий» иликоманда от клиента (ПК) к серверу (устройству) с использованием Modbus TCP-IP.

, но я не знаю, как кодировать о типе пакета данных (например, код типа данных, способчтение / запись данных на сервер)

, поэтому я прошу вас, дайте мне знать, как я могу сделать, чтобы закодировать стандартный тип пакета данных. или вы отправляете соответствующий пример кода?

if ((server_sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
    perror("error : ");
    return 1;
}

server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = inet_addr("192.168.0.111");
serveraddr.sin_port = htons(3500);

client_len = sizeof(serveraddr);

if (connect(server_sockfd, (struct sockaddr *) &serveraddr, client_len) == -1)
{
    perror("connect error : ");
    return 1;
}

memset(buf, 0x00, MAXLINE);
read(0, buf, MAXLINE);
if (write(server_sockfd, buf, MAXLINE) <= 0)
{
    perror("write error : ");
    return 1;
}

memset(buf, 0x00, MAXLINE);

if(read(server_sockfd, buf, MAXLINE) <=0)
{
    perror("read error :");
    return 1;
}
close(server_sockfd);

printf("read : %s", buf);
...