我正在用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设备上需要一个服务器插座,但是经过几小时的谷歌搜索我不知道怎么做。有什么建议吗?谢谢。