我正在用C ++创建Windows应用程序,该应用程序通过蓝牙和Winsock将PC与手机连接起来。允许您通过计算机通过手机呼叫和发送消息。
我正在使用AT命令来告诉手机我想做什么。与移动设备配对并使用At命令强制呼叫
ATD+420******;
工作完美,但所有用于处理SMS的命令
AT+CMGL, AT+CMGF, AT+CMGS etc.
返回的错误。
这是通过蓝牙和插座将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"
谢谢您的任何建议!如果您对问题有任何疑问,请给我解释。
问候,
菲利普
最佳答案
我发现,问题在于指定用于连接的UUID。
我用RemoteEndPoint.serviceClassId = HandsfreeServiceClass_UUID;
就是这样,您不能从免提发送短信,您只能打电话,所以我应该使用哪个UUID建议,以便短信AT命令起作用?
谢谢。
关于c++ - C + +所有AT命令的SMS返回的错误PC <->通过蓝牙和Winsocket进行移动连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44910136/