これは潜在的に愚かな質問かもしれませんが、私は2週間それを成功させています。私は電話でEVOThingsアプリケーションにブルートゥース経由で接続するArduino101を使用しています。アプリケーションは、HerokuでホストされているFlaskサーバーからツイーター情報を要求します。その考え方は、Bluetooth接続を介してArduinoに応答を中継することです。しかし、応答はうまくいっていますが、クライアント側の応答を解析して処理し、Arduino101に送信するのに問題があります。私はAJAXを使用して要求を行うための機能を追加して保存することで、BLEとの電話アプリにArduino101を接続するためのEVOThing例を修正してやったJSスクリプトでEVOThingアプリケーションで要求応答を保存する方法
<script>
\t // Application object.
\t var app = {}
\t // Connected device.
\t app.device = null;
\t app.msg = '';
\t
\t //Get the message.
\t app.getMsg = function()
\t { \t
\t \t $.ajax({ type: "GET",
\t \t \t contentType: "application/json; charset=utf-8",
\t \t \t url: 'http://peony-curie.herokuapp.com/getPushNotifications',
\t \t \t async: false,
\t \t \t dataType: "json",
\t \t \t //navigator.notification.alert("hello", function() {});
\t \t \t success : function(text)
\t \t \t {
\t \t \t \t // navigator.notification.alert("hello", function() {});
\t \t \t \t var res = JSON.stringify(text.data);
\t \t \t \t // navigator.notification.alert("hello", function() {});
\t \t \t \t //document.getElementById("try").innerHTML=res;
\t \t \t \t var message = '';
\t \t \t \t for(i = 0; i < res.length; i++){
\t \t \t \t \t message += res[i];
\t \t \t \t }
\t \t \t \t app.msg += message;
\t \t \t \t //navigator.notification.alert("hello", function() {});
\t \t \t \t
\t \t \t }
\t \t });
\t }
\t // Turn on LED red.
\t app.ledRed = function()
\t {
\t \t app.device && app.device.writeDataArray(new Uint8Array([1]), '19b10001-e8f2-537e-4f6c-d104768a1214');
\t }
\t
\t // Turn on LED green
\t app.ledGreen = function()
\t {
\t \t navigator.notification.alert(app.msg, function() {});
\t \t app.device && app.device.writeDataArray(new Uint8Array([2]), '19b10001-e8f2-537e-4f6c-d104768a1214'); \t
\t }
\t \t // Turn on LED blue
\t app.ledBlue = function()
\t {
\t \t app.device && app.device.writeDataArray(new Uint8Array([3]), '19b10001-e8f2-537e-4f6c-d104768a1214');
\t }
\t \t // Turn on LED yellow
\t app.ledYellow = function()
\t {
\t \t app.device && app.device.writeDataArray(new Uint8Array([4]), '19b10001-e8f2-537e-4f6c-d104768a1214');
\t }
\t \t // Turn on LED cyan
\t app.ledCyan = function()
\t {
\t \t app.device && app.device.writeDataArray(new Uint8Array([5]), '19b10001-e8f2-537e-4f6c-d104768a1214');
\t }
\t \t // Turn on LED purple
\t app.ledPurple = function()
\t {
\t \t app.device && app.device.writeDataArray(new Uint8Array([6]), '19b10001-e8f2-537e-4f6c-d104768a1214');
\t }
\t \t // Turn on LED white
\t app.ledWhite = function()
\t {
\t \t app.device && app.device.writeDataArray(new Uint8Array([7]), '19b10001-e8f2-537e-4f6c-d104768a1214');
\t }
\t
\t // Turn off LED.
\t app.ledOff = function()
\t {
\t \t app.device && app.device.writeDataArray(new Uint8Array([0]), '19b10001-e8f2-537e-4f6c-d104768a1214');
\t }
\t app.showMessage = function(info)
\t {
\t \t document.getElementById('info').innerHTML = info
\t };
\t // Called when BLE and other native functions are available.
\t app.onDeviceReady = function()
\t {
\t \t app.showMessage('Touch the connect button to begin.');
\t };
\t app.connect = function()
\t {
\t \t evothings.arduinoble.close();
\t \t app.showMessage('Connecting...');
\t \t evothings.arduinoble.connect(
\t \t \t 'ARDUINO 101-3E4E', // Advertised name of BLE device.
\t \t \t function(device)
\t \t \t {
\t \t \t \t app.device = device;
\t \t \t \t app.showMessage('Connected! Touch buttons to turn LED on/off.');
\t \t \t },
\t \t \t function(errorCode)
\t \t \t {
\t \t \t \t app.showMessage('Connect error: ' + errorCode + '.');
\t \t \t });
\t };
\t document.addEventListener(
\t \t 'deviceready',
\t \t function() { evothings.scriptsLoaded(app.onDeviceReady) },
\t \t false);
\t </script>
:以下のコードの一部であります私はそれをArduinoに送る予定です。しかし、msgは変数に格納されることはありません。実際には、AJAXポストの成功コードブロックのデバッグにアラート機能を使用しても、私は何も得られません。サーバー側が応答を受け取り、以下に示すようにOK 200コードを返しています。 Heroku Logs from server side
何らかの理由により、サーバーから送信されるmsgがapp.msg変数に保存されません。なぜこのセットアップがうまくいかないかについての助けは大いに感謝されます。