PC端与bluetooth蓝牙虚拟串口通信

260 篇文章 9 订阅

应该采用RFCOMM虚拟串口方式来进行通信,原理跟socket通信类似,不同的是使用的通信协议不同,本人结合相关的API,做了以下最简单的封装。

1、获取本地蓝牙设备与附近蓝牙设备信息

2、通信类


/*
通信类:只是对于客户端通信
Initialize
Create
Connect
Send
Receive
Close
Finalize
*/

class  BlueToothSimple
{
public:
    bool Initialize();

    bool Create();

    bool Connect(const char* straddr, const char* guid = "0000fd2d-0000-1000-8000-00805f9b34fb");

    bool Send(const char* msgToServer);

    // 返回字符串
    string Receive();

    // 返回特殊的数据,针对于\r\n 划分开的字符串
    vector<CString> ReceiveEx();

    bool Close();

    void Finalize();

protected:

    int error;

    SOCKET btSocket;
};

3、支持服务器客户端蓝牙虚拟通信接口

class BlueToothSocket
{

public:

    BlueToothSocket();

    ~BlueToothSocket();

    BOOL StartSearchBthDev(IN DWORD dwControlFlags);

    BOOL GetNextBthDev(
        IN OUT BTHDEV_INFO *pcBthDevInfo,
        IN DWORD dwControlFlags = LUP_RETURN_NAME | LUP_RETURN_ADDR | LUP_FLUSHCACHE
        );

    BOOL EndSearchBthDev();

    bool Initialize();

    void Finalize();

    BOOL Create(int af = AF_BTH, int type = SOCK_STREAM, int protocol = BTHPROTO_RFCOMM);

    BOOL Close();

    int Bind(BTH_ADDR sktAddr = 0, ULONG port = BT_PORT_ANY);

    int Listen(IN int backlog);

    int GetSockName(BTH_ADDR *psktAddr, ULONG *port);

    int SetBthService(TCHAR *lpServiceName);

    int Accept(BlueToothSocket *pcBth);

    int GetBTHAddr(const char* straddr, BTH_ADDR* btaddr);

    int Connect(BTH_ADDR sktAddr, ULONG port, int nMSecond = -1);

    int Send(LPVOID lpData, int len, int flags = 0);

    int Recv(LPVOID lpData, int len, int flags = 0);

    int SendAll(LPVOID lpData, int len, int flags = 0);

    int RecvAll(LPVOID lpData, int len, int flags = 0);

private:

    void HexMac2String(BTH_ADDR dw64Addr, TCHAR *pstrMac);
};

资源下载地址:https://download.csdn.net/download/u011269801/89296309?spm=1001.2014.3001.5503

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MFC是微软的一种Windows操作系统下的编程框架,可以帮助程序员快速地构建Windows桌面应用程序。在MFC中,蓝牙的通信可以通过使用Windows API实现。 要实现PC端蓝牙与外设通信,首先需要安装蓝牙适配器,并在Windows系统中进行相应设置。然后,通过MFC中的Windows API,可以访问蓝牙适配器,并与外设进行通信。 MFC中的Windows API提供了一些函数来实现蓝牙通信,例如“BluetoothEnumerateInstalledServices”可以用于枚举已安装的蓝牙服务,而“BluetoothSetServiceState”可以用于启用或禁用特定的蓝牙服务。此外,还有一些函数可以用于建立蓝牙连接、发送和接收数据等。 在使用MFC实现蓝牙通信时,需要注意安全问题。使用蓝牙通信可能会面临蓝牙监听、信息泄露等问题,因此需要进行加密和身份验证等安全措施。 总之,在MFC中实现蓝牙通信需要先安装蓝牙适配器,然后通过使用MFC中的Windows API来访问蓝牙适配器并与外设通信。同时,为了保证安全,需要注意安全问题,并采取相应的安全措施。 ### 回答2: MFC是Microsoft提供的一套基于Windows平台的软件开发工具包,它提供了多种编程控件和类库,方便程序员快速开发Windows应用程序。在MFC中,可以通过调用Windows API函数来实现各种功能,其中蓝牙通信也是一种常用的功能。 在PC端实现蓝牙与外设通信主要分为两个部分:蓝牙设备管理和数据传输管理。关于蓝牙设备管理,在MFC中可以通过调用Windows API中的蓝牙函数实现,例如使用BluetoothFindFirstRadio、BluetoothFindFirstDevice等函数进行查找和配对;数据传输管理主要涉及到数据的接收和发送,可以使用BluetoothSdpEnumRecords、BluetoothRfcommConnect等函数实现。 除了使用Windows API函数外,还可以使用第三方蓝牙类库来简化蓝牙通信的开发。例如,利用开源的32feet.NET类库可以快速实现PC端蓝牙和外设之间的通信,类库提供了BluetoothClient、BluetoothListener等蓝牙通信相关类。 通过以上方法实现PC端蓝牙与外设之间的通信,可以满足一定的应用场景。但需要注意的是,蓝牙通信中存在一些限制和不可靠性,例如传输速率较慢、信号受干扰影响较大等,需要针对具体应用场景进行综合考虑。 ### 回答3: MFC是Microsoft Foundation Class的缩写,是微软公司推出的一种基于C++的GUI编程框架。通过MFC可以方便地实现Windows操作系统上的软件开发。为了实现PC端蓝牙与外设的通信,需要以下几个步骤: 第一步,打开蓝牙设备并连接外设。在MFC中,可以使用Bluetooth API来操作蓝牙设备。可以使用BluetoothEnableDiscovery函数打开蓝牙设备,并使用BluetoothConnect函数连接外设。 第二步,判断是否连接成功。在连接外设之后,可以使用BluetoothGetDeviceInfo函数获取外设的信息,比如名称、地址等。如果获取成功,则说明连接成功。 第三步,发送和接收数据。在MFC中可以使用CAsyncSocket来实现数据传输。首先需要创建一个CAsyncSocket对象,然后使用Connect函数来连接外设。接着使用Send函数发送数据,使用Receive函数接收数据。 第四步,关闭蓝牙。在通信结束之后,需要使用BluetoothCloseConnection函数断开蓝牙连接,并使用BluetoothEnableDiscovery函数关闭蓝牙设备。 总之,通过MFC可以很方便地实现PC端蓝牙与外设的通信。需要注意的是,使用蓝牙技术进行通信时需要保证设备之间的安全性,以免被攻击或数据泄露。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值