私は Arduino XBeeシールドと Sparkfun XBee USB エクスプローラーを持っています。Arduio 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 エクスプローラーのレシーバー コード:
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 の 1 つ: Coordinator AT モード -- USB Sparkfun Explorer に接続
- 別の XBee は: ルーター AT モード -- Arduino シールドに接続
Tomlogic がスタック オーバーフローの質問XBee 双方向通信 (送信側と受信側) で同時に私の質問に答えたように。