C#WinForm实现蓝牙连接文件传输
|
admin
2025年2月26日 7:39
本文热度 1716
|
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($"连接失败:{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($"[发送] {txtSend.Text}\n"); txtSend.Clear();}
阅读原文:原文链接
该文章在 2025/2/26 18:30:29 编辑过