所以,这是目前找到的解决方案。当然还有其他人,但这是一个开始。
蓝牙在 Windows 上使用串口;这意味着当与计算机配对时,蓝牙设备将与 Windows 上的 COM 端口耦合。
到目前为止,我发现在我的案例中,COM5 与蓝牙设备耦合。
知道了这一点,如果您想用 C# 编写一个与 BT 设备(当然还有微控制器)通信的应用程序,您需要在您的应用程序中实现串行协议。
例如,使用 Visual Studio 创建一个基于表单的新应用程序,然后您可以从工具部分导入串行组件并将其拖放到表单上。如果你想写一个非可视化的应用程序;你需要包括
System.IO.Ports
这将允许您在 Windows 上查询端口;特别是串行 COM 端口。
那么只需设置正确的发送和接收端口,并打开连接即可。该对象使用一个非常简单的 API,例如,允许您将串行输出转储到富文本字段中,并从常规文本字段中读取以相同方式发送的命令。
例如,如果您在表单上有一个名为 serial1 (System.IO.Ports.SerialPort) 的串行对象、一个按钮、一个文本框和一个富文本框:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;
using System.Windows.Forms;
namespace serialexample
{
public partial class Form1 : Form
{
// variables area
private string rxstring;
public Form1()
{
InitializeComponent();
}
private void btn_send_Click(object sender, EventArgs e)
{
if (!serial1.IsOpen)
{
serial1.Open();
rtb_receive.Text = "Port Opened";
serial1.Write(txt_send.Text);
}
else
{
serial1.Write(txt_send.Text);
}
}
private void serial1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
rxstring = serial1.ReadExisting();
this.Invoke(new EventHandler(displayText));
}
private void displayText(object o, EventArgs e)
{
rtb_receive.AppendText(rxstring);
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
serial1.Close();
}
}
这是我与蓝牙模块通信的起点。多亏了这一点,我编写的应用程序能够通过蓝牙向移除微控制器发送和接收数据。
由于这是我第一次尝试,我不知道其他方法可以这样做;但我确信有更强大的方法可以完成相同的任务(也可以使用其他语言)。
这是一个有助于解决问题的有用视频:https://www.youtube.com/watch?v=NkyLErxr3ZA