AT命令不起作用:: WinSock蓝牙连接

时间:2017-07-07 08:39:20

标签: android c++ bluetooth winsock at-command

我正在用C ++创建Windows应用程序,它通过蓝牙和winsock连接PC和移动设备。允许您通过计算机从手机拨打和发送信息。

我使用AT命令告诉移动我想做什么。与移动设备配对并使用At命令强制呼叫

ATD+420******;

工作完美,但所有处理短信的命令都是

AT+CMGL, AT+CMGF, AT+CMGS etc.

手机可能无法识别它们并返回ERROR。

以下是通过蓝牙和插座连接PC和手机的代码:

SOCKADDR_BTH RemoteEndPoint;
RemoteEndPoint.port = 0;
RemoteEndPoint.addressFamily = AF_BTH;
RemoteEndPoint.btAddr = m_foundDevices[m_deviceIndex].Address.ullLong;
RemoteEndPoint.serviceClassId = HandsfreeServiceClass_UUID;
int BTHAddrLength = sizeof(RemoteEndPoint);

// Create the socket.
if ((m_localSocket = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM)) == INVALID_SOCKET)
{
    // handle error.
}

// Connect the socket.
if ((iResult = connect(m_localSocket, (SOCKADDR *)&RemoteEndPoint,     sizeof(RemoteEndPoint))) == INVALID_SOCKET)
{
    // handle error.
}

通知行

RemoteEndPoint.serviceClassId = HandsfreeServiceClass_UUID

我认为问题出在这里,因为你无法从免提发送短信,但当我使用另一个UUID时,它甚至不与移动配对。

===这里仅供参考,我如何从手机发送和接收数据===

char recvbuf[DEFAULT_BUFLEN] = "";
const char *sendbuf = "AT+CMGL\r";
int len = (int)strlen(sendbuf);
if ((iResult = send(m_localSocket, sendbuf, len, MSG_OOB)) == SOCKET_ERROR)
{
    // handle error. return ~0
}

if ((iResult = recv(m_localSocket, recvbuf, recvbuflen, 0)) == SOCKET_ERROR)
{
    // handle error. return ~0
}    
// Here recvbuf == "\r\nERROR\r\n"

- 我想找出问题,为什么短信的AT命令不起作用。

感谢您的任何建议! 如果您对问题有任何疑问,请与我们联系。 问候, 菲利普。

修改 我找到了答案"如果你想发送短信,GSM设备上需要一个服务器插座,但是经过几小时的谷歌搜索我不知道怎么做。有什么建议吗?谢谢。

0 个答案:

没有答案