2017-08-20 8 views
1

J'essaie de lire certaines chaînes d'un fichier texte stocké dans mon PC. Mon module GSM est SIM900A J'utilise python pour lire la ligne suivante contenue dans le fichier texte:Lecture de texte à partir du fichier et envoi au module GSM via Arduino

AT + CMGS = \ « + 9232xxxxxxxx \ » \ r

Cette ligne contient la commande AT et le numéro de téléphone auquel je veux envoyer le SMS.

Le code Python est la suivante:

import serial 
import time 

arduino = serial.Serial("COM3",9600,timeout = 5) 
time.sleep(2) 

i = 0 

while(i<1): 
    arduino.flush() 
    text_file = open("Data.txt","r") 
    line1 = text_file.readline() 
    arduino.write(line1) 
    time.sleep(1) 
    i = i + 1 
    exit() 
text_file.close() 

Le code Arduino est la suivante:

#include <SoftwareSerial.h> 

SoftwareSerial mySerial(7, 8); 
int counter = 0; 
String msg1; 
String numb = "AT+CMGS=\"+9232xxxxxxxx\"\r"; 

void setup() { 
    mySerial.begin(9600); 
    Serial.begin(9600); 
    delay(100); 
} 

void loop() { 
    while (!Serial.available()) {} // wait for data to arrive 
    // serial read section 
    while (Serial.available()) { 
    if(Serial.available()>0) { 
     msg1 = Serial.readString(); 
     if(counter<1) { 
     SendMessage(); 
     counter++; 
     } 
    } 
    delay(500); 
    } 
    if (mySerial.available()>0) Serial.write(mySerial.read()); 
} 

void SendMessage() { 
    mySerial.println("AT+CMGF=1"); 
    //Sets the GSM Module in Text Mode 
    delay(1000); 
    // Delay of 1000 milli seconds or 1 second 
    mySerial.println(msg1); 
    // Replace x with mobile number 
    delay(1000); 
    mySerial.println("Hello"); 
    // The SMS text you want to send 
    delay(100); 
    mySerial.println((char)26); 
    // ASCII code of CTRL+Z 
    delay(1000); 
} 

mySerial.println("AT+CMGS=\"+9232xxxxxxxx\"\r"); 
mySerial.println(numb); 
mySerial.println(msg1); 

Si j'utilise la première ligne, je reçois le message sur mon numéro. De même, pour l'option 2, quand je passe la chaîne engb que j'ai déclarée dans le code Arduino ci-dessus, je reçois le message.

Toutefois, pour l'option 3, lorsque je lis la chaîne mentionnée ci-dessus à partir du fichier texte stocké sur le PC, je n'obtiens pas de message. Quelqu'un peut-il me guider s'il vous plaît ce que je fais mal ici?

+0

Votre fichier que vous lisez, a probablement '\ n' et vous besoin de '\ r' –

+0

Salut. Merci pour votre réponse rapide. Je soupçonne que c'est le cas aussi. Pouvez-vous s'il vous plaît guider comment je peux utiliser le retour chariot au lieu de la nouvelle ligne –

Répondre

0

Si le contenu du fichier est AT+CMGS=\"+9232xxxxxxxx\"\r lors de la publication, supprimez l'échappement du fichier. Cela devrait être le contenu du fichier:

AT+CMGS="+9232xxxxxxxx" 

Les citations seront lues correctement sans tentative d'échappement. Puis, quand vous lisez le contenu, si vous avez besoin \r ajouter juste (en supposant qu'il n'y a pas de caractère de nouvelle ligne à la fin de la ligne):

line1 = text_file.readline() + '\r' 
+0

Merci beaucoup! Ça marche maintenant. –

+0

Excellent :) serait génial si vous acceptez la réponse. – Yigal

+0

Terminé. Désolé, je suis nouveau sur le site. –