【发布时间】: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,并验证它们是否已加入同一网络并来回传递数据。尝试找出问题的可能原因,以便您可以集中精力进行故障排除。