1

我正在做一个项目,我正在使用这个网站作为参考,让我的 Netduino 与我的 PC 进行通信。

我已经购买了这款蓝牙收发器。它似乎是原始帖子使用的版本的更新版本。1.06 vs 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 上没有接收到数据。

4

1 回答 1

1

所以....我终于让它工作了。代码没有变化。答案似乎很简单,但没有人费心去解释它;我只需要切换 TXD 和 RXD 引脚。

Netduino 的 COM1 表示 PIN0 是 RX 引脚,PIN1 是 TX 引脚。它期望在 PIN0 上接收数据并在 PIN1 上发送。蓝牙组件将在其 TX 上发送数据,而 Netduino 应在 RX 上接收数据;蓝牙 TX(发送数据)应连接到 Netduino 的 RX(接收数据),蓝牙的 RX(接收数据)应连接到 Netduino 的 TX 引脚(发送数据)。

于 2014-11-07T03:43:33.370 回答