Последовательная коммуникация с PHP в Windows

Вы можете создать несколько фигурок с помощью matplotlib, используя подобные сюжеты

import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=3, ncols=3)

Затем вы можете построить каждый столбец в отдельном сюжете с аргументом ax, используя ax = axes [nrow, ncol], чтобы указать участок, который вы хотите распечатать:

for i, column in enumerate(df.columns):
    sns.distplot(df[column],ax=axes[i//3,i%3])
9
задан dsolimano 2 October 2012 в 15:29
поделиться

4 ответа

Другой возможный путь состоял бы в том, чтобы использовать API Win32 через что-то как w32api_register_function() или ffi и затем используют вызовы последовательной передачи данных, чтобы заставить это работать в соответствии с Windows.

3
ответ дан 4 December 2019 в 07:48
поделиться

Другая опция состоит в том, чтобы использовать объект через ActiveX на окнах. Существуют несколько, главным образом коммерческие последовательные объекты для COM на окнах. Можно также выставить основанный на.NET объект и зарегистрироваться, он для COM использует также. Конечно, это действительно предполагает, что Вы имеете контроль на сервере для регистрации управления COM, поскольку Вам был бы нужен последовательный интерфейс.

Другой проблемой является конкуренция ресурса, если это для использования через сеть. Если бы это для последовательного принтера, например, то менеджер по очереди печати был бы Вашим наилучшим вариантом по прямой связи.

1
ответ дан 4 December 2019 в 07:48
поделиться

Самый легкий способ заняться этим состоял бы в том, чтобы записать программу в другом языке (таком как C++) и затем выполнить его из Вашего сценария PHP с system(). Выполнение Коммуникации ввод-вывод в C++ тривиально.

Это предполагает, что у Вас есть достаточно доступа к серверу для конфигурирования его, чтобы позволить исполняемому файлу быть выполненным php и т.д.

4
ответ дан 4 December 2019 в 07:48
поделиться

Вам необходимо настроить 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 захватывает до новой строки , а fgetc захватывает одиночный символ. Если новая строка не встречается, он может блокироваться до тех пор, пока он не появится или пока буфер не будет очищен. Задержка в одну минуту может заключаться в том, что окна сбрасывают буфер в определенном интервале.

4
ответ дан 4 December 2019 в 07:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: