IOexception 未通过 Arduino 处理
Posted
技术标签:
【中文标题】IOexception 未通过 Arduino 处理【英文标题】:IOexception was unhandled through Arduino 【发布时间】:2015-06-19 08:28:32 【问题描述】:所以我正在做一个项目,其中一个系统通过 Arduino 和 Xbee 传输数据,而接收系统通过 Arduino 和 Xbee 接收数据。在接收端,我将信息发送到 Visual Studios。所以,当我按下停止按钮停止接收数据时,我得到 IOException 未处理。我该如何解决?
错误将指向我在下面添加评论的行
我在接收端的 C# 代码:
public Form1()
InitializeComponent();
private void start_btn_Click(object sender, EventArgs e)
myport = new SerialPort();
myport.BaudRate = 9600;
myport.PortName = port_name_tb.Text;
myport.Parity = Parity.None;
myport.DataBits = 8;
myport.StopBits = StopBits.One;
myport.DataReceived+=SerialDataReceivedEventHandler
(myport_DataReceived);
try
myport.Open();
data_tb.Text = "";
catch (Exception ex)
MessageBox.Show(ex.Message, "Error");
void myport_DataReceived(object sender, SerialDataReceivedEventArgs e)
this.Invoke(new EventHandler(displaydata_event));
in_data = myport.ReadLine(); //------> ERROR POINTED TO THIS LINE
private void displaydata_event(object sender, EventArgs e)
datetime = DateTime.Now;
string date = datetime.Day + "/" + datetime.Month;
string time = datetime.Hour + ":" + datetime.Minute + ":"
+ datetime.Second;
data_tb.AppendText(date +" " + time + "\t\t" + in_data + "\n");
private void stop_btn_Click(object sender, EventArgs e)
try
myport.Close();
catch (Exception ex2)
MessageBox.Show(ex2.Message, "Error");
private void save_btn_Click(object sender, EventArgs e)
datetime = DateTime.Now;
string date = datetime.Day + "/" + datetime.Month;
string time = datetime.Hour + ":" + datetime.Minute + ":"
+ datetime.Second;
try
string pathfile = @"C:\Users\User\Desktop\Cdata\";
string filename = "prototype.txt";
System.IO.File.WriteAllText(pathfile + filename, data_tb.Text);
MessageBox.Show("Data has been saved to " + pathfile);
catch (Exception ex3)
MessageBox.Show(ex3.Message, "Error");
【问题讨论】:
【参考方案1】:您没有正确捕获交换机中的异常,因此出现未处理的 IOException。
您可以通过将捕获从 Exception
更改为 IOException exX
& 来解决这个问题。
【讨论】:
嗨,迈克,我已经编辑了 void myport_DataReceived: void myport_DataReceived(object sender, SerialDataReceivedEventArgs e) try this.Invoke(new EventHandler(displaydata_event)); in_data = myport.ReadLine(); catch(Exception ex5) MessageBox.Show(ex5.Message, "Error"); 但我如何成功阻止端口接收数据? 完成后,您可以简单地使用myport.Close();
。您仍然可以使用该端口,只需使用 myport.Open();
重新打开它。以上是关于IOexception 未通过 Arduino 处理的主要内容,如果未能解决你的问题,请参考以下文章
从 Arduino Yun 上的 USB 接口获取 MIDI 音符