1

Arduino Uno 用の非常に単純なコードがあります。SoftwareSerial lib を使用します。

#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 経由で PC に接続されています。mySerial.available() ループから応答がありません。mySerial.read() は -1 を返します。誰が知っていますか、どこに問題があるのでしょうか? SoftwareSerial が機能しません。

4

2 に答える 2

1

メソッドは、この行でSoftwareSerial::write()、書き込み中の割り込みを無効にします。したがって、バイトを書き出すとき、arduinoは着信ビットに耳を傾けません(最初の立ち上がりエッジを除いて、割り込みが再び有効になるまで遅延する可能性があります-実際には覚えていません)。

于 2016-11-04T17:48:04.263 に答える
1

MySerial (6-7) はモデム (Sim900 または Sim300) を指し、ARDUINO ONE のシリアル (0-1) は PC の USB ポートを指していると思います。

ポート 6 ~ 7 をリッスンできるように、ジャンパを使用してモデムを構成します。

これを試して:

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

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

すみません、私はメキシコに住んでいます mbnava@gmail.com に連絡してください。気軽に

于 2016-11-20T23:25:56.797 に答える