C#阅读Arduino我正在尝试创建一个从Arduino读取传出信号的应用程序,但我不能在C#Windows窗体中使用它,只能在控制台使用。我的C#Windows窗体代码有误吗?调试时我没有得到任何错误,但这并不意味着我没有忘记一些东西。这是我的代码:usingSystem;使用System.Collections.Generic;使用System.ComponentModel;使用系统数据;使用系统绘图;使用System.Linq;使用系统文本;使用System.Windows.Forms;使用System.IO.Ports;使用系统线程;namespaceCommunicateWithArduino{publicpartialclassForm1:Form{publicstaticSystem.IO.Ports.SerialPort端口;委托无效SetTextCallback(字符串文本);私人背景工作者努力工作;私有线程readThread=null;publicForm1(){InitializeComponent();hardWorker=newBackgroundWorker();sendBtn.Enabled=false;}privatevoidbtnConnect_Click(objectsender,EventArgse){System.ComponentModel.IContainercomponents=newSystem.ComponentModel.Container();port=newSystem.IO.Ports.SerialPort(组件);port.PortName=comPort.SelectedItem.ToString();port.BaudRate=Int32.Parse(baudRate.SelectedItem.ToString());端口.DtrEnable=true;端口.ReadTimeout=5000;端口.WriteTimeout=500;port.Open();readThread=newThread(newThreadStart(this.Read));readThread.Start();this.hardWorker.RunWorkerAsync();btnConnect.Text="";btnConnect.Enabled=false;comPort.Enabled=false;sendBtn.Enabled=true;}privatevoidForm1_Load(objectsender,EventArgse){foreach(stringsinSerialPort.GetPortNames()){comPort.Items.Add(s);}如果(comPort.Items.Count>0)comPort.SelectedIndex=comPort.Items.Count-1;否则comPort.SelectedIndex=0;波特率.Items.Add("2400");波特率.Items.Add("4800");波特率.Items.Add("9600");波特率.Items.Add("14400");波特率.Items.Add("19200");波特率.Items.Add("28800");波特率.Items.Add("38400");波特率.Items.Add("57600");波特率.Items.Add("115200");波特率.SelectedIndex=2;}privatevoidsendBtn_Click(objectsender,EventArgse){if(port.IsOpen){port.Write(sendText.Text);}}privatevoidSetText(stringtext){if(this.receiveText.InvokeRequired){SetTextCallbackd=newSetTextCallback(SetText);this.Invoke(d,newobject[]{text});}else{this.receiveText.Text+="文本:";this.receiveText.Text+=文本;this.receiveText.Text+=Environment.NewLine;}}publicvoidRead(){while(port.IsOpen){try{if(port.BytesToRead>0){stringmessage=port.ReadLine();this.SetText(消息);}}catch(TimeoutException){}}}privatevoidForm1_FormClosed(objectsender,FormClosedEventArgse){try{if(!(readThread==null))readThread.Abort();}catch(NullReferenceException){}try{port.Close();}catch(NullReferenceException){}}}}默认情况下,ReadLine方法将阻塞,直到接收到一行您的Arduino程序是否发送了一行?运行程序时是否关闭了Arduino串口监视器?在您确认收到字符之前,我会更改为port.ReadChar。以上就是C#学习教程:C#阅读Arduino分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
