上位机学习记录(8) 编写上位机报警功能(使用SeeSharp开源控件)
上位机学习记录(8) 编写上位机报警功能(使用SeeSharp开源控件)
第一步:安装SeeSharp
在Nuget中搜索SeeSharp。
第二步:程序设计
大致样式如下:
简要说明:
一个固定文本框显示:系统正常(Label)
一个滚动条显示报警问题(ScrollingText)
一个指示灯(绿色:正常;红色:报警)(LED)
文本框和滚动条在相同位置,彼此覆盖
流程设计:
当系统正常的时候,滚动条隐藏。文本框显示。指示灯显示绿色
当系统异常的时候,指示灯变为红色:
- 报警数量为1条时:文本框显示报警原因
- 报警数量为多条时,滚动条滚动显示多条报警数据
细节说明:
-
只有不相同的报警信息会加入报警显示信息中,相同的不会加入
-
isAck (报警是触发还是消除):如果反馈触发,添加报警;反馈移除报警,就删除报警信息
代码实现如下:
public void AddAlarm(string info, bool isAck)
{
if (isAck)
{
if (!AlarmInfoList.Contains(info))
{
AlarmInfoList.Add(info);
}
}
else
{
if (AlarmInfoList.Contains(info))
{
AlarmInfoList.Remove(info);
}
}
//更新界面
RefreshAlarm();
}
/// <summary>
/// 更新报警界面
/// </summary>
private void RefreshAlarm()
{
this.Invoke(new Action(() =>
{
if (AlarmInfoList.Count == 0)
{
this.led_state.Value = true;
this.lbl_Info.Visible = true;
this.lbl_ScrollInfo.Visible = false;
this.lbl_Info.Text = "系统运行正常";
}
else if (AlarmInfoList.Count == 1)
{
this.led_state.Value = false;
this.lbl_Info.Visible = true;
this.lbl_ScrollInfo.Visible = false;
this.lbl_Info.Text = AlarmInfoList[0];
}
else
{
this.led_state.Value = false;
this.lbl_Info.Visible = false;
this.lbl_ScrollInfo.Visible = true;
this.lbl_ScrollInfo.Text = string.Join(" ", AlarmInfoList).Trim();
}
}));
}
/// <summary>
/// 报警信息列表
/// </summary>
private List<string> AlarmInfoList = new List<string>();