【问题标题】:How to send data from Arduino Xbee and receive it from C#如何从 Arduino Xbee 发送数据并从 C# 接收数据
【发布时间】:2013-09-02 04:37:12
【问题描述】:

我有一个 Arduino XBee shield 和一个 Sparkfun XBee USB 浏览器。我想发送来自 Ardunio XBee 的数据(温度传感器)并在我的 C# 程序中接收。

现在,假设我想将 45、100 发送到我的 C# 程序。

我没有收到来自 XBee shield 的任何数据。我是否缺少代码中的任何内容?

以下代码是来自 Arduino XBee shield 的发送者:

SoftwareSerial mySerial(4,5);
void setup()
{
    mySerial.begin(9600);
}


void loop()
{
    if (mySerial.available() > 0)
    {
        mySerial.write(45);
        mySerial.write(',');
        mySerial.write(100);
        mySerial.write('\n');
    }
}

C# 中 USB XBee 浏览器的接收器代码:

SerialPort port = new SerialPort();

public Form1()
{
    try
        {
            port.PortName = "COM8";
            port.BaudRate = 9600;
            port.DataBits = 8;
            port.Parity = Parity.None;
            port.StopBits = StopBits.One;
            port.Open();
            Console.WriteLine("Opened");
        }
        catch(Exception ex)
        {
            Console.WriteLine("Sorry! " + ex);
        }

        // Handler for receiving data
        port.DataReceived += serialPort1_DataReceived;
    }

    private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    {
        if (port.IsOpen == true)
        {
            string RxString = port.ReadLine();
            Console.WriteLine(RxString);
        }
    }

XBee 配置:

  • 一个 XBee 是:协调器 AT 模式 -- 连接到 USB Sparkfun Explorer
  • 另一个 XBee 是:路由器 AT 模式 -- 连接到 Arduino shield

Tomlogic 在 Stack Overflow 问题中回答了我的问题 XBee two-way communication (sender and receiver) at the same time

【问题讨论】:

  • 注意:我试过 mySerial.print() 方法,但还是收不到。
  • 是否可以从您的测试设置中删除 XBee 模块,而只使用有线串行连接来验证您的串行代码是否正常工作?您还可以将一个(或两个)XBee 模块连接到 PC 上的 X-CTU,并验证它们是否已加入同一网络并来回传递数据。尝试找出问题的可能原因,以便您可以集中精力进行故障排除。

标签: c# arduino port xbee


【解决方案1】:

我让它工作了。问题出在我的 void loop() 方法上。 mySerial 应该是这样的

mySerial.println(temperature);
  • 但是,您必须检查 mySerial Rx、Tx 引脚是否正确

【讨论】:

    【解决方案2】:

    您的 XBee 防护罩使用 Arduino 上的引脚 0 和 1。不需要软件序列号,只需使用:

    Serial.begin(9600); // In void setup() routine
    

    要发送温度,请在函数loop中使用:

    Serial.print(temperature); // Need a variable 'temperature' of course...
    

    在 Arduino IDE 中使用内置终端测试 Arduino 代码,看看端口是否真的可以接收和发送(先移除 XBee 屏蔽)。完成后,测试 XBee 通信。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-20
      • 1970-01-01
      • 2014-05-10
      • 2015-05-25
      • 1970-01-01
      相关资源
      最近更新 更多