Ich versuche, Symbol.WPAN.Bluetooth zu verwenden, das mit dem EMDK für Symbol-Geräte geliefert wird.Symbol.WPAN.Bluetooth Beispiel, das Daten überträgt
Hat jemand zufällig ein funktionierendes Beispiel, das Daten überträgt?
Das Beispiel des Symbols verbindet nur die Geräte. (Sie denken anscheinend, dass die Übertragung von Daten in einem Personal Area Network-Beispiel nicht wirklich benötigt wird.)
Wie auch immer, ich weiß, dass dies eine Totale ist, aber wenn jemand dies zur Arbeit gebracht hat, würde ich gerne Code sehen.
Das habe ich ausprobiert. Ich habe ein Gerät drücken Sie Taste1 und ein anderes Gerät drücken Sie Taste2. Der gelesene Wert ist immer ein Byte-Array mit einer Länge von Null.
using System.Text;
using System.Windows.Forms;
using Symbol.WPAN;
using Symbol.WPAN.Bluetooth;
namespace SmartDeviceProject1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Bluetooth bluetooth = new Bluetooth();
if (bluetooth.IsEnabled != true)
{
bluetooth.Enable();
bluetooth.RadioMode = BTH_RADIO_MODE.BTH_DISCOVERABLE_AND_CONNECTABLE;
}
RemoteDevice connectedDevice = null;
foreach (RemoteDevice remoteDevice in MakeEnumerable(bluetooth.RemoteDevices))
{
if ((remoteDevice.Name == "WM_Dan") && (remoteDevice.IsPaired == false))
{
remoteDevice.Pair();
connectedDevice = remoteDevice;
}
}
string test;
test = "Testing this out";
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] encTest = encoding.GetBytes(test);
if (connectedDevice != null)
{
connectedDevice.WriteTimeout = 20000;
connectedDevice.Write(encTest);
}
}
public static IEnumerable<RemoteDevice> MakeEnumerable(RemoteDevices devices)
{
for (var i = 0; i < devices.Length; i++)
{
yield return devices[i];
}
}
private void button2_Click(object sender, EventArgs e)
{
Bluetooth bluetooth = new Bluetooth();
if (bluetooth.IsEnabled != true)
{
bluetooth.Enable();
bluetooth.RadioMode = BTH_RADIO_MODE.BTH_DISCOVERABLE_AND_CONNECTABLE;
}
RemoteDevice connectedDevice = null;
foreach (RemoteDevice remoteDevice in MakeEnumerable(bluetooth.RemoteDevices))
{
if ((remoteDevice.Name == "WM_Dan2") && (remoteDevice.IsPaired == false))
{
remoteDevice.Pair();
connectedDevice = remoteDevice;
}
}
string test;
test = "Testing this out";
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] encTest = encoding.GetBytes(test);
byte[] encTest2;
string test2;
if (connectedDevice != null)
{
connectedDevice.ReadTimeout = 20000;
encTest2 = connectedDevice.Read(encTest.Length);
test2 = encoding.GetString(encTest2, 0, encTest2.Length);
MessageBox.Show(test2);
}
}
}
}
Hallo Vaccano. Hast du es tatsächlich versucht? Hat es funktioniert? Ich habe es mit Erfolg versucht. –
Ich konnte es nie zum Laufen bringen. Da es sich um einen proprietären Bluetooth-Stack (StoneStreet) handelt, sind Sie auf sich gestellt. StoneStreet wird nicht mit Ihnen sprechen, wenn Sie sie nicht einstellen, und die Bibliotheken von Symbol scheinen nur für Drucker und Headsets (usw.) gedacht zu sein. Wir mussten unsere Daten an einen zentralen Server senden und dann erneut auf das Zielgerät herunterladen. Sehr frustrierend, aber Symbol/Motorola ist mit StoneStreet ins Bett gegangen und es gibt nichts, was Sie tun könnten, wenn Ihr Gerät diesen Stack hat. (Wenn Sie das Glück haben, den Microsoft-Stack zu haben, gibt es viele Frameworks, die das einfach machen. – Vaccano