2

我在使用 In the 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);
 }
4

0 回答 0