我正在开发一个项目,我使用this website作为参考,让我的Netduino与我的PC进行通信。
我已经购买了this Bluetooth个收发器。它似乎是原始帖子使用的版本的更新版本。在他的网站上1.06对1.04。
我将蓝牙的TXD设置为Pin0,将RXD设置为Pin1,将VCC设置为5V。
这是我在Netduino上的代码:
static SerialPort Bluetooth;
public static void Main()
{
Bluetooth = new SerialPort(SerialPorts.COM1, 9600, Parity.None, 8, StopBits.One);
Bluetooth.DataReceived += new SerialDataReceivedEventHandler(Bluetooth_DataReceived);
Bluetooth.Open();
Thread.Sleep(Timeout.Infinite);
}
static void Bluetooth_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] bytes = new byte[1];
while(Bluetooth.BytesToRead > 0)
{
Bluetooth.Read(bytes, 0, bytes.Length);
Debug.Print(bytes[0].ToString());
}
}
这是我笔记本电脑上的代码:(这是一个WPF应用程序)
SerialPort serialBT;
private void Connect()
{
// COM7 is the outgoing port that corresponds to the Bluetooth transceiver
serialBT = new SerialPort("COM7", 9600, Parity.None, 8, StopBits.One);
serialBT.Open();
serialBT.Write(new byte[] { 23, 24, 25, 26 }, 0, 4);
Debug.Print("Values sent");
}
在Netduino上,当我发送23,24,25和26的字节数组(仅用于测试目的)时,DataReceived事件将触发。但是它在调试窗口中接收并打印出的值是6,0,0和248,而不是它应该是23,24,25和26。
我发送的其他价值也同样神秘地转变为完全不同的价值。
我已经检查了蓝牙收发器的正确COM设置三倍,这些都是正确的设置。我已经翻转了TXD和RXD引脚,因为最初的Arduino期望TXD为Pin1而RXD为Pin0,但这不会导致Netduino上没有数据接收。
答案 0 :(得分:1)
所以......我终于明白了。代码没有变化。答案似乎很简单,但没有人费心去解释它;我只需要切换TXD和RXD引脚。
Netduino的COM1表示PIN0是RX引脚,PIN1是TX引脚。它希望在PIN0上接收数据并在PIN1上发送。蓝牙组件将在其TX上发送数据,Netduino应在RX上接收数据;蓝牙TX(发送数据)应连接到Netduino的RX(接收数据),蓝牙的RX(接收数据)应连接到Netduino的TX引脚(发送数据)。