3

最初に私の全体的な目標を説明し、次に質問自体を説明します。

全体的な目標:

ルーターに接続されているArduinoボードにコマンドを送信します。コンピューターはwifi経由でルーターに接続されます。Arduinoは、コンピューターがArduinoにキー押下を送信するために使用するローカルWebサイトを提供します。キーの押下に応じて、Arduinoは何らかの方法で動作します。

Arduinoにコマンドを送信する1つの方法は、Arduinoが提供するWebサイトのURLの最後にあるパラメーターを使用することです。Arduinoはこれらのパラメーターを読み取ることができます。これで問題ありません。

Arduinoは、Javascript / HTML/CSSなどでコード化されたWebサイトを提供できます。

質問:

私はJavascriptを1週間使用しています。しかし、これまでのところ、私は以下のコードを持っています:

<!DOCTYPE html>
<html>
<head>

<script type="text/javascript">


function Submit()
{
document.forms['myform'].submit();
}

document.onkeydown = function(event) {
var key_press = String.fromCharCode(event.keyCode);
var key_code = event.keyCode;
document.getElementById('kp').innerHTML = key_press;
    document.getElementById('kc').innerHTML = key_code;
var t=setTimeout("Submit()", 500);          
}


</script>
</head>


<form name='myform' method='GET'>

Key Pressed : <span id="kp" name="KP"></span>
<br />
Key Code : <span id="kc" name="KC"></span>


</form>
</html>

これにより、叩いたキーボードからキーの「キーコード」を確認することができます。ウェブサイトはキーが押されたことを確認し、キーコードと実際のキーを出力します。

そこにsettimeout関数を配置して、キーを押している間、ページがゆっくりと一定の速度で更新されるようにします。

HTMLのいくつかのものが、独自にパラメーターを作成および管理することを私は知っています。たとえば、ドロップダウンボックス。私の理解では、ドロップダウンボックスが

<form method='GET'></form> 

タグ、あなたはパラメータを作成することができます。また、テキストボックスもこれと同じことを行います。次に、Webページを「送信」すると、これらのオブジェクトの調整された値がURLのパラメーターに表示されます。

ただし、キーコードの値をオブジェクトに出力してから、ページを送信して値をURLパラメーターにリアルタイムでコピーする方法がわかりません。

リアルタイム:たとえば、「上」を押している間はコマンドを送信し続け、離すと停止することを意味します。

テキストボックスに文字を入力し、送信ボタンを使用してURLパラメータに値を入力することで、これを大まかに行うことができました。ただし、これに上矢印または下矢印を含めることはできません。そのため、Webページをリアルタイムで送信する必要がありました。

TLDR:キーボードのキーコードを使用してURLのパラメーターをリアルタイムで制御するにはどうすればよいですか?

これを読んでいただきありがとうございます。すべての回答は大歓迎です。

編集5/15/ 12web_bodは私にいくつかの役立つコードを与えました。新しいコード全体は次のとおりです。

<!DOCTYPE html>
<html>
<head>

<script type="text/javascript">


function Submit()
{  
document.forms['myform'].submit();
}

document.onkeydown = function(event) {
var key_press = String.fromCharCode(event.keyCode);
var key_code = event.keyCode;
document.getElementById('kp').innerHTML = key_press;

var t=setTimeout("Submit()", 500);          
}

</script>
</head>

<body onLoad='document.myform.KP.focus()'>
<form name='myform' method='GET' action="ENTER URL HERE">
Key Pressed : <input type="text" id="kp" name="KP"></span>

</form>
</body>
</html>

Webページをテキストボックスにフォーカスさせました。それがなければ、テキストボックスをクリックする必要があり、コードが最終的に登録されました。

現状でのパフォーマンス:Webページが読み込まれると、ページは自動的にテキストボックスにフォーカスされます。キーが押されるのを待ちます。キーを押します。ページは、0.5秒後にURLのパラメーターへの文字をロードします(setTimeout()を使用すると、応答を速くすることができます)。別のキーが押されるまで、キーはパラメータに残ります。

物乞いは選べないことは知っていますが、キーを押している間アクションが続き、キーを離すとアクションが止まる「ビデオゲーム風」をやってみたかったのです。この場合、キーを押したままにすると、テキストボックスに文字が入力され、送信されます。Arduinoで文字のリストではなく、個々の文字を検索したいので、これは機能しません。しかし、これはこれまでのところ本当に素晴らしいです。私は間違いなくこれを実装してもかまいません。

しかし、Timが述べたように、私はソケット通信で多くの研究を行ってきました。これは良い道のように思えます。ArduinoイーサネットシールドはUDPライブラリを使用しています。これまでのところ、私の唯一の難しさはクライアントエンドのセットアップです。Arduinoはサーバーです。これで何が起こっても、私は編集します。

4

1 に答える 1

1

まず、スパンを交換します。

<form name='myform' method='GET' action="scriptURL">
    Key Pressed : <input type="text" id="kp" name="KP"></span>
    <br />
    Key Code : <input type="text" id="kc" name="KC"></span>
</form>

(これにより、次のようなURLが生成されます:scriptURL?KP = xxx&KC = yyy

本当に軽量なものが必要な場合はどうでしょうか。

<script>     
  document.onkeydown = function(event) {
    var key_press = String.fromCharCode(event.keyCode);
    var key_code = event.keyCode;
    document.getElementById('img').src = "scriptURL?KP=" + key_press + "&KC=" + key_code;
  }
</script>

<img src="scriptURL" id="img" style="display:none;"/>

キーを押すたびに、画像のリロードがトリガーされます(画像は非表示になります)。サーバー上のスクリプトは、返されたデータに関係なく、KPおよびKCパラメーターをリアルタイムで受け取ります。

于 2012-05-15T03:03:05.513 に答える