Member 13294153 Ответов: 1

На C++ все по команде за ошибки СМС возвращения


- Привет!

Я создаю приложение windows на C++, которое соединяет ПК с мобильным телефоном через bluetooth и winsock. Позволяет вам звонить и отправлять сообщения с мобильного телефона через компьютер.

Я с помощью AT-команд мобильного, чтобы сказать, что я хочу сделать. Сопряжение с мобильным устройством и принудительный вызов с помощью команды At
ATD+420******;
работает идеально, но все команды для обработки SMS вроде
AT+CMGL, AT+CMGF, AT+CMGS etc.
ошибка возврата.

Вот код, который соединяет ПК с мобильным телефоном через bluetooth и розетку:
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

Я думаю, что проблема здесь, потому что вы не можете отправить sms с громкой связи, но когда я использую другой 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 <- не получилось.

Погуглив много часов, я не нашел никакого решения.

1 Ответов

Рейтинг:
6

KarstenK

Отправка модемных команд на устройство bluetooth звучит немного устало.

Я думаю, что вы используете плохие команды, поэтому прочитайте эту статью Отправка и чтение SMS через GSM модем с помощью AT команд чтобы узнать больше об этом вопросе.