2017-07-04 5 views
0

Je crée une application Windows en C++, qui connecte le PC avec le mobile via Bluetooth et Winsock. Permettez-vous d'appeler et d'envoyer des messages depuis un mobile via un ordinateur. J'utilise la commande AT pour dire à mobile ce que je veux faire. Paire avec le dispositif mobile et forcer un appel avec commande àC++ toutes les commandes AT pour les erreurs de retour SMS | PC <-> Connexion mobile via bluetooth & winsocket

ATD+420******; 

fonctionne parfaitement, mais toutes les commandes pour le traitement des SMS comme

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

erreur de retour.

Code est ici qui relie PC mobile via Bluetooth et prise:

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. 
} 

ligne Avis

RemoteEndPoint.serviceClassId = HandsfreeServiceClass_UUID 

Je pense que le problème est ici, becouse u cant envoyer des sms du mode mains libres, mais quand J'utilise un autre UUID, il ne fonctionne même pas avec un téléphone portable.

=== Voici juste pour info, comment suis-je vous envoyer et recevoir des données à partir === mobile

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" 

Merci pour tous les conseils! Si vous avez des questions sur le problème, je vais vous expliquer. Cordialement, Filip.

+2

C'est une tonne de code qui est généralement un signe que vous n'avez pas encore isolé le problème dans une section particulière. C'est quelque chose à considérer. – tadman

+0

Indépendamment du fait que le code est simple, la partie supérieure du code est juste pour info comment je communique avec l'appareil téléphonique. Je sais exactement où le problème se produit dans la deuxième partie et avec quelle commande AT. Si vous n'avez pas compris une partie je peux vous l'expliquer :) De toute façon c'est mon premier post ici, alors merci pour votre remarque. Cordialement, Filip. –

Répondre

1

J'ai découvert, que le problème est de spécifier UUID pour la connexion.

J'utilisé RemoteEndPoint.serviceClassId = HandsfreeServiceClass_UUID;

et c'est la chose, u ne peut pas envoyer des SMS de mains libres, vous pouvez simplement appeler, donc tous les conseils qui UUID dois-je utiliser, si SMS les commandes AT devraient fonctionner?

Merci.