32feet.NET向/从蓝牙设备写入和读取字节

时间:2014-07-24 09:50:42

标签: c# bluetooth 32feet

我在Hand库中使用写入字节和从蓝牙设备读取数据时遇到问题 您可以在下面找到我使用的简单代码。

我发现设备,我配对设备,我创建本地客户端连接,然后通过

连接到设备
BluetoothEndPoint endPoint = new BluetoothEndPoint(addr, BluetoothService.SerialPort,1);
localClient.Connect(endPoint);

在我将字节写入设备之前一切正常,当我尝试这样做时,红色LED应该打开设备但没有任何事情发生....所以我认为该字节尚未写入....

无论如何,代码继续运行直到

int n = stream.Read(newdata[kn], numBytesRead, 1);

此处代码停止并等待无限时间而没有任何错误....

我做错了什么?为什么我发送的字节没有被写入? 谢谢你的帮助!

BluetoothClient localClient = new BluetoothClient();
BluetoothDeviceInfo[] dev;
BluetoothDeviceInfo td = null;

addr = BluetoothAddress.Parse(Addr);

dev = localClient.DiscoverDevices();
foreach (BluetoothDeviceInfo d in dev)
{                      
    if (d.DeviceName == "Device_name")//my device name
    {
        td = d;
        break;
    }
}

try
{
    addr = td.DeviceAddress;

    if (!BluetoothSecurity.PairRequest(addr, null)) 
    {
        Console.WriteLine("Request failed");
    }
}
catch (Exception e)
{
    Console.WriteLine("Exception : " + e.Message);
    Console.Read();
}

BluetoothEndPoint endPoint = new BluetoothEndPoint(addr, BluetoothService.SerialPort,1);
localClient.Connect(endPoint);

Console.WriteLine(localClient.Connected);
NetworkStream stream = localClient.GetStream();

string config = "";
config = "240";

if (stream.CanWrite)
{
     byte[] data_conf = System.Text.Encoding.ASCII.GetBytes(config);              
     stream.Write(data_conf , 0, data_conf .Length);
     stream.Flush();
 }

 System.Threading.Thread.Sleep(100);

 int numBytesToRead = newdata[0].Length;
 int numBytesRead = 0;
 int nBytesRead = 0; // number of bytes read on each cycle

 //stream.ReadTimeout = 5;
 try
 {
      ////////read incoming bytes
      while (numBytesToRead > 0)
      {                        
          int n = stream.Read(newdata[kn], numBytesRead, 1);
          numBytesRead += n;
          numBytesToRead -= n;
      }
 }
 catch (Exception ex)
 {
       Console.Write(ex.Message);
 }

0 个答案:

没有答案