添加了定时器功能。打开后多长事件后,自动关闭。
1.窗体设计
注意:给label标签进行初值设置。在属性Text中进行设置。
2.函数设计
2.1.No.1开按钮设计
private void button3_Click(object sender, EventArgs e)
{
int i = 0;
//巧妙的使用try{}catch{}来获取关时间
try
{
//获取两位数,如果不是两位数,跳转至catch中执行。
i = Convert.ToInt32(textBox1.Text.Substring(0, 2));
}
catch
{
try
{
//获取一位数,如果不是一位数,跳转至catch中执行。
i = Convert.ToInt32(textBox1.Text.Substring(0, 1));
}
catch
{
MessageBox.Show("请输入1-99正确的数!","提示");
//退出函数
return;
}
}
if(serialPort1.IsOpen)
{
//如果是0的话,程序不需要定时功能。
if (i == 0)
{
MessageBox.Show("请输入大于0的数字", "提示");
}
else
{
//这样写不需要计数器
timer1.Interval = i * 1000;
//定时器开
timer1.Start();
//N0.1开按钮不能使用
button3.Enabled = false;
}
}
WriteByteToSerialPort(DeviceOpen1);//N0.1开
}
1.巧妙的使用try{}catch{}来获取label控件的时间.
2. timer1.Interval = i * 1000;这样写不需要计数器
2.2 N0.1关按钮设计
private void button4_Click(object sender, EventArgs e)
{
try
{
//关闭定时器,如果定时器没开,则跳转至catch中执行。
timer1.Stop();
}
catch
{
}
button3.Enabled = true;
WriteByteToSerialPort(DeviceClose1);//N0.1关
}
2.3 定时器函数设计
private void timer1_Tick(object sender, EventArgs e)
{
//定时器定时结束后,跳转至定时器函数。
//N0.1开按钮可以使用
button3.Enabled = true;
button5.Enabled = true;
button7.Enabled = true;
//关闭定时器
timer1.Stop();
//N0.1关按钮关闭。
WriteByteToSerialPort(DeviceClose1);//N0.1关
WriteByteToSerialPort(DeviceClose2);//N0.2关
WriteByteToSerialPort(DeviceClose3);//N0.3关
}
上一期链接:
1: C#上位机(串口控制(一)).
2: C#上位机(串口控制(二)).