PHP и com-порт: Как не закрывать соединение? Или, все таки JAVA?

HTML:
<p align="center"><p align="right"><!DOCTYPE html PUBLIC "-//W...
Ну у Вас и разметка...
Дело в том, что Ваш код и не должен работать. В нем вообще все не правильно. Вы создали php функции, а вешаете на кнопки javaScript обработчики.
Вам нужно написать javaScript функции, которые будут срабатывать при нажатии кнопки и отсылать данные аяксом PHP скрипту, который, в свою очередь, будет слать данные на микроконтроллер, который управляет принтером. И вообще, с чего это вдруг Ваш принтер должен включаться? В моем случае лампочки включает/отключает не php, а микроконтроллер, к которому подключается php скрипт через порт и шлет ему(микроконтроллеру) данные. Микроконтроллер же подключен к лампочке ФИЗИЧЕСКИ.
 
Только, правда, почему то, красная лампочка загорается на платке при запуске этого скрипта, как будто в нее постоянно какие то параметры записываются...

так и записываются же.. попробуйте так:
PHP:
$port2 = fopen('COM3', 'w');

$last_state = -1;

while(true) {

    sleep(1); // думаю незачем бедолагу задёргивать до сумашествия

    $contents  = (int)file_get_contents('file.txt');

    if( $contents === $last_state ){

        continue;
    }

    if($contents === 3)
        break;
    if($contents === 1)
        fwrite($port2, '1');
    if($contents === 0)
        fwrite($port2, '0');

    $last_state = $contents;
}

fclose($port2);
 
Вам нужно написать javaScript функции, которые будут срабатывать при нажатии кнопки
Это получается примерно так?
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>   
<p align="center"><p align="right">
<script type="text/javascript">
function pressAnyKey() {
    var lampValue='1';
    }
</script>
<script type="text/javascript">
function pressSomeKey() {
    var lampValue='0';
}
</script>
<!--#include virtual="lamp.php" -->
<!--#include virtual="index.php" -->
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />   
<meta name="author" content="" />    <title>Untitled 3</title> 
<link href="css/main.css" rel="stylesheet" type="text/css"/></head>
<body><div id="page_align" class="b3radius">
  <div id="header">
<div id="header_nav"><ul><li><a href="a">Главная</a></li>
<li><a href="a">Климат-контроль</a></li>
<li><a href="a">Наблюдение</a></li>
</ul>
<div id="content" class="f_right">
<div id="c_right f_right">
<input type="button" value="Вкл" name="button" class="push_but" onclick="pressAnyKey()" />
<input type="button" value="Выкл" name="btn" class="push_btn" onclick="pressSomeKey()" />
</div>
</div>
</div>
<div id="sidebar"></div><div id="content">Сайт.</div>
<div class="clr"></div></div></body></html></p></p>
отсылать данные аяксом PHP скрипту, который, в свою очередь, будет слать данные на микроконтроллер, который управляет устройством
Получается что, таким скриптом будет являться index.php как описано на этом форуме или нужно будет еще скрипт написать для связывания с микроконтроллером? просто я еще слышала про какие-то специальные библиотеки c dll расширением или они вообще здесь не нужны?
 
У вас микроконтроллер работает нормально? То есть он сам умеет уже включать/выключать принтер?
 
у меня KernelChip Модуль Ke-USB24R. Если включать не через веб-интерфейс то да, он включает и выключает лампу.))))
 
Какие данные вы передаете и как подключаетесь к нему? Опишите подробнее...
 
подключаюсь к контроллеру через USB, передаю команды через прогу для контроллера, замыкаю и размыкаю с помощью 0 и 1 реле к которому подключено устройство. вообщем все делаю так, как описано здесь Для просмотра ссылки Войди или Зарегистрируйся
 
Отлично! Для начала предлагаю сделать просто - создать php файл, который при загрузке в браузере будет включать/отключать принтер(лампочку) в зависимости от того, какие GET параметры мы ему передадим. Сам файл будет примерно таким (не проверял) :
PHP:
$port = fopen('COM3', 'w');
sleep(2);
// Где COM3 - это номер порта вашего(у вас может быть другой) устройства, который можно посмотреть в Диспетчере устройств Windows
if(isset($_GET["val"]) && ($_GET["val"]==0 || $_GET["val"]==1)) {
    fwrite($port, $_GET["id"]);
}

fclose($port);
Допустим, этот файл мы назвали index.php
Теперь, при загрузке index.php?val=1 лампочка должна включаться, а при val=0 - отключаться...
 
а зачем вы везде пишете sleep? зачем заставляете ждать?
 
Ок, спасибо)))) попробую ее на кафедре в универе запустить, сейчас не могу, контроллера своего нет((((Но будет ли она работать без AJAX? для чего он здесь применяется?)))))))
 
Назад
Сверху