Да, я знаю о существовании модулей Меркурий и Энергомера...

Но, все же , позвольте продолжить...
Как мне казалось, я закрыл для себя эту тему еще лет 5 назад. Однако обстоятельства вынудили вернуться к этой теме более углубленно.
В свое время я пытался сам, еще до появления вышеперечисленный модулей, создать модуль для Меркурия 236. Но тогда у меня Majordomo крутился еще под Windows и решить проблему с нормальным(гарантированным) чтением com порта я так и не смог. Плюнул, и реализовал обработку электросчетчиков на микрокомпьютере под linux, со своим LAMP. Из MD просто вызывалась отдельная вэб-страничка, хостящаяся на микрокомпьютере. И все б ничего, но за эти годы я задолбался менять флэшки. Опрос 2-х счетчиков велся в непрерывном цикле и писался в mysql, убивая флэшку за пол-года, год, полтора... В общем достался мне по наследству неттоп на атоме с обычным диском, и я решил заменить им пару микрокомпьютеров выполнявших функции связи с электросчетчиками, метеостанции и MQTT-брокера. Не особо задумываясь о последствиях...



Функций2 и вопросов 2.
Забыл предупредить...


1. Функция dd()
Код: Выделить всё
function dd($data = "")
{
$result1 = "";
$data2 = "";
for ( $j = 0; $j < count($data); $j++ )
{
$data2 = dechex(ord($data[0]));
if ( strlen($data2) == 1 )
$result1 = "0".$data2;
else
$result1 .= $data2;
}
return $result1;
}
Я переписал у себя данную функцию следующим образом:
Код: Выделить всё
function dd($data = "")
{
$result1 = "";
$data2 = "";
if (isset($data) && !empty($data))
// for ( $j = 0; $j < count2($data); $j++ )
{
$data2 = dechex(ord($data[0]));
if ( strlen($data2) == 1 )
$result1 = "0".$data2;
else
$result1 .= $data2;
}
return $result1;
}

Разбор второй функции оставлю на второй пост ибо и так много буков получилось...