Вам необходимо настроить com-порт с помощью DOS-подобной команды.
Например, следующая строка выполняет команду через php:
$output = `mode COM1: BAUD=115200 PARITY=N data=8 stop=1 XON=off TO=on`;
Для отображения результатов вы можете использовать:
echo "$output";
Создать идентификатор ресурса:
$fp = fopen('COM1', 'r+');
if (!$fp)
{
echo "Port not accessible";
}
else
{
echo "Port COM1 opened successfully";
}
Запись в порт:
$writtenBytes = fputs($fp, "Hello");
echo"Bytes written to port: $writtenBytes";
Чтение из порта:
$buffer = fgets($fp);
echo "Read from buffer: $buffer";
Может быть, кто-то может помочь мне с проблемой fgets
. Он складывается там ровно на одну минуту, если TO=on
, или складывается там вечно, если TO=off
. Кажется, это опция "MODE COM
", так что, возможно, эксперт DOS может помочь.
Возможно, вместо fgets
, следует использовать fgetc
, так как fgets
захватывает до newline
, тогда как fgetc
захватывает один символ. Если новая строка не обнаружена, она может блокироваться до тех пор, пока она не появится, или пока буфер не будет очищен. Одной минутной задержкой может быть то, что окна сбрасывают свой буфер с интервалом.