Байты, отправленные через SerialPort, не совпадают с полученными в Netduino через Bluetooth

Я работаю над проектом и использую этот веб-сайт в качестве ссылки, чтобы получить Netduino для связи с моим ПК.

Я приобрел этот приемопередатчик Bluetooth. Кажется, это обновленная версия той, что использовалась в исходном посте. 1.06 против 1.04 на его сайте.

Я установил TXD Bluetooth на 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 для приемопередатчика Bluetooth, и это правильные настройки. Я перепутал выводы TXD и RXD, так как оригинальный Arduino ожидает, что TXD будет выводом 1, а RXD — выводом 0, но это приводит к тому, что данные не принимаются на Netduino.


person Marcel Morillo    schedule 25.10.2014    source источник


Ответы (1)


Итак... Я наконец-то заработал. Никаких изменений в коде. Ответ казался таким простым, но никто никогда не удосужился объяснить его; Мне просто нужно было поменять местами контакты TXD и RXD.

COM1 для Netduino означает, что PIN0 — это вывод RX, а PIN1 — это вывод TX. Он ожидает получить данные на PIN0 и отправить их на PIN1. Компонент Bluetooth будет отправлять данные по своему TX, а Netduino должен получать их по RX; Bluetooth TX (отправка данных) должен быть подключен к Netduino RX (получение данных), а Bluetooth RX (получение данных) должен быть подключен к выводу TX Netduino (отправка данных).

person Marcel Morillo    schedule 07.11.2014