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($"[發送] {txtSend.Text}\n");
txtSend.Clear();
}
閱讀原文:原文鏈接
該文章在 2025/2/26 18:30:29 編輯過