У кого-нибудь есть опыт?
потому что постоянно напарываюсь на какие-то приколы...
Простые функции типа fopen работают только на запись. Читать с COM-порта ничего не получается :-(
Да и запись, признаться, работает странно. Например, отправляю символ ">", а реально он посылает в порт, к примеру, не "3e", а "7b" (за точность не ручаюсь, но что-то в этом духе) :-(
Поставил php5 - в нем уже худо-бедно работают функции dio.
Проработало немного, потом опять сдохло... Писать - пишет , а вот читать - ни в какую. Причем без переконфигурации и т.п... просто на выходных в один прекрасный момент скрипт перестал получать данные. И все. Сегодня мне пока не удалось его разморозить :-(
При этом тупая программка, написанная на delphi (да что там - любой терминал) на этой же тачке и пишет, и читает нормально.
Хоть кто-нибудь что-нибудь скажите! Может, не валять дурака и не использовать php для такой задачи? (хотя задача-то - тривиальнейшая).
А как дело обстоит с perl? Нормально ли он работает с последовательным портом под виндой?
P.S. Только что выяснил, как можно восстановить работоспособность dio в php5: применить заново локальные политики безопасности!!!!! (тачка не в домене). Ничерта не пойму... а как это связано-то???
Осталось тогда выяснить, что же слетает такого, что отваливается программное чтение из последовательного порта при помощи php.
P.P.S. Проверил ActivePerl 5.8.4 - пишет в порт именно то, что нужно. А вот читать - не читает... Скрипт наподобие этого:
--- open(PORT,"+<","COM2");
print PORT ">H\r\n";
$str='';
while (ord($buff)!=10)
{
$buff=getc(PORT);
if (defined($buff))
{ $str=$str+$buff;}
}
сlose PORT;
---
при любом раскладе возвращает пустую $str (точнее, возвращает, если ограничить количество итераций, а так, ессно, висит... При этом скрипт на php со сохожим алгоритмом, только с использованием dio на чтение работает).
Есть у кого-нибудь комментариии какие-то?