using InTheHand.Net;using InTheHand.Net.Sockets;using InTheHand.Net.Bluetooth;
private BluetoothClient btClient;private NetworkStream btStream;private BluetoothDeviceInfo selectedDevice;private readonly Guid serviceUUID = new Guid("00001132-0000-1000-8000-00805f9b34fb");
private void btnScan_Click(object sender, EventArgs e){ lstDevices.Items.Clear(); btClient = new BluetoothClient(); var devices = btClient.DiscoverDevices();
foreach (var device in devices) { lstDevices.Items.Add($"{device.DeviceName} [{device.DeviceAddress}]"); }}
private void lstDevices_SelectedIndexChanged(object sender, EventArgs e){ var selected = btClient.DiscoverDevices()[lstDevices.SelectedIndex]; selectedDevice = selected; richTextBox1.AppendText($"已選擇:{selected.DeviceName}\n");}
private void btnConnect_Click(object sender, EventArgs e){ try { btClient.Connect(selectedDevice.DeviceAddress, serviceUUID); btStream = btClient.GetStream(); StartListening(); richTextBox1.AppendText("連接成功\n"); } catch (Exception ex) { MessageBox.Show($"連接失?。?/span>{ex.Message}"); }}
private void StartListening(){ new Thread(() => { byte[] buffer = new byte[1024]; while (btClient?.Connected == true) { try { int bytesRead = btStream.Read(buffer, 0, buffer.Length); if (bytesRead > 0) { string received = Encoding.UTF8.GetString(buffer, 0, bytesRead); Invoke((MethodInvoker)delegate { richTextBox1.AppendText($"[接收] {received}\n"); }); } } catch { break; } } }).Start();}
private void btnSend_Click(object sender, EventArgs e){ if (btClient?.Connected != true) return; byte[] buffer = new byte[1024]; using (FileStream fs = new FileStream(txtSend.Text, FileMode.Open, FileAccess.Read)) { int bytesRead; while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0) { btClient.GetStream().Write(buffer, 0, bytesRead); } } richTextBox1.AppendText($"[發(fā)送] {txtSend.Text}\n"); txtSend.Clear();}
閱讀原文:原文鏈接
該文章在 2025/2/26 18:30:29 編輯過