簡體   English   中英

如何從Arduino Xbee發送數據並從C#接收數據

[英]How to send data from Arduino Xbee and receive it from C#

我有一個Arduino XBee 防護板 ,還有一個Sparkfun XBee USB資源管理器。 我想發送來自Ardunio XBee的數據(溫度傳感器)並在我的C#程序中接收它。

現在,假設我要向C#程序發送45、100。

我沒有收到來自XBee防護板的任何數據。 我在代碼中缺少任何內容嗎?

以下代碼是Arduino XBee屏蔽的發送方:

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 Explorer的接收器代碼:

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是:Coordinator AT模式-連接到USB Sparkfun Explorer
  • 另一個XBee是:路由器AT模式-連接到Arduino屏蔽板

當tomlogic同時在Stack Overflow問題XBee雙向通信(發送方和接收方)中回答了我的問題

我知道了 問題出在我的void loop()方法上。 mySerial應該像

mySerial.println(temperature);
  • 但是,您必須檢查mySerial Rx,Tx引腳是否正確

您的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通信。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM