简体   繁体   English

C#从Arduino接收数据

[英]C# Received data from Arduino

I'm building a weather station and I have a little problem. 我正在建立一个气象站,但有一个小问题。 How do the received data to run at a textbox or rich box? 接收到的数据如何在文本框或富文本框中运行? The application connects Arduino, but does not operate to read data. 该应用程序连接了Arduino,但无法读取数据。

Thank you, 谢谢,

[enter image description here][1] [在此处输入图片描述] [1]

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        string InputData = String.Empty;
        delegate void SetTextCallback(string text);


        public Form1()
        {
            InitializeComponent();
            string[] ports = SerialPort.GetPortNames();


            Console.WriteLine("The following serial ports were found:");

            // Display each port name to the console.
            foreach (string port in ports)
            {
                comboBox1.Items.Add(port);
            }
         }   

          public void guzikpolacz_Click(object sender, EventArgs e)
        {
            serialPort1.PortName = comboBox1.Text;         // Ustawiamy numer Portu COM
                    // Ustawiamy wartość baudrate portu            

            //Inne ustawienia zdefiniowane na stałe
            serialPort1.Parity = Parity.None;   // bez parzystości
            serialPort1.StopBits = StopBits.One;  // jeden bit stopu
            serialPort1.DataBits = 8;    // osiem bitów danych   



            serialPort1.Open();

            polestatusu.Text = "Port Otwarty";
            polestatusu = SerialPort;
            panel1.BackColor = Color.Lime;
            guzikpolacz.Enabled = false;          //blokujemy przycisk Połącz
            guzikrozlacz.Enabled = true;   
    }

        private void guzikrozlacz_Click(object sender, EventArgs e)
        {
            serialPort1.Close();             //Zamykamy SerialPort

            panel1.BackColor = Color.Red;
            polestatusu.Text = "Port Zamknięty";
            guzikpolacz.Enabled = true;   //aktywujemy przycisk Połącz
            guzikrozlacz.Enabled = false;  // deaktywujemy przycisk Rozłącz
        }

        private delegate void UpdateUiTextDelegate(string text);  
    }
}

Thank you very much, but unfortunately it did not work :( The application connects to the serialport but nothing happens. The connection to the Arduino program Putty works. 非常感谢,但不幸的是,它没有用:(应用程序连接到串行端口,但是什么也没发生。与Arduino程序Putty的连接有效。

namespace WindowsFormsApplication1
{

 public partial class Form1 : Form
{
    string InputData = String.Empty;
    delegate void SetTextCallback(string text);


    public Form1()
    {
        InitializeComponent();
        string[] ports = SerialPort.GetPortNames();


        Console.WriteLine("The following serial ports were found:");

        // Display each port name to the console.
        foreach (string port in ports)
        {
            comboBox1.Items.Add(port);
        }
    ;}



      public void guzikpolacz_Click(object sender, EventArgs e)
    {
        serialPort1.PortName = comboBox1.Text;         // Ustawiamy numer Portu COM
                // Ustawiamy wartość baudrate portu            

        //Inne ustawienia zdefiniowane na stałe
        serialPort1.Parity = Parity.None;   // bez parzystości
        serialPort1.StopBits = StopBits.One;  // jeden bit stopu
        serialPort1.DataBits = 8;    // osiem bitów danych   



        serialPort1.Open();

        polestatusu.Text = "Port Otwarty";

        panel1.BackColor = Color.Lime;
        guzikpolacz.Enabled = false;          //blokujemy przycisk Połącz
        guzikrozlacz.Enabled = true;   
}

    private void guzikrozlacz_Click(object sender, EventArgs e)
    {
        serialPort1.Close();             //Zamykamy SerialPort

        panel1.BackColor = Color.Red;
        polestatusu.Text = "Port Zamknięty";
        guzikpolacz.Enabled = true;   //aktywujemy przycisk Połącz
        guzikrozlacz.Enabled = false;  // deaktywujemy przycisk Rozłącz
    }

    private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        if (this.InvokeRequired)
        {
            this.Invoke(new Action(() => serialPort1_DataReceived(sender, e)));
        }
        else
        {
            var sp = sender as SerialPort;
            //this assumes you want the data from the arduino as text.  
            // you may need to decode it here.
            textBox1.Text = sp.ReadExisting();
        }
    }



 private delegate void UpdateUiTextDelegate(string text);



 public Delegate myDelegate { get; set; }
    }
}

enter image description here 在此处输入图片说明

try adding this event handler to your serial port 尝试将此事件处理程序添加到您的串行端口

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    if (this.InvokeRequired)
    {
        this.Invoke(new Action(() => serialPort1_DataReceived(sender, e)));
    }
    else
    {
        var sp = sender as SerialPort;
        //this assumes you want the data from the arduino as text.  
        // you may need to decode it here.
        polestatusu.Text = sp.ReadExisting();
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM