Comment puis-je obtenir ou attendre le code de résultat d'une commande AT sans utiliser la fonction Sleep()
dans PowerBuilder? J'utilise le contrôle MSComm OLE pour PowerBuilder. Pourrais-je faire une boucle while jusqu'à ce que la propriété MSCOmm.Input
renvoie le tampon approprié? (Par exemple, OK
) Cependant, j'ai essayé ceci mais le Input
renvoie une chaîne vide.Comment obtenir ou attendre le code résultat d'une commande AT?
Voici mon code PB:
String numbers[]
numbers[1] = "+639394854493"
numbers[2] = "+639394854491"
numbers[3] = "+639394854492"
numbers[4] = "+639394854493"
numbers[5] = "+639394854494"
int cnt = 1
for cnt = 1 to 5
Sleep(0.5)
ole_1.object.Output = "AT" + Char(13) + Char(10)
Sleep(0.5)
ole_1.object.Output = "AT+CMGF=1" + Char(13) + Char(10)
Sleep(0.5)
ole_1.object.Output = "AT+CMGS=" + Char(34) + numbers[cnt] + Char(34) + Char(13) + Char(10)
Sleep(0.5)
ole_1.object.Output = sle_2.text + " - " + string(cnt) + Char(26)
next
Et voici les paramètres du port:
ole_1.object.CommPort = 7
ole_1.object.Settings = "115200,n,8,1"
ole_1.object.RThreshold = 1
ole_1.object.InputLen = 0
ole_1.object.InputMode = 0
ole_1.object.PortOpen = True
suggestions? Ou est-ce que je fais quelque chose de mal?
La boucle ne cessera pas. J'ai essayé de sortir 'ls_inp' après qu'il a été initialisé dans la boucle et il retourne vide. – Dac
Je l'ai eu pour travailler, mais 'ls_inp' est maintenant' AT + CMGF = 1 OK' comment faire le 'ls_inp' pour retourner seulement OK? – Dac
Il semble que votre modem fait écho aux commandes. Peut-être que l'envoi d'une commande 'ATE0' pour désactiver l'écho après la commande initiale' AT' peut le désactiver. Une autre option est de remplacer la boucle jusqu'au test avec 'left (ls_inp, 5) = 'OK + Char (13) + Char (10)'? – Seki