Страница 3 из 4

Re: Вопрос знатокам PHP под Win

Добавлено: Ср апр 08, 2015 3:30 pm
LutsenkoDenis
Victor_S писал(а):Еще до кучи, :), вопросец...
Когда пытаюсь работающий код скрипта использовать как метод класса/объекта, получаю вот такое сообщение при тесте:
Warning: dio_write() expects parameter 1 to be resource, null given in C:\_majordomo\htdocs\modules\objects\objects.class.php(536) : eval()'d code on line 33
Ну, если судить по сообщению, то первый параметр функции dio_write(который дескриптор файла) - пустой, чего не должно быть.
Из документации: int dio_write ( resource $fd , string $data [, int $len = 0 ] )
Т.е. ком порт или что-там ты пытался открыть, открыть не получилось.
Нужно перед вызовом dio_write() проверять доступность соединения и/или пробовать подключаться еще раз.

К сожалению в данном вопросе помочь мало чем смогу, т.к. нет возможности поиграться на php с портами и данной функцией.

Re: Вопрос знатокам PHP под Win

Добавлено: Ср апр 08, 2015 3:48 pm
Victor_S
Это был скорее вопрос к Сергею, ибо тут уже МД видимо свой вклад вносит...
Данный скрипт работает нормально если вызвать его ссылкой в браузере, но выдает эту ошибку если попытаться перенести код скрипта в метод класса и вызвать его оттуда. Видимо что-то с синтаксисом в этих строках:
exec('mode com3: baud=9600 data=8 stop=1 parity=n xon=off');
$fd = dio_open('COM3', O_RDWR);

Re: Вопрос знатокам PHP под Win

Добавлено: Ср апр 08, 2015 3:59 pm
Victor_S
А вот и еще вопрос созрел...:)
Если делаю вызов скрипта с такими строчками:

# Инициализация соединения, передача пароля
//dio_write($fd, gg('M236v1.cInit'), 11);
dio_write($fd, "\x5e\x01\x01\x01\x01\x01\x01\x01\x01\xc7\xe2", 11);
usleep($sleep_time);
$result = dio_read($fd, 15);
//echo gg('M236v1.cInit')."<br>";

при чем значение : \x5e\x01\x01\x01\x01\x01\x01\x01\x01\xc7\xe2 закопипащено со свойства объекта вручную.
То получаю вот такой результат:
Total: 2.622 Pv: 3.47 - 0 - 0

если же строчки закомментарить по другому:
# Инициализация соединения, передача пароля
dio_write($fd, gg('M236v1.cInit'), 11);
//dio_write($fd, "\x5e\x01\x01\x01\x01\x01\x01\x01\x01\xc7\xe2", 11);
usleep($sleep_time);
$result = dio_read($fd, 15);
echo gg('M236v1.cInit')."<br>";

То получаю ерунду...:(
\x0\x01\x01\x01\x01\x01\x01\x01\x01\x77\x81
Total: 4177854.675 Pv: 3819.45 - -

Re: Вопрос знатокам PHP под Win

Добавлено: Ср апр 08, 2015 4:04 pm
LutsenkoDenis
а gg('M236v1.cInit') чему равно в самом начале при записи?
совпадают ли значения gg('M236v1.cInit') и закопипащенного?

Re: Вопрос знатокам PHP под Win

Добавлено: Ср апр 08, 2015 4:09 pm
Victor_S
Извиняюсь... вот такую ерунду получаю:
\x5e\x01\x01\x01\x01\x01\x01\x01\x01\xc7\xe2
Total: 4177854.675 Pv: 3819.45 - -
Значения те же строка команды другая. Видимо счетчик ошибку возвращает на некорректную команду, но в чем некорректность? Видимо где-то опять в типах данных...

Re: Вопрос знатокам PHP под Win

Добавлено: Ср апр 08, 2015 4:10 pm
Victor_S
LutsenkoDenis писал(а):а gg('M236v1.cInit') чему равно в самом начале при записи?
совпадают ли значения gg('M236v1.cInit') и закопипащенного?
да, совпадают, видно в последнем сообщении

Re: Вопрос знатокам PHP под Win

Добавлено: Ср апр 08, 2015 4:47 pm
Victor_S
Еще один, надеюсь совсем простой вопрос Сергею:
пытаюсь сделать проверку существования значения в свойстве объекта:
if (is_null($this->getProperty('Address'))) {$this->setProperty('Address',0);}
не работает ни is_null($this->getProperty('Address')) , ни !$this->getProperty('Address'), ни $this->getProperty('Address')==""
в чем тут загвоздка?

Re: Вопрос знатокам PHP под Win

Добавлено: Ср апр 08, 2015 4:52 pm
Victor_S
опа... сделал $this->getProperty('Address')=="" с выводом в браузер echo gg('M236v1.Address');
получил 0. А если открыть свойства в панели управления, то в данном свойстве опять пусто. Хотя если ввести 0 вручную, то данное значение видно везде.

Re: Вопрос знатокам PHP под Win

Добавлено: Ср апр 08, 2015 5:07 pm
LutsenkoDenis
Попробуй так:

Код: Выделить всё

if (!isset($this->getProperty('Address')))
   $this->setProperty('Address', 0); 

Re: Вопрос знатокам PHP под Win

Добавлено: Чт апр 09, 2015 8:32 am
Victor_S
LutsenkoDenis писал(а):Попробуй так:

Код: Выделить всё

if (!isset($this->getProperty('Address')))
   $this->setProperty('Address', 0);
Так ругается на синтаксис, приходится обходить так:
$a=$this->getProperty('Address');
if (!isset($a))
$this->setProperty('Address', 0);
Впрочем, вопрос оказался не к php а к majordomo.
Работают все приведенные выше конструкции, просто почему-то МД не визуализирует 0 значение свойства в панели управления если оно присвоено программно, конструкцией $this->setProperty('Address', 0);
Если значение 0 занести вручную в свойство, то оно начинает отображаться и в панели управления.