C# 如何在Windows上启动蓝牙和串行通信

C# 如何在Windows上启动蓝牙和串行通信,c#,bluetooth,C#,Bluetooth,(第三次写这篇文章,让我们看看谁先放弃。我希望我知道你住在哪里,给你寄张优惠券,让你去一个你可以尽情享受的好地方旅行。) 这是一个关于如何在Windows上开始蓝牙开发的问题 问题:你有一个微控制器和一些传感器,你想与计算机通信。我的方法是使用串行到蓝牙适配器 一旦建立起来;我可以从我的Windows机器连接到微控制器发送数据;并且也接受它。现在我想编写一个在Windows上运行的应用程序并创建连接 这可以用不同的语言来实现,但我学会了C。将能够通过蓝牙读写的应用程序写入微控制器的解决方案是什么

(第三次写这篇文章,让我们看看谁先放弃。我希望我知道你住在哪里,给你寄张优惠券,让你去一个你可以尽情享受的好地方旅行。)

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

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

一旦建立起来;我可以从我的Windows机器连接到微控制器发送数据;并且也接受它。现在我想编写一个在Windows上运行的应用程序并创建连接

这可以用不同的语言来实现,但我学会了C。将能够通过蓝牙读写的应用程序写入微控制器的解决方案是什么


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

因此,这是迄今为止找到的解决方案。当然还有其他的,但这只是一个开始

蓝牙在Windows上使用串行端口;这意味着当与计算机配对时,蓝牙设备将与Windows上的COM端口配对。 到目前为止,我发现在我的例子中,COM5与蓝牙设备耦合

知道了这一点,如果你想用C语言编写一个与BT设备(当然还有微控制器)对话的应用程序,你需要在你的应用程序中实现串行协议

例如,使用VisualStudio创建一个新的基于表单的应用程序,然后可以从“工具”部分导入串行组件并将其放到表单上。如果要编写非可视化应用程序;你需要包括

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();
    }
}
这就是我用来与蓝牙模块通信的起点。正因为如此,我编写的应用程序能够通过蓝牙向remove micro controller发送和接收数据

由于这是我第一次尝试,我不知道还有其他方法可以做到这一点;但我确信有更强大的方法来实现同样的目标(在其他语言中也是如此)

这是一段有用的视频,有助于找到解决方案: