1

我是 netduino 的新手,所以我有一个简单的问题(或者,应该很简单)。我想要做的是通过 rs232 从我的 winform 应用程序向我的 netduino plus 2 发送一个整数(字符串),然后,我的 netduino 应该读取该整数并闪烁板载 LED 多次。

我已经阅读了有关该主题的在线教程,并找到了一些可以在我的 PC 和 Netduino 之间提供通信的示例。

是的,我确实从中得到了回声。即使我断开我的 netduino 并将它藏在我的口袋里,我也会收到回音 :)。我对那个小工具的理解就这么多了。

如何通过 rs232 电缆向我的 Netduino 发送信息,他可以阅读、理解并采取相应措施?

网上直接有一段代码:

对于 NETDUINO:

using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;
using System.IO.Ports;

namespace NetduinoApplication1
{
public class Program
{
    static SerialPort serial;

    public static void Main()
    {
        // initialize the serial port for COM1 (using D0 & D1)
        serial = new SerialPort(SerialPorts.COM1, 9600, Parity.None, 8, StopBits.One);
        // open the serial-port, so we can send & receive data
        serial.Open();
        // add an event-handler for handling incoming data
        serial.DataReceived += new SerialDataReceivedEventHandler(serial_DataReceived);
        OutputPort led = new OutputPort(Pins.ONBOARD_LED, false);
        for (int i = 0; i < 3; i++)
        {
            led.Write(true); // turn on the LED
            Thread.Sleep(250); // sleep for 250ms
            led.Write(false); // turn off the LED
            Thread.Sleep(250); // sleep for 250ms

        }

        // wait forever...
        Thread.Sleep(Timeout.Infinite);
    }

    static void serial_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {

        // create a single byte array
        byte[] bytes = new byte[1];

        // as long as there is data waiting to be read
        while (serial.BytesToRead > 0)
        {
            // read a single byte
            serial.Read(bytes, 0, bytes.Length);
            // send the same byte back

            serial.Write(bytes, 0, bytes.Length);
            OutputPort led1 = new OutputPort(Pins.ONBOARD_LED, false);
            led1.Write(true); // turn on the LED
            Thread.Sleep(250); // sleep for 250ms
            led1.Write(false); // turn off the LED
            Thread.Sleep(250); // sleep for 250ms

        }

    }

}
}

我的控制台的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;

namespace ConsoleRSS
{
class Program
{
    static SerialPort serial;
    static void Main(string[] args)
    {
        // provide some usage information
        System.Console.WriteLine("enter some text and hit ENTER.");
        System.Console.WriteLine("enter 'x' and hit ENTER to exit.");
        System.Console.WriteLine();

        // initialize the serial port for COM3 (could be other port, depends on system)
        serial = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
        // open the serial-port, so we can send & receive data
        serial.Open();
        // add an event-handler for handling incoming data
        serial.DataReceived += new SerialDataReceivedEventHandler(serial_DataReceived);

        // this will hold each line entered
        string line = string.Empty;

        // as long as an x is not entered
        while (line.ToLowerInvariant() != "x")
        {
            // read a single line from the console
            line = System.Console.ReadLine();

            // convert the line to bytes
            byte[] utf8Bytes = System.Text.Encoding.UTF8.GetBytes(line);

            // send the bytes over the serial-port
            serial.Write(utf8Bytes, 0, utf8Bytes.Length);
        }
    }
    static void serial_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        // wait a little for the buffer to fill
        System.Threading.Thread.Sleep(100);

        // create an array for the incoming bytes
        byte[] bytes = new byte[serial.BytesToRead];
        // read the bytes
        serial.Read(bytes, 0, bytes.Length);
        // convert the bytes into a string
        string line = System.Text.Encoding.UTF8.GetString(bytes);

        // write the received bytes, as a string, to the console
        System.Console.WriteLine("echo: " + line);
        System.Console.WriteLine();
    }

}
}
4

1 回答 1

0

我不确定您实际上遇到了什么问题?乍一看,您的代码看起来是正确的。

我会先尝试检查您的硬件,那么您的电脑上的设备管理器中的 USB 电缆实际上是否设置为 COM 1?电缆是否连接到 netduino 中的正确端口?

于 2013-08-06T08:38:25.150 回答