我在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);
}