1.问题描写:
上位机软件与下位机程序通过串口通信,上位机是windows7 64位系统,因为windows通信协议栈存在蓝牙地址族,通过 RFCOMM 仿真串口通信,部分代码如下:
SOCKADDR_BTH SockAddrBthServer= RemoteBthAddr;
SockAddrBthServer.addressFamily = AF_BTH;
SockAddrBthServer.serviceClassId = g_guidServiceClass;
SockAddrBthServer.port = 0;
if (INVALID_SOCKET != LocalSocket)
{
closesocket(LocalSocket);
}
LocalSocket = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
if ( INVALID_SOCKET == LocalSocket )
{
return status;
}
//建立蓝牙连接
if ( 0 == connect(LocalSocket,
(struct sockaddr *) &SockAddrBthServer,
sizeof(SOCKADDR_BTH)) )
{
status=true;
SetEvent(hAyncEvent);
}
为了能使用RFcomm通信,首先计算机必须安装蓝牙适配器,与下位机的蓝牙进行配对.配对成功后,查询蓝牙是否能够虚拟出串口。如下图所示:
遇到的问题:
Think pad T550添加了蓝牙设备后,设备属性->服务,没有看到串口端口?
解决方案:
查看计算机->设备管理
通过安装低版本的声卡驱动来解决。
问题原因:
Realtek High Definition Audio 中含有蓝牙设备驱动程序,如果该蓝牙设备驱动程序的版本太高,则与微软提供的通用蓝牙适配器不匹配,从而提示系统中存在未授权的蓝牙适配器的提醒。