2017-08-20 17 views
1

私のPCに保存されているテキストファイルから文字列を読み取ろうとしています。私のGSMモジュールは、私は、テキストファイルに含まれている次の行読み取るためのpythonを使用していますSIM900Aです:+ CMGS ATファイルからのテキストの読み取りとArduinoからGSMモジュールへの送信

を= \「+ 9232xxxxxxxx \」\ rを

この行は、ATコマンドと電話番号が含まれています私はSMSを送ろうとしています。次のように

ザ・Pythonコードは、次のように

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() 

Arduinoのコードは次のとおりです。

#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); 

私は最初の行を使用している場合は、私は私の番号にメッセージが表示されます。同様に、オプション2の場合、上のArduinoコードで宣言した文字列刻みを渡すと、メッセージが表示されます。

しかし、オプション3の場合、PCに保存されているテキストファイルから前述の文字列を読み取ったときにメッセージは表示されません。誰でも私がここで間違っていることを教えてもらえますか?

+0

あなたが読んであなたのファイルは、おそらく '\のN '、あなたを持っています'\ r'が必要です –

+0

こんにちは。迅速なレスポンスをありがとう。私もそうだと思う。改行の代わりにキャリッジリターンを使う方法を教えていただけますか –

答えて

0

投稿したファイルの内容がAT+CMGS=\"+9232xxxxxxxx\"\rの場合は、ファイルからエスケープを削除してください。これは、ファイルの内容である必要があります。

AT+CMGS="+9232xxxxxxxx" 

引用符は、エスケープを試みることなく正しく読み込まれます。あなたが内容を読み取るときに、あなたは\rはそれを追加する必要がある場合(行の末尾に改行文字がありませんと仮定した場合):

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

ありがとうございました!それは今働いている。 –

+0

優秀:)あなたが答えを受け入れると素晴らしいでしょう。 – Yigal

+0

完了。申し訳ありません、私はサイトを初めて利用しています。 –

関連する問題