Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Нужна помощь по COM порту

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: не получается завершить цыкл
flame2008
Отправлено: 17 Марта, 2008 - 12:45:50
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




Ситуация такая.
Надо считать информацию с ком порта поступающую с АТС.
Это информация поступает в виде строчек типа
"2008.03.16/15:35 83832684571 1:34"

в итоге формируется список из этих строчек
"2008.03.16/15:35 83832684571 1:34"
"2008.03.16/15:35 83832684571 1:34"
.
.
.
"2008.03.16/15:35 83832684571 1:34"

так вот.
у меня не завершается цикл после обработки последнеей строки.
А хотелось чтобы программа закрывалась сама, после считывания последнеей строки.
мой урезанный код программы:

$fp = fopen('COM5', 'r');
while ( !Feof($fp) )
{
$str = fgets($fp);
print ($str);
}
fclose($fp);

вроде как не работает feof(), но как по другому не пойму???
 
 Top
EuGen Администратор
Отправлено: 17 Марта, 2008 - 12:47:37
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Сделайте так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $rgSource=file("COM5");
  4. foreach ($rgSource as $key=>$value)
  5. {
  6.    echo($value);
  7. }
  8. ?>
  9.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
flame2008
Отправлено: 17 Марта, 2008 - 12:55:45
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




EuGen пишет:
Сделайте так:



PHP:
скопировать код в буфер обмена
<?PHP
$rgSource=file("COM5");
foreach ($rgSource as $key=>$value)
{
echo($value);
}
?>


Так не он ничего не считывает. программа висит и все.
на экране пусто.
 
 Top
EuGen Администратор
Отправлено: 17 Марта, 2008 - 12:56:25
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




А каков размер файла?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
flame2008
Отправлено: 17 Марта, 2008 - 13:00:46
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




EuGen пишет:
А каков размер файла?


если про инфу на ком порте то там сейчас не боле 20 кб. может и того меньше...
(Добавление)
EuGen пишет:
А каков размер файла?


если про инфу на ком порте то там сейчас не боле 1 кб. может и того меньше... (проверил точнее ) Радость

(Отредактировано автором: 17 Марта, 2008 - 13:04:47)

 
 Top
EuGen Администратор
Отправлено: 17 Марта, 2008 - 13:24:56
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Странно. Ну, попробуйте сделать отладку, как например:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $max_count=1000;
  4. $rgSource=file("COM5");
  5. $i=0;
  6. foreach ($rgSource as $key=>$value)
  7. {
  8.    echo($value);
  9.    $i++;
  10.    if($i>$max_count)
  11.       die("Caught inside loop!");
  12. };
  13. ?>
  14.  

(Отредактировано автором: 17 Марта, 2008 - 13:25:22)



-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
flame2008
Отправлено: 17 Марта, 2008 - 13:53:49
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




EuGen пишет:
Странно. Ну, попробуйте сделать отладку, как например:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $max_count=1000;
  4. $rgSource=file("COM5");
  5. $i=0;
  6. foreach ($rgSource as $key=>$value)
  7. {
  8.    echo($value);
  9.    $i++;
  10.    if($i>$max_count)
  11.       die("Caught inside loop!");
  12. };
  13. ?>
  14.  


Это тоже не помогает... Огорчение
 
 Top
EuGen Администратор
Отправлено: 17 Марта, 2008 - 14:11:23
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




По идее это должно вывести "Caught inside loop!", если мое решение уходит в бесконечный цикл.
То, что на файле размером 1Кб получается такое, наводит на мысль, что Ваш веб-сервер не работает либо работает неправильно.
Проверьте, загружаются ли у Вас другие страницы php, размещенные на этом же сервере.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
flame2008
Отправлено: 18 Марта, 2008 - 06:51:50
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




Вот такую хрень выдает если использованть веб-сервер.

Warning: file(COM5) [function.file]: failed to open stream: Permission denied in N:\servers\Apache\htdocs\1.php on line 3

Warning: Invalid argument supplied for foreach() in N:\servers\Apache\htdocs\1.php on line 5
 
 Top
EuGen Администратор
Отправлено: 18 Марта, 2008 - 09:55:10
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ну это значит, что PHP не может получить доступ к файлу Вашему. Установите права 777 и попробуйте снова.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
valenok Модератор
Отправлено: 18 Марта, 2008 - 10:09:28
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)






-----
Truly yours, Sasha.
 
My status
 Top
EuGen Администратор
Отправлено: 18 Марта, 2008 - 10:33:16
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Хм, и точно. У меня что-то не ассоциировалось fopen() с портом COM; я почему-то подумал что автор уже считал все дело в файл и теперь трудности, так что чего-то меня не туда занесло.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB