我有一个Arduino XBee shield,我有一个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资源管理器的接收器代码:
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屏蔽
由于tomlogic在Stack Overflow问题XBee two-way communication (sender and receiver) at the same time回答了我的问题 .
2 回答
我搞定了 . 问题来自我的void loop()方法 . mySerial应该是这样的
你的XBee屏蔽使用Arduino上的引脚0和1 . 不需要Softwareserial,只需使用:
要发送温度,请在功能
loop
中使用:使用Arduino IDE中的内置终端测试Arduino代码,看看端口是否实际可以接收和发送(首先删除XBee屏蔽) . 在此之后,测试XBee通信 .