Mega2560串口通信实现

网上很多资料包括ardunio的官网的例子都是使用softwareserial类定义串口并使用available接口等待数据的到来,但实际我在使用过程中发现是不好使的,我用杜邦线把18,19引脚连接到一起,这样就可以实现自发数据自接收,根据官网代码如下:

SoftwareSerial mySerial(19, 18); // RX, TX

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
  mySerial.println("Hello, world?");
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}

mySerial.available()的这个条件语句是永远都进不去的。换了其他引脚也不好使。
但是换种写法就没有问题了,把mySerial换成Serial1就可以了。

void setup()  
{
    Serial.begin(9600);
    Serial1.begin(9600);
    Serial1.println("Serial1.available");
}
 
void loop() // run over and over
{
  //delay(1000);
  if (Serial1.available()) {
    Serial.write(Serial1.read());  
  //Serial.println("111");
  }
 
  // 从串口0转发到串口1(Arduino to WRTnode):
  if (Serial.available()) {
    Serial1.write(Serial.read());
  //Serial.println("222");
  }
}

在setup中的println的数据在loop的Serial1.available()条件语句中是为true的,有个问题就是read接口是一个字符一个字符返回。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值