Как дождаться ответа Modbus RTU через TCP в PHP?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как дождаться ответа Modbus RTU через TCP в PHP?

Сообщение Anonymous »

У меня есть сервер сокетов, и я использую responsephp для получения соединений от нескольких клиентов. Мне нужно будет сделать несколько запросов на запись и дождаться возврата каждого из них, прежде чем перейти к следующей записи.
При моем выполнении происходит то, что я делаю цикл и результат не такой, как ожидалось. Например, если мне нужны записи 30001, 30004 и 30006, даже в цикле, с запросом ($conn->write($rtuPacket)) для всех записей, конечный результат будет просто «30001» повторно. .
Как мне дождаться завершения каждой транзакции вопроса/ответа, прежде чем переходить к следующему запросу?
Ниже приведена часть моего код:
for ($i = 0; $i < sizeof($get_index_read_input_registers); $i++) {
$startAddress = $get_index_read_input_registers[$i]["ADDRESS"];
$quantity = $get_index_read_input_registers[$i]["QUANTITY"];
$slaveId = $arr_addr_rs485[$j];
$packet = new ReadInputRegistersRequest($startAddress, $quantity, $slaveId);
$rtuPacket = RtuConverter::toRtu($packet);
$conn->write($rtuPacket);

$receivedData = b'';
$conn->on('data', function ($data) use ($conn, $logger, &$receivedData) {
$logger->debug($conn->getRemoteAddress() . ": RTU received: (in HEX):" . unpack('H*', $data)[1]) . PHP_EOL;
});

//React\Async\await(3.0);
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... tcp-in-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»