1

我有一段非常简单的 Arduino Uno 代码。使用 SoftwareSerial 库。

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

Excusme 我住在墨西哥 mbnava@gmail.com 与我联系。感觉自由

于 2016-11-20T23:25:56.797 回答