日期:2014-05-18 浏览次数:20833 次
private void cycle() //自定义的函数 { int[] arrayboudrate = new int[9] { 300,1200,2400,4800,115200,9600,19200,38400,57600}; for (i=0;i <=100;i++) { sp1.BaudRate = arrayboudrate[i1]; //.... //设置串口参数 try { sp1.open();//打开串口,开始接收数据 timer1.Enabled=false;//如果正常,时间控件为无效状态 //在这里写代码判断是否接满了你所说的多少位 } catch { timer1.Enabled=true;//发生错误,时间控件启动 timer1.Interval = 5000; } } } private void timer1_Tick(object sender, EventArgs e) { cycle();//执行该方法 }
------解决方案--------------------
bool iscontinue = false;
private void cycle() //自定义的函数
{
int[] arrayboudrate = new int[9] { 300,1200,2400,4800,115200,9600,19200,38400,57600};
for (i=0;i <=100;i++)
{
sp1.BaudRate = arrayboudrate[i1];
.... //设置串口参数
try
{
iscontinue = false;
timer1.Interval = 5000;
timer1.start();
sp1.open();//打开串口,开始接收数据
}
catch
{
iscontinue = true;
}
if(iscontinue) continue;
else
{
if (接收的字符串与协议匹配)
终止循环
else
continue;
}
}
}
private void timer1_Tick(object sender, EventArgs e)
{
iscontinue = true;
timer1.stop();
}
------解决方案--------------------
up