【问题标题】:How to start with Bluetooth and serial communication on Windows如何在 Windows 上开始使用蓝牙和串行通信
【发布时间】:2021-08-09 16:58:51
【问题描述】:

(第三次写这篇了,看谁先放弃。我希望我知道你住在哪里,送你一张优惠券,让你去一个可以放松的好地方。)

这是一个关于如何在 Windows 上开始蓝牙开发的问题。

问题:您有一个微控制器和一些传感器,并且您想与计算机通信。我的方法是使用串口转蓝牙适配器。

设置完成后;我可以从我的 Windows 机器连接到微控制器以发送数据;并收到它。现在我想编写一个在 Windows 上运行的应用程序并创建连接。

这可以用多种语言完成,但我选择了 C#。您将能够通过蓝牙读写的应用程序写入微控制器的解决方案是什么?

(这是一个问题吗?是的!问题中没有答案!)

【问题讨论】:

标签: c# bluetooth


【解决方案1】:

所以,这是目前找到的解决方案。当然还有其他人,但这是一个开始。

蓝牙在 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

【讨论】:

    【解决方案2】:

    使用 Windows 窗体项目模板,只需从工具栏中拖动一个串行端口即可。您可以使用波特率和端口 ID(如 COM1、COM2 等)初始化端口。您必须知道串行设备响应来自 PC 的命令。不难处理。蓝牙涉及更多。关于这个主题有一个很好的视频。 https://youtu.be/RVasdDtgLKY

    【讨论】:

      猜你喜欢
      • 2018-04-05
      • 1970-01-01
      • 2016-01-28
      • 1970-01-01
      • 2011-02-14
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多