首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Netduino与PC的通信

Netduino与PC的通信
EN

Stack Overflow用户
提问于 2013-05-30 01:08:07
回答 1查看 5.8K关注 0票数 1

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

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

是的,我确实收到了回声。即使我断开netduino并将其隐藏在口袋中,也会收到回声:)。这就是我对这个小玩意儿的理解。

我如何通过rs232 cabel向我的Netduino发送他可以阅读、理解并采取相应行动的信息?

有一段代码直接从网上传过来的:

对于NETDUINO:

代码语言:javascript
复制
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

        }

    }

}
}

和我的控制台的代码:

代码语言:javascript
复制
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();
    }

}
}
EN

回答 1

Stack Overflow用户

发布于 2013-08-06 16:38:25

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

我会先检查一下你的硬件,那么你电脑上的设备管理器里的usb线缆是不是真的设为COM 1?电缆是否连接到netduino中的正确端口?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16819999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档