2016-11-04 5 views
0

У меня есть очень простой фрагмент кода для Arduino Uno. Использование SoftwareSerial lib.Arduino SoftwareSerial library не работает

#include <SoftwareSerial.h> 
#define rxPin 6 
#define txPin 7 
SoftwareSerial mySerial(rxPin, txPin); 

void setup() { 
    pinMode(rxPin, INPUT); 
    pinMode(txPin, OUTPUT); 
    Serial.begin(9600); 
    mySerial.begin(2400); 
    Serial.println("Serial init");   
} 

void loop() { 
    delay(2000); 
    Serial.println("Serial link started"); 

    mySerial.write(0x15); 

    if(mySerial.available()){ 
    int incomingByte = mySerial.read(); 
    Serial.print(incomingByte); 
    Serial.print(" is here"); 
    } 
} 

rxPin и txPin связаны непосредственно друг с другом. Arduino также подключен к компьютеру через USB. Я не отвечаю за цикл mySerial.available(), mySerial.read() возвращает -1. Кто-нибудь знает, где может быть проблема? SoftwareSerial не работает для меня.

ответ

1

Метод SoftwareSerial::write() отключает прерывания во время записи, at this line. Поэтому, когда вы пишете свой байт, arduino глух к входящим битам (за исключением, может быть, для первого восходящего фронта, это может быть отложено до тех пор, пока прерывания не будут включены снова - я на самом деле не помню).

0

Я думаю, что MySerial (6-7) указывает на модем (Sim900 или Sim300) и серийный (0-1) ARDUINO ONE указывает на порт USB на ПК.

Настройка модема с перемычками, так что вы можете прослушивать порты 6-7

Попробуйте это:

IssueCommand ("AT"); // or mySerial.println("AT+V") 
    ReadSerial(); 

Void readSerial() { 
    While (mySerial.available()) { 
    Serial.write (mySerial.read()); 
    Delay (10); 
    } 
} 

Excusme Я Живу в Мехико [email protected], чтобы связаться со мной. Не стесняйтесь

 Смежные вопросы

  • Нет связанных вопросов^_^