0

ちょっとした質問があります - ボタンが押されたときにシリアルデータの文字列をネットワーク経由でイーサネットからシリアルへのコンバーターに送信するための非常に単純な HTML ページを作成しました。これは、オーディオ マトリックス スイッチを (シリアル ポート経由で) コントロールします。Web ページは機能し、オーディオ マトリックスが切り替わりますが、ボタンをクリックした後、ブラウザーは無期限に応答を待機しています。他のボタンをクリックして切り替えを行うことはできますが、常に応答を待っています。このリモート デバイスからの応答を取得して Web ページに表示 (または応答) し、ページが無期限に待機しないようにするにはどうすればよいですか? これは、このデータ文字列をリモート IP に送信する正しい方法ですか、それとももっと良い方法がありますか? コードは次のとおりです。

<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>
4

2 に答える 2

0

この投稿に PHP のタグが付けられていないことは知っていますが、最終的にこの問題は PHP ソケットで解決されました。この Web ページは Web ページ ボタンの押下に応答し、リモート IP へのソケットを開き、データの文字列を送信し、最後にソケットを閉じます。最初に述べたように、リモート デバイスはイーサネットからシリアルへのコンバーターであり、オーディオ スイッチャーに接続されています。PHP Webページを使用して、このイーサネット接続/シリアル制御のオーディオスイッチャーを制御できるようになりました。コードは非常に単純ですが、構文を正しくするのは困難でした。助けてくれたすべての人に感謝します!これが他の誰かに役立つことを願っています...コードは次のとおりです。

<!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>
于 2013-07-21T03:29:18.800 に答える
0

1) PHP で Apache Web サーバーをセットアップする

2) PHP Telnetスクリプト (または PHP 用のその他の Telnet ライブラリ) をダウンロードします。

3) 文字列の修正

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

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

(お使いのデバイスはポート 100 に応答しますか?)

4) PHP スクリプトを次のように作成します (usernamepasswordを資格情報に置き換えます): 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、Web サーバーの 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 ファイルの最後の部分をコピーして、別のコマンドを追加します。実際のコマンドvaluehidden入力に、ラベルvalueを入力に入れsubmitます。

于 2013-07-20T19:51:50.170 に答える