2017-07-19 7 views
2

Utilisation de In The Hand 32feet library pour .NET Compact Framework 3.5, lors de l'exécution de leur exemple de projet Chat2Device sur un Datalogic Scorpio X3 exécutant Windows Embedded Handheld 6.5 Professional CE OS 5.2.29366 Build 29366.5.3.12.48 la commande pour passer la radio Bluetooth à "Discoverable" échoue. 13512 (Erreur interne survenue?)Erreur 1359 Configuration du mode Bluetooth Radio Windows Embedded Handheld 6.5

Il n'y a aucun problème à communiquer entre les périphériques utilisant Bluetooth dans cet exemple de projet sur le périphérique mobile, en récupérant uniquement les informations de PrimaryRadio ou en essayant de définir RadioMode à n'importe quel mode émet une exception.

message d'erreur complet est:

Win32Exception Erreur de réglage BluetoothRadio Code d'erreur 1359 à InTheHand.Net.Bluetooth.Msft.WindowsBluetoothRadio.set_Mode (valeur RadioMode)

code

est:

BluetoothRadio.PrimaryRadio.Mode = RadioMode.Discoverable; 

Le code suivant dans l'exemple échoue également avec une exception similaire:

var myRadio = BluetoothRadio.PrimaryRadio; 
      if (myRadio == null) { 
       wtr.WriteLine("No radio hardware or unsupported software stack"); 
       return; 
      } 
      var mode = myRadio.Mode; 
      // Warning: LocalAddress is null if the radio is powered-off. 
      wtr.WriteLine("* Radio, address: {0:C}", myRadio.LocalAddress); 
      wtr.WriteLine("Mode: " + mode.ToString()); 
      wtr.WriteLine("Name: " + myRadio.Name); 
      wtr.WriteLine("HCI Version: " + myRadio.HciVersion 
       + ", Revision: " + myRadio.HciRevision); 
      wtr.WriteLine("LMP Version: " + myRadio.LmpVersion 
       + ", Subversion: " + myRadio.LmpSubversion); 
      wtr.WriteLine("ClassOfDevice: " + myRadio.ClassOfDevice 
       + ", device: " + myRadio.ClassOfDevice.Device 
       + "/service: " + myRadio.ClassOfDevice.Service); 
      wtr.WriteLine("S/W Manuf: " + myRadio.SoftwareManufacturer); 
      wtr.WriteLine("H/W Manuf: " + myRadio.Manufacturer); 

Toutes les suggestions pour un correctif, ou une autre méthode pour paramétrer la radio pour qu'elle soit détectable par programmation.

Les sections pertinentes du code de la bibliothèque;

private const string btdrtDll = "btdrt.dll"; 

[DllImport(btdrtDll, SetLastError = true)] 
internal static extern int BthReadScanEnableMask(out WinCeScanMask pmask); 

[DllImport(btdrtDll, SetLastError = true)] 
internal static extern int BthWriteScanEnableMask(WinCeScanMask mask);   

[Flags()] 
internal enum WinCeScanMask : byte 
{ 
    None = 0, 
    InquiryScan = 1, 
    PageScan = 2, 
} 

public void SetMode(bool? connectable, bool? discoverable) 
{ 
    // TO-DO set power-on here 
    // 
    WinCeScanMask mask; 
    if (connectable.HasValue && discoverable.HasValue) { 
     // Will set both bits so do NOT need to know their current value. 
     mask = 0; 
    } else { 
     int resultR = NativeMethods.BthReadScanEnableMask(out mask); 
     if (resultR != 0) { 
      throw new System.ComponentModel.Win32Exception(resultR, "Error getting BluetoothRadio mode"); 
     } 
    } 
    switch (connectable) { 
     case true: 
      mask |= WinCeScanMask.PageScan; 
      break; 
     case false: 
      mask &= ~WinCeScanMask.PageScan; 
      break; 
     // null NOP 
    } 
    switch (discoverable) { 
     case true: 
      mask |= WinCeScanMask.InquiryScan; 
      break; 
     case false: 
      mask &= ~WinCeScanMask.InquiryScan; 
      break; 
     // null NOP 
    } 
    var result = NativeMethods.BthWriteScanEnableMask(mask); 
    if (result != 0) { 
     throw new System.ComponentModel.Win32Exception(result, "Error setting BluetoothRadio mode"); 
    } 
} 

Répondre

2

Je ne suis pas sûr pour le "Scorpion X3 Datalogic" avec WEH65, mais certains appareils sont livrés avec une pile Bluetooth non-MS.

AFAIS, le SDK "Datalogic Scorpio X3" fournit un ensemble d'API unique pour contrôler Bluetooth. La fonction standard pour définir le mode de module BT est BthSetMode. L'autre fonction BthWriteScanEnableMask est utilisée par 32feet. Ce qui n'est probablement pas implémenté sur le Datalogic X3.

+0

Merci J'ai essayé BthSetMode mais il retourne également 1359. J'ai téléchargé Datalogic SDK et il a bluetooth API bur de ce que je peux voir ne propose pas l'option pour définir le mode radio. Je pense que je dois trouver ce que le bouton Bluetooth "Find Me" utilise ... –