最初に私の全体的な目標を説明し、次に質問自体を説明します。
全体的な目標:
ルーターに接続されている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はサーバーです。これで何が起こっても、私は編集します。