gpt4 book ai didi

C++ 所有用于短信返回的 AT 命令的错误 | PC<->通过蓝牙和 winsocket 的移动连接

转载 作者:行者123 更新时间:2023-11-28 05:05:33 25 4
gpt4 key购买 nike

我正在用 C++ 创建 Windows 应用程序,它通过蓝牙和 winsock 将 PC 与移动设备连接起来。允许您通过计算机通过手机调用电话和发送消息。

我正在使用 AT 命令告诉手机我想做什么。与移动设备配对并使用 At 命令强制通话

ATD+420******;

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

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

返回错误。

这里是通过蓝牙和socket连接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

我认为问题出在这里,因为你不能从 Handsfree 发送短信,但是当我使用另一个 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++ 所有用于短信返回的 AT 命令的错误 | PC<->通过蓝牙和 winsocket 的移动连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44910136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com