• 蓝牙打印机的连接方法


    一般的手持蓝牙打印机都使用串口协议与主机通信,实现打印。WINCE提供了查找,配对及与蓝牙设备建立串口连接的界面。但那个界面不是很友好,优其对非专业人士来说太过复杂。下文讲述自行开发这样一个程序的方法。

    1,准备工作。

    蓝牙相关的功能需要使用到socket函数库,所以程序先要调用WSAStartup来初始化socket库。

    2,查找蓝牙设备。

    调用 WSALookupServiceBegin来启动一次搜索。

    然后反复调用WSALookupServiceNext,直到找到想要的设备,或者此函数失败。

    最后调用 WSALookupServiceEnd结束本次搜索过程。

    示意代码如下。

     WSADATA wsd;
     HANDLE hLookup;

     ZeroMemory(&wsaq, sizeof(wsaq));
     wsaq.dwSize = sizeof(wsaq);
     wsaq.dwNameSpace = NS_BTH;
     wsaq.lpcsaBuffer = NULL;

     iResult = WSALookupServiceBegin (&wsaq, LUP_CONTAINERS, &hLookup);

    while(1)

    {

     CHAR buf[4096];
     LPWSAQUERYSET pwsaResults = (LPWSAQUERYSET) buf;

      ZeroMemory(pwsaResults, sizeof(WSAQUERYSET));
      pwsaResults->dwSize = sizeof(WSAQUERYSET);
      pwsaResults->dwNameSpace = NS_BTH;
      pwsaResults->lpBlob = NULL;

      DWORD dwSize  = sizeof(buf);

      int iRet = WSALookupServiceNext( hLookup, LUP_RETURN_NAME | LUP_RETURN_ADDR, &dwSize, pwsaResults);

    ...

    }

    3。如果已经找到设备,就可以使用BthPairRequest做密码配对,配对成功后查找它支持的服务。

    需要用到BthNsLookupServiceBegin,BthNsLookupServiceNext,与BthNsLookupServiceEnd。

    如果找到串口,就使用FindRFCOMMChannel来查找串口服务对应的端口号。

    与上面三个函数的用法类似。

    4,这些信息一旦得到,就可以调用 RegisterDevice来创建一个本地串口设备,使用CreateFile打开,WriteFile向其写数据,完成打印。

    有几点需要注意:

    1)使用完设备需要删除连接时,一定要调用 BthRevokeLinkKey来删除Link key,否则会造成永远不能连接。

    2)蓝牙设备没有打开时RegisterDevice也能成功,就是说RegisterDevice不会引发与蓝牙设备连接,只有CreateFile时才会连接。

  • 相关阅读:
    mysql 批量删除process
    python-argparse
    【声纹识别】matlab-辨别男女声
    python @装饰器
    【机器学习】大数定律,中心极限定律 极大似然估计
    【tensorflow】mnist-精简版模型
    Linux 的内存分页管理
    Python-内建函数
    Python-各种结构解析以及生成器(列表解析,字典解析,集合解析,元组构成的生成器)
    Python-模块之时间模块(time,datetime)
  • 原文地址:https://www.cnblogs.com/ceblog/p/2121942.html
Copyright © 2020-2023  润新知