2013-07-20 2 views
0

У меня есть вопрос noob. Я создал очень простую HTML-страницу для отправки строки последовательных данных по моей сети в ethernet-последовательный преобразователь при нажатии кнопки. Это управляет переключателем звуковой матрицы (через его последовательный порт). Веб-страница работает, и она переключает звуковую матрицу, но после того, как я нажму кнопку, браузер ждет бесконечно для ответа. Я могу щелкнуть другие кнопки и по-прежнему делать переключатели, но он всегда ждет ответа. Как я могу получить ответ с этого удаленного устройства и показать его (или действовать на нем) на веб-странице и не задерживать страницу на неопределенный срок? Правильно ли это отправить эту строку данных на удаленный IP-адрес, или есть лучший способ? Вот код:HTML Webpage POST to Server - ожидание ответа

<html> 
<head> 
</head> 
<body bgcolor="#808080"> 
<div align="center"> 
&nbsp;<p><font size="7" face="Arial" color="#FFFFFF">Audio Control</font></p> 
<div 
<div style="width:500px;height:175px;border:1px solid white;"> 
<p align="left"><font size="6" face="Arial" color="#FFFFFF">Backyard</font></p><hr> 
<form action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="Tuner" id="Backyard Tuner" name="CL1I1O1T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<form action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="Computer" id="Backyard Computer" name="CL1I2O1T"  class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<form action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="Apple TV" id="Backyard Apple TV" name="CL1I3O1T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<form action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="iPod" id="Backyard iPod" name="CL1I4O1T" class="auto-  style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="Off" id="Backyard Off" name="DL1O1T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<action="http://192.168.5.30:100" method="POST" > 
<p align="left">&nbsp;</p> 
<p align="left">&nbsp;</p> 
<p align="left">&nbsp;</p> 
<div 
<div style="width:500px;height:175px;border:1px solid white;"> 
<p align="left"><font size="6" face="Arial" color="#FFFFFF">Garage</font></p><hr> 
<action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="Tuner" id="Garage Tuner" name="CL1I1O2T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="Computer" id="Garage Computer" name="CL1I2O2T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="Apple TV" id="Garage Apple TV" name="CL1I3O2T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="iPod" id="Garage iPod" name="CL1I4O2T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="Off" id="Garage Off" name="DL1O2T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<action="http://192.168.5.30:100" method="POST" > 
<div align="center"> 
<p align="left">&nbsp;</p> 
<p align="left">&nbsp;</p> 
<p align="left">&nbsp;</p> 
<div 
<div style="width:500px;height:175px;border:1px solid white;"> 
<p align="left"><font size="6" face="Arial" color="#FFFFFF">Family Room</font></p><hr> 
<action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="Tuner" id="Family Room Tuner" name="CL1I1O3T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="Computer" id="Family Room Computer" name="CL1I2O3T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="Apple TV" id="Family Room Apple TV" name="CL1I3O3T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="iPod" id="Family Room iPod" name="CL1I4O3T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="Off" id="Family Room Off" name="DL1O3T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<action="http://192.168.5.30:100" method="POST" > 
<div align="center"> 
<p align="left">&nbsp;</p> 
<p align="left">&nbsp;</p> 
<p align="left">&nbsp;</p> 
<div 
<div style="width:500px;height:175px;border:1px solid white;"> 
<p align="left"><font size="6" face="Arial" color="#FFFFFF">Basement Family Room</font>  </p><hr> 
<action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="Tuner" id="Basement Tuner" name="CL1I1O4T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="Computer" id="Basement Computer" name="CL1I2O4T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="Apple TV" id="Basement Apple TV" name="CL1I3O4T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="iPod" id="Basement iPod" name="CL1I4O4T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
<action="http://192.168.5.30:100" method="POST" > 
<font face="Arial"> 
<input type="submit" value="Off" id="Basement Off" name="DL1O4T" class="auto-style1" style="float: left" /><span class="auto-style1"> 
</span> 
</font> 
</form> 
</body> 
</html> 
+0

У вас нет закрывающих '' тегов. –

+0

А также - я не думаю, что HTML-страница способна сформировать правильную строку (без каких-либо «служебных» данных) для вашего устройства ... –

+0

David- Спасибо за ответ! Я действительно новичок в HTML ... Я пробовал одну и ту же страницу с

в начале и
в конце, но он, похоже, не работал вообще, и он показал данные в адресной строке. Я также не понимаю, что вы подразумеваете под «служебными данными». Я просто продолжал исследовать и пытался все, что мог найти, пока не получил его на работу. Неужели я ошибаюсь? Я пробовал использовать PHP, но никогда не мог заставить сокеты работать правильно. – sparkynerd

ответ

0

1) Настройка веб-сервера Apache с PHP

2) Скачать PHP Telnet скрипт (или любой другой библиотеки Telnet для PHP)

3) Изменить строку

if ($this->fp=fsockopen($ip,23)) { 

в

if ($this->fp=fsockopen($ip,100)) { 

(устройство реагирует на порт 100, как я понимаю?)

4) Сделайте PHP скрипт с чем-то вроде этого (замените username и password с учетными данными): proxy.php

<?php 
require_once "PHPTelnet.php"; 
$telnet = new PHPTelnet(); 
$command = $_GET['command']; 
$result = $telnet->Connect('192.168.5.30:100','username','password'); 
if ($result == 0) { 
$telnet->DoCommand($command, $result); 
echo $result; 
$telnet->Disconnect(); 
} 
?> 

5) Сделайте HTML-страницу похожей на эту (эта очень простая, просто чтобы дать вам идею и замените yourhost на IP вашего веб-сервера):

<html> 
<body> 
<form action="http://yourhost/proxy.php" method="GET"> 
Enter command 
<input type="text" name="command"> 
<input type="Submit"> 
</form> 

<form action="http://yourhost/proxy.php" method="GET"> 
<input type="hidden" value="CL1I3O1T" id="Backyard Apple TV" name="command" /> 
<input type="Submit" value="Apple TV"> 
</form> 

</body> 
</html> 

Скопируйте последнюю часть файла HTML, чтобы добавить другие команды. Поместите фактическую команду в value из hidden вход и метку в valuesubmit вход.

+0

Ты гений! К сожалению, нет! Ха-ха ... но серьезно ... Я сделал сценарий и html-страницу. Я тестирую это на своем ноутбуке, и у меня PHP работает на XAMPP. Когда я загружаю proxy.php, я получаю следующую ошибку: Примечание: Неопределенный индекс: команда в S: \ xampp \ htdocs \ 720new \ proxy.php в строке 4 [PHP Telnet] Не удалось подключиться: Неизвестный узел – sparkynerd

+0

Я был обратное проектирование всего HTML-кода, который я использовал до сих пор, но PHP для меня все нова. Я успешно подключился к устройству с помощью telnet на порту 100, используя PuTTY. Когда я вхожу в команду, удаленное устройство перекликается с ней. Поэтому, на мой взгляд, telnet для устройства работает, но я не уверен, как устранить скрипт PHP. Есть идеи? Благодаря! – sparkynerd

+0

Кстати, на удаленном устройстве нет имени пользователя или пароля. Это устройство, которое я использую на удаленном конце: http://www.startech.com/Networking-IO/Serial-over-IP/1-Port-RS-232-422-485-Serial-over-IP- Ethernet-Device-Server ~ NETRS2321E – sparkynerd

0

Я знаю, что это сообщение не помечено PHP, но я, наконец, решил эту проблему решить с помощью сокетов PHP. Эта веб-страница будет реагировать на нажатие кнопки веб-страницы, открыть сокет для удаленного IP-адреса, отправить строку данных и, наконец, закрыть сокет. Как я уже упоминал ранее, удаленное устройство представляет собой Ethernet-последовательный преобразователь, который подключен к аудиомикшеру. Теперь я могу управлять этим подключенным к сети/последовательным аудиомикшером с помощью веб-страницы PHP. Код довольно прост, но правильность синтаксиса была сложной. Спасибо всем тем, кто помог! Надеюсь, это поможет кому-то еще ... Вот код:

<!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"> 

<?php 

$input=$_POST['input']; 
$sock = fsockopen('192.168.5.30:100', NULL, $errno, $errstr); 
fwrite($sock, $input); 
echo fread($sock, 4096)."\n"; 
fclose($sock); 
?> 

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 
<form action="" method="post"> 
<input type="submit" name="input" id="button" value="CL1I1O1T" /> 
<br /> 
<br /> 
<input type="submit" name="input" id="button" value="CL1I2O1T" /> 
<br /> 
<br /> 
<input type="submit" name="input" id="button" value="CL1I3O1T" /> 
<br /> 
<br /> 
<input type="submit" name="input" id="button" value="CL1I4O1T" /> 
<br /> 
<br /> 
<input type="submit" name="input" id="button" value="CL1I5O1T" /> 
<br /> 
<br /> 
<input type="submit" name="input" id="button" value="CL1I6O1T" /> 
<br /> 
<br /> 
<input type="submit" name="input" id="button" value="CL1I7O1T" /> 
<br /> 
<br /> 
<input type="submit" name="input" id="button" value="CL1I8O1T" /> 
<br /> 
<br /> 
<input type="submit" name="input" id="button" value="DL1O1T" /> 
<br /> 
<br /> 
<form id="form1" name="form1" method="post" action=""> 
</form> 
</body> 
</html>