Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2013, 20:45   #1
Mr_freeman
Форумчанин
 
Аватар для Mr_freeman
 
Регистрация: 17.01.2010
Сообщений: 277
По умолчанию Работа с COM портами

Всем привет! Начал работу с com-портами на php. Попытка открыть порт:

PHP код:
$file fopen ("COM1""wb+");
if (!
$file) {
    echo 
"Not open";
} else {
    echo 
"Open";

Выдает ошибку:

Warning: fopen(COM1) [function.fopen]: failed to open stream: No such file or directory in Z:\home\localhost\www\com\index.php on line 8
Not open

Работаю на локалке с денвером. По идее не должно быть ошибок доступа. Как устранить эту проблему? Заранее всем спасибо.
Mr_freeman вне форума Ответить с цитированием
Старый 19.12.2013, 21:22   #2
Homebog
Кодим кода
Пользователь
 
Аватар для Homebog
 
Регистрация: 18.08.2013
Сообщений: 24
По умолчанию

Привет.
Проблема в том, что порт захватывает, а читать ничего не получается.
И вообще с чего бы fopen вдруг порты открывала?
http://www.php.net/manual/ru/function.fopen.php
fopen — Открывает файл или URL.
Не знаю конечно, но мне кажется php не лучший вариант для работы с портами.
Моя родина там, где мой компьютер.
Homebog вне форума Ответить с цитированием
Старый 19.12.2013, 21:33   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...вообще пых-пых в чистом виде не работает нативно с железом, через костыли да. Любые либы-фреймворки под него и есть костыли, причем под каждую ОС свои. К примеру, EXEC() вы можете разрешить на аппаче.

Под Линуксом что-то вроде:
Код:
exec('stty -F /dev/ttyS0 4800 raw');
 
         $fd=dio_open('/dev/ttyS0',O_RDWR | O_NOCTTY | O_NDELAY);
         dio_fcntl($fd,F_SETFL,0);
 
         dio_write($fd,"\x41",1);
Под Windows через mode:
Код:
exec("mode COM1 BAUD=9600 PARITY=N data=8 stop=1 xon=off");
 
    $fp = fopen ("COM1", "w+");
    if (!$fp) {
       echo "Not open";
    } else {
        fwrite($fp, чего-нить передаем);
    }
    fclose($fp);
p.s.: обсуждение называлось "Работа с тепловычислителем СПТ-943 на PHP" (cм. в гуголь).
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 19.12.2013, 23:39   #4
Mr_freeman
Форумчанин
 
Аватар для Mr_freeman
 
Регистрация: 17.01.2010
Сообщений: 277
По умолчанию

Установил расширение php_dio.dll для PHP, выдал ошибку при рестарте денвера:

PHP Startup: dio: Unable to initialize module
Module compiled with module API=20060613
PHP compiled with module API=20090626
These options need to match

Какая то несовместимость получается
Mr_freeman вне форума Ответить с цитированием
Старый 19.12.2013, 23:50   #5
Mr_freeman
Форумчанин
 
Аватар для Mr_freeman
 
Регистрация: 17.01.2010
Сообщений: 277
По умолчанию

Цитата:
Сообщение от Mr_freeman Посмотреть сообщение
Установил расширение php_dio.dll для PHP, выдал ошибку при рестарте денвера:

PHP Startup: dio: Unable to initialize module
Module compiled with module API=20060613
PHP compiled with module API=20090626
These options need to match

Какая то несовместимость получается
А блин или эта библиотека для Линукса только?

Последний раз редактировалось Mr_freeman; 19.12.2013 в 23:54.
Mr_freeman вне форума Ответить с цитированием
Старый 20.12.2013, 00:09   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

А чем EXEC() не устроил?

Цитата:
php_dio.dll
...
А блин или эта библиотека для Линукса только?
у вас винды?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 20.12.2013, 00:35   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Mr_freeman Посмотреть сообщение
А блин или эта библиотека для Линукса только?
Не-не, это как раз под форточки.
Andkorol вне форума Ответить с цитированием
Старый 20.12.2013, 01:14   #8
Mr_freeman
Форумчанин
 
Аватар для Mr_freeman
 
Регистрация: 17.01.2010
Сообщений: 277
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
А чем EXEC() не устроил?

у вас винды?
Да, Windows 7. Кстати когда пытаюсь командной строкой через echo на порт послать данные - пишет "Отказано в доступе". Пытался через Администратора - то же самое(
Mr_freeman вне форума Ответить с цитированием
Старый 20.12.2013, 01:15   #9
Mr_freeman
Форумчанин
 
Аватар для Mr_freeman
 
Регистрация: 17.01.2010
Сообщений: 277
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Не-не, это как раз под форточки.
Не подскажите, как избежать ошибки несовместимости?
Mr_freeman вне форума Ответить с цитированием
Старый 20.12.2013, 10:16   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Вы читаете, что вам пишут? Какой в .... echo и fopen, вам приведен пример из официальной документации для работы с последовательным портом через EXEC(). Повторяю вопрос, чем не устроило?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с COM портами Spicus Общие вопросы C/C++ 0 29.01.2011 23:09
Работа с портами DedBoroda Общие вопросы Delphi 0 14.10.2010 18:24
Работа с сокетами(портами) groooovefree Софт 1 02.07.2010 09:53
Работа с RDP и портами. Alex77777 Фриланс 2 07.06.2010 12:06
Работа с USB или COM портами АлександрСергеевич Общие вопросы Delphi 2 26.12.2008 04:48