簡體   English   中英

Netduino 與 PC 通信

[英]Netduino communication with PC

我是 netduino 的新手,所以我有一個簡單的問題(或者,應該很簡單)。 我想要做的是通過 rs232 從我的 winform 應用程序向我的 netduino plus 2 發送一個整數(字符串),然后,我的 netduino 應該讀取該整數並多次閃爍板載 LED。

我已經閱讀了有關該主題的在線教程,並找到了一些示例,可以在我的 PC 和 Netduino 之間提供通信。

是的,我確實收到了回音。 即使我斷開我的 netduino 並將它藏在我的口袋里,我也會收到回聲 :)。 我對那個小工具的理解到此為止。

我如何通過 rs232 cabel 向我的 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();
    }

}
}

我不確定你實際上遇到了什么問題? 您的代碼乍一看是正確的。

我會先嘗試檢查您的硬件,那么 USB 電纜是否在您電腦的設備管理器中實際設置為 COM 1? 電纜是否連接到 netduino 中的正確端口?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM