Arduino:如何从RX引脚获取数据

时间:2016-10-10 10:15:13

标签: arduino serial-port rxtx

我正在尝试通过串行连接将U-blox C94-M8P开发板连接到LinkIt One。我找到了几种方法,但它们似乎都没有用。虽然我不得不说,我曾经设法将两块电路板连接在一起并且工作正常,这意味着M8P将GPS数据发送到我的LinkIt ......但是因为天线在电路板连接时没有工作,我再次将它断开连接忘了我是怎么做到的......

目前,我将RX,TX,GND和3.3V连接到J4 Connector (第21页),LinkIt上TX和RX的LED发光,所以我认为应该有连接和可能性接收数据。虽然当我尝试建立Serial1连接时,它总是失败。 这是我的LinkIt代码,输出信号的可能方式有很多变化......它们都不起作用:

#include <UARTClass.h>
#include <string.h>


void setup(){
  Serial.begin(9600);
  Serial.println("Serial begins");

  Serial1.begin(9600);
  //Serial1.end();
  pinMode(13, OUTPUT);
  pinMode(0,INPUT);

  Serial.write(analogRead(0));

  if(Serial1.available()>0){
    Serial.println(Serial1.available());
    digitalWrite(13, HIGH);
    delay(1000);
    digitalWrite(13, LOW);
    delay(1000);
    Serial1.write("Hello World");
  }
  else{
    Serial.println("No Serial1 available");
    digitalWrite(13, HIGH);
  }
}

void loop(){
  if(Serial1.available()>0){
    Serial1.begin(9600);    
    //Serial.write(Serial1.read());
    String msg=Serial1.readString();
    //char* token=strtok(msg, '$');
    //Serial.println(msg);
    Serial.println(analogRead(0));
    delay(5000);
  }
  else{
    Serial.println("No Serial1 available");
    digitalWrite(13, HIGH);
    //for(int i = 0; i<7;i++){
    //Serial.print(analogRead(0));
    //}
    Serial.println(analogRead(0));
   // delay(5000);
  }
}

我的输出如下:

832
No Serial1 available
832
No Serial1 available
832
No Serial1 available
832
No Serial1 available
832
No Serial1 available
832
No Serial1 available
832
No Serial1 available
832
No Serial1 available
832
No Serial1 available

现在程序进入最后else。我还尝试使用C94上的J8连接器连接LinkIt,其中引脚4用于GND,引脚9用于RX(连接到LinkIt上的TX)和引脚10用于TX。使用该设置,只有RX灯发光,TX灯不亮。我尝试的另一个设置就像之前的设置,但是引脚7作为TX,引脚8作为RX,但具有相同的结果。

有没有人知道如何解决这个问题? 我想也许当灯光发光时,可以在没有串行连接的情况下获取数据?我真的不知道电路板正在做什么,以及我必须改变它以使它成为现实工作或我上次做的不同。由于C94非常复杂,可以发送或不发送所有类型的消息,因此我很可能需要更改C94配置中的内容。

如果有人知道帮助我解决这个问题,我很高兴听到。我知道U-blox论坛,但我希望能在这里吸引更多人。

1 个答案:

答案 0 :(得分:1)

您是否检查过UBX-CFG-MSG设置?

UBX,RTCM3或NMEA应适当用于此目的。