2017-04-20 17 views
2

私は現在、Bluetooth LEデバイスにメッセージを送信するアプリケーションを開発中です。最初の起動時はすべて正常に動作しますが、2回目の起動時には例外が発生します。毎回Bluetooth LEデバイスをペアにしないとメッセージを送信できないのはなぜですか? (UWP)

アプリケーションコード

getDevices()関数

public async Task<List<string>> getDevices() 
    { 
     Debug.WriteLine("C"); 
     foreach (DeviceInformation di in await DeviceInformation.FindAllAsync(GattDeviceService.GetDeviceSelectorFromUuid(new Guid("0000ffe0-0000-1000-8000-00805f9b34fb")))) 
     { 
      Debug.WriteLine("D"); 
      Debug.WriteLine(di.Name); 
      Debug.WriteLine(di.Id); 
      Debug.WriteLine(di.IsEnabled); 
      GattDeviceService bleService = await GattDeviceService.FromIdAsync(di.Id); 
      Debug.WriteLine(bleService.Device.ConnectionStatus.ToString()); 
      Debug.WriteLine("E"); 
      Debug.WriteLine(GattCharacteristic.ConvertShortIdToUuid(0xFFE1).ToString()); 
      // TODO: Throws exception if not paired before startup because pairing info is not stored on device 
      accConfig = bleService.GetCharacteristics(GattCharacteristic.ConvertShortIdToUuid(0xFFE1))[0]; 
      Debug.WriteLine("F"); 
     } 
     return deviceList; 
    } 

のsendMessage()関数

public async void sendMessage(string messageToSend) 
     { 
      // TODO: implement 
      await accConfig.WriteValueAsync((Encoding.UTF8.GetBytes(messageToSend)).AsBuffer()); 
      Debug.WriteLine("G"); 
     } 

エラーのawait accConfiで

私は例外を取得g線:

An exception of type 'System.Exception' occurred in mscorlib.ni.dll but was not handled in user code 

Additional information: [...] (Exception from HRESULT: 0x80070572) 

もう一つは、[設定]タブで、私のBluetoothデバイスは、すべての時間をペアに接続されてからの切り替え保持していることです。何が原因なのか分かりません。

UPDATE 2017年4月23日 デバイスコードと情報

私はArduinoの上のコードが含まれています。私は元のHM-10、on this pageを使用しています。私のブランドはブランドなしです(Keyesのロゴはありません)が、それ以外には違いはありません。 (それはクローンかもしれないが、私が知っているほどそれを疑う)。

#include <SoftwareSerial.h> 
SoftwareSerial bluetooth(9, 10); // RX, TX 
    char commandbuffer[50]; 
     int j = 0; 
void setup() 
{ 

    memset(commandbuffer, 0, sizeof(commandbuffer)); 
    analogWrite(12, 255); 
    analogWrite(11, 0); 
    // Start the hardware serial port 
    Serial.begin(19200); 
    bluetooth.begin(9600); 
    // un REM this to set up a Master and connect to a Slave 

    Serial.println("BLE CC41A Bluetooth"); 
    Serial.println("----------------------------------"); 
    Serial.println(""); 
    Serial.println("Trying to connect to Slave Bluetooth"); 
    delay(1000); 
    bluetooth.print("AT"); // just a check 
    delay(2000); 

    delay(2000); 
    bluetooth.print("AT+ROLE0"); 
    delay(2000); 
    /* 
    bluetooth.println("AT+HELP"); 
    delay(2000); 
    bluetooth.println("AT+CONA0xE4F89CF8AB87");*/ 
    /*bluetooth.println("AT+CONE4F89CF8AB87"); 
    delay(2000);*/ 
    // discover 

    /* 
    bluetooth.println("AT+INQ"); // look for nearby Slave 
    delay(5000); 
    bluetooth.println("AT+CONN1"); // connect to it */ 
} 
void loop() 
{ 
    bluetooth.listen(); 
    // while there is data coming in, read it 
    // and send to the hardware serial port: 
    while (bluetooth.available() > 0) { 
    char inByte = bluetooth.read(); 
    Serial.write(inByte); 
    } 
    // Read user input if available. 
    if (Serial.available()) { 
    delay(10); // The DELAY! 
    char temp = Serial.read(); 
    if (temp == '\n') 
    { 
     bluetooth.print(commandbuffer); 
     Serial.print('\n'); // Because it needs it even if Bluetooth received command happened earlier 
     Serial.println(commandbuffer); 
     memset(commandbuffer, 0, sizeof(commandbuffer)); 
     j = 0; // Reset 
    } 
    else 
    { 
     commandbuffer[j++] = temp; 
    } 
    delay(500); 
    } 

} 

答えて

0

これは、ペア設定情報がデバイスに保存されていない場合に発生します。再接続するたびに、Windows 10ではデバイスがペアになっているがデバイスは接続されていないため、ペア解除と再ペアリングを行う必要があります。

+0

私はBluetoothデバイスをプログラムすることができますので、このコマンドセットをデータシートに保存するにはどうすればいいですか?[here](http://fab.cba.mit.edu/classes/863.15/doc/チュートリアル/プログラミング/ブルートゥース/ bluetooth40_ja.pdf)可能であれば、デバイスをペリフェラルモードにしておきたいと思います。 – boomkin

+0

本当のJNHuaMao製品であれば問題はありませんが、 "Bolutek"のようなクローンであれば動作しません。ファームウェアを変更する可能性がありますが、私はそれに成功しませんでした。 1ドルをさらに使い、Keyestudio Mini HM-10 Bluetooth V4.0のような本物のものを手に入れよう。 – GrooverFromHolland

+0

私は製品のさまざまなクローンについて知っていますが、私はオリジナルの2番目のオリジナルバージョン(オリジナルはKeyesのロゴなし)を持っていると思いますが、何とかそのペアリング情報を保存することは可能でしょうか? – boomkin

関連する問題