从Arduino发送和接收数据

时间:2016-11-09 16:08:29

标签: c# arduino

所以我正在尝试开发一个控制台应用程序,它能够通过串口自动发送和接收来自Arduino的数据。基本上,这个应用程序将作为任务调度程序执行。

每天,在某个时间,应用程序执行关闭门的命令。要做到这一点,我会发送类似comport.Write("y")的内容,Arduino会明白这个命令会关闭,但如果Arduino发给我一个ascii命令,它就会被关闭。

我想创建一个告诉类似的if条件:

“如果发送给arduino的命令被读取,那么它会响应一些东西,我会打开门。如果没有,它将无效,因为门已经关闭。”

这是我已有的代码:

static void Main(string[] args)
    {
        BackgroundWorker work = new BackgroundWorker();
        work.DoWork += new DoWorkEventHandler(work_DoWork);
        work.ProgressChanged += new ProgressChangedEventHandler(work_ProgressChanged);
        work.WorkerReportsProgress = true;
        work.RunWorkerAsync();
        Console.ReadLine();
    }

    static void work_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        Console.WriteLine(e.ProgressPercentage);
    }

    static void work_DoWork(object sender, DoWorkEventArgs e)
    {
        BackgroundWorker work = sender as BackgroundWorker;
        int grams = -1;
        SerialPort port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
        port.Open();
        while (true)
        {
            string buff = port.ReadLine();
            int value;
            if (int.TryParse(buff, out value) && value != grams)
            {
                grams = value;
                work.ReportProgress(grams);
            }
        }
    }

我想用这样的东西来读取arduino寄给我的东西,如果命令是正确的话,它会继续。

相反,如果这个int变量我想要字符串变量

你们能帮助我吗?

1 个答案:

答案 0 :(得分:1)

也许您可以使用solidsoils4Arduino发送和接收ASCII命令。你有工作代码吗? arduino如何检测门是否关闭?