请问Arduino uno如何读取串口数据, 跪求!!!!!

diandian123 发布于 2013/11/16 12:01
阅读 9K+
收藏 0

我写了一个关于arduino uno的串口程序,但是实际上我的arduino是一直持续的发送一个数字就是1,但是我的textbox只能收到一个,这是为什么,以下是我的code

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;




namespace serialDemo
{
    public partial class Form1 : Form
    {


        bool display;
        public Form1()
        {
            InitializeComponent();
            
        }
        private void COMselector_SelectedIndexChanged(object sender, EventArgs e)
        {
        }
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            textboxReceive.Clear();
        }
        private void btnLoad_Click(object sender, EventArgs e)
        {
        string COM = (COMselector.SelectedItem).ToString();
         string BR = (BRselector.SelectedItem).ToString();
         int B = int.Parse(BR);
            if (COM == "COM3" && B==9600)
            {
                serialPort1.Close();
                serialPort1.PortName = COM;
                serialPort1.BaudRate = B;
                serialPort1.Parity = Parity.None;
                serialPort1.DataBits = 8;
                serialPort1.StopBits = StopBits.One;
                serialPort1.Open();
                serialPort1.DataReceived += serialPort1_DataReceived;


                display =  true;
               if (serialPort1.IsOpen)
                    LblStatus.Text = "Serial Port is Ready!";


            }
            else
            {
                LblStatus.Text = "Serial Port is NOT initialized succesffuly!";
                serialPort1.Close();
                display = false;
            }
          }


        private void btnReceive_Click(object sender, EventArgs e)
        {
                           if (display)
                {   
                    string s;
                    s = serialPort1.ReadLine();
                    textboxReceive.AppendText(s);
                    textboxReceive.AppendText("\n");
                                   }
                else
                {
                    textboxReceive.Clear();
                    textboxReceive.AppendText("Can't receive data due to wrong COM is selected");
                }
            
        }


        private void StartBtn_Click(object sender, EventArgs e)
        {
               MessageBox.Show("You can start to control Quadcopter","Welcome NP Mssion Planner",MessageBoxButtons.OK,MessageBoxIcon.Information);
        }


        private void rectangleShape2_Click(object sender, EventArgs e)
        {


        }


        private void textboxReceive_TextChanged(object sender, EventArgs e)
        {


        }


        private void PIDChart_Click(object sender, EventArgs e)
        {
           
        }


        private void loadbtn_Click(object sender, EventArgs e)
        {
            string s;
            {
                
                    int count = 0;
                    s = serialPort1.ReadLine();
                    Console.WriteLine();
                    Console.Read();
                    this.PIDChart.Series["Kp"].Points.AddXY(count, s);
                    count = count + 1;        
        }
        }


        private void stopbtn_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
                loadbtn.Enabled = true;
                stopbtn.Enabled = false;
                textboxReceive.ReadOnly = true;
            }
        }


        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            
        }    
}   


 }
}



加载中
0
从今以后
从今以后

我觉得 你的C#程序 应该 弄一个线程 去 监听 有没有数据 发过来。。

不然的话就接受一个 1 结束了。

diandian123
diandian123
@从今以后 好的,谢谢你啦,以后有问题就还是请你帮我看看哈,谢谢你,20
从今以后
从今以后
回复 @diandian123 : C# 我也是初学啊,不过,google 一下,还是蛮多教程的。
diandian123
diandian123
不好意思,我可以问一个问题么? 因为其实我也是刚开始学C#,所以请问可以告诉我具体一点的关于应该应用一个什么样的线程如何监听呢,或者请问一下,哪里可以学到关于这种方面的知识么? 谢谢你回答我的问题啊!!!谢谢
0
diandian123
diandian123

请问哪位好心人可以帮我解决一下这个问题吗, 感激不尽啊!!!!!!!


0
diandian123
diandian123

各位大神可以帮帮我吗? 因为我在做school project关于无人机方面的,所以用到了无线电串口通讯,但是我现在拿到的数据不可以持续更新,请问是我的arduino uno的问题吗? 


0
diandian123
diandian123

请问有人可以帮我看一下我的程序大概是哪里有问题从而导致只可以收到一次数据么?小女必感激不尽啊,关于这个问题我真的真的很恳求有人看得懂的话帮帮我吧,因为project明天就是最后一天了,在解决不了,恐怕我就pass不了了,拜托拜托!!!!


0
idoz
idoz
arduino uno 不是有个串口查看器么
0
diandian123
diandian123

引用来自“idoz”的答案

arduino uno 不是有个串口查看器么
谢谢你,真的很感谢你帮我看看了一下我的问题,谢谢,我知道那个串口查看器,但是问题是我其实编程了一个GUI(graphical user interface)对不起啊,就是希望你可以帮我看看,然后那个界面我用的是visual studio 2012做的,然后我用arduino编了一个程序放进arduino uno的控制板里面,那个程序就是持续让arduino uno发送一个1,并且我在arduino的串口查看器里面是可以持续接受那个1的,但是我的GUI里面的相应接受数据的textbox里面,却只能显示一个1
0
diandian123
diandian123

拜托拜托,各位如果有懂这方面的话,拜托真的帮我看看一下我的程序有什么问题,还有,关于这个问题,我看到其实貌似是有一个父程序,和子程序的问题,还有存在调用的问题,其实我的问题就是我想在我自己设计的界面的textbox里面持续的读取到最新的接受数据,拜托大家帮帮忙啊,拜托了


0
diandian123
diandian123

引用来自“idoz”的答案

arduino uno 不是有个串口查看器么
谢谢你,真的很感谢你帮我看看了一下我的问题,谢谢,我知道那个串口查看器,但是问题是我其实编程了一个GUI(graphical user interface)对不起啊,就是希望你可以帮我看看,然后那个界面我用的是visual studio 2012做的,然后我用arduino编了一个程序放进arduino uno的控制板里面,那个程序就是持续让arduino uno发送一个1,并且我在arduino的串口查看器里面是可以持续接受那个1的,但是我的GUI里面的相应接受数据的textbox里面,却只能显示一个1
0
diandian123
diandian123

还有,这就是小女设计的脑残级别的GUI,拜托大家有懂的帮帮忙吧,拜托了!!!!感激不尽啊



0
idoz
idoz
两年前有做过串口开发,使用的好像是C# 中的一个控件,加一个Background Worker 来不断刷新数据, 不知道您是怎么实现的。您能收到一个1 表明uno 和您的主机连接畅通,请检查您刷新数据的代码。
diandian123
diandian123
好的好的,谢谢您的回答啊,真的很感谢,这些建议真的对我来说都很重要,很好的,再次感谢您对我的问题的分析和建议哈,真的很谢谢您,祝福您啊
返回顶部
顶部