У меня есть предупреждение PHP.
fread() expects parameter 1 to be resource, boolean given in /tmp/func.php on line 12
Мой код:
<?php
$sqlite = 'teleinfo.sqlite';
function getTeleinfo () {
$handle = fopen ('/dev/ttyACM0', "r"); // ouverture du flux
while (fread($handle, 1) != chr(2));
--------
Благодарю вас !
php --version
PHP 5.4.45-0+deb7u2 (cli) (построено: 27 октября 2015 г., 23:22:07) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Зенд Технологии
Ответ 1 · Mark Jenkins
"Заданное логическое значение" предполагает, что значение, возвращаемое вашим fopen, является значением false, поэтому ваша попытка открыть /dev/ttyACM0 для чтения не удалась. Вы должны проверить, действителен ли ваш дескриптор после fopen, прежде чем пытаться его использовать.
$handle = fopen ('/dev/ttyACM0', "r"); // ouverture du flux
if ($handle) {
while (fread($handle, 1) != chr(2));
...
}
А почему? Возможно, местоположение не существует, или у вас нет разрешения, или, возможно, что-то еще открыло его с эксклюзивной блокировкой.
Ответ 2 · K0rell
Если вы следуете этому руководству: http://www.magdiblog.fr/gpio/teleinfo-edf-suivi-conso-de-votre-compteur-electrique/
Данные получены на /dev/ttyAMA0
stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts
Но в php скрипт анализируется на /dev/ttyACM0
Вы должны изменить имя файла в php-скрипте!