USB PC thermometer

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: USB PC thermometer

Сообщение LutsenkoDenis » Пн окт 07, 2013 10:51 pm

немного изменил код.
  • 1. Не читает каждый файл в директории
    2. Учитывает конец строки в файле

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

<?php

// набор данных который нужно прочесть:
//2,26,00,2013-10-01 06:47:20

$dataPath  = "E:\Temp\USB_PC_thermometer"; // Директория с данными 
$separator = ",";                          // Разделитель данных в файле
$file      = "";                           // имя файла

// бежим по директории
if ($handle = opendir($dataPath))          
{
   // Читаем файлы
   while (false !== ($entry = readdir($handle)))  
   {
      // путь к файлу
      $filePath = $dataPath . "/" . $entry;
      // если файл есть и является обычным файлом а не директорией то запоминаем его имя
      if (file_exists($filePath) && is_file($filePath)) 
      {
         $file = $filePath;
      }
   }
   closedir($handle);
}

//если имя файла не пустое
if (isset($file))
{
   // читаем файл в массив
   $data = file($file);
   // обходим массив
   foreach ($data as $val) 
   {
      // если строка не пустая до получаем температуру
      if (trim($val) != '')
      {
         // разбиваем строку на переменные с данными
         list($DataNumber, $TempInteger, $TempRatio, $TempDate) = explode($separator, $val);
         // склеиваем целую и дробную часть температуры
         $Temp = $TempInteger . "." . $TempRatio;
      }
   }
}

// температура
echo $Temp;

?>
Тоже самое что и выше, но для версии php >= 5.0
Исключает чтение каждой строки в массиве и определения пустой строки.

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

<?php

// набор данных который нужно прочесть:
//2,26,00,2013-10-01 06:47:20

$dataPath  = "E:\Temp\USB_PC_thermometer"; // Директория с данными 
$separator = ",";                          // Разделитель данных в файле
$file      = "";                           // имя файла

// бежим по директории
if ($handle = opendir($dataPath))          
{
   // Читаем файлы
   while (false !== ($entry = readdir($handle)))  
   {
      // путь к файлу
      $filePath = $dataPath . "/" . $entry;
      // если файл есть и является обычным файлом а не директорией то запоминаем его имя
      if (file_exists($filePath) && is_file($filePath)) 
      {
         $file = $filePath;
      }
   }
   closedir($handle);
}

//если имя файла не пустое
if (isset($file))
{
   // читаем файл в массив игнорируя пустые строки
   $data = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
   // последняя строка в массиве
   $lastLine  = end($data);     
   // разбиваем строку на переменные с данными
   list($DataNumber, $TempInteger, $TempRatio, $TempDate) = explode($separator, $lastLine);
   // склеиваем целую и дробную часть температуры
   $Temp = $TempInteger . "." . $TempRatio;
}

// темпаратура
echo $Temp;

?>
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Аватара пользователя
Amarok
Сообщения: 1427
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: USB PC thermometer

Сообщение Amarok » Вт окт 08, 2013 10:39 am

LutsenkoDenis писал(а):немного изменил код.
...
Тоже самое что и выше, но для версии php >= 5.0
Исключает чтение каждой строки в массиве и определения пустой строки.
Заработало! Спасибо!
Моя Алиска живёт на Proxmox в Debian 12
Ответить