📄 echoplexoperationform.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Practices.EnterpriseLibrary.Data;
using System.IO.Ports;
namespace GPSSerialPortData
{
public partial class EchoplexOperationForm : Form
{
private System.IO.Ports.SerialPort[] s_Ports = null;
public EchoplexOperationForm(System.IO.Ports.SerialPort[] ports)
{
InitializeComponent();
s_Ports = ports;
}
private void InitclbGroup()
{
Database db = DatabaseFactory.CreateDatabase();
StringBuilder sb = new StringBuilder();
sb.Append("SELECT * FROM [soft_sailingservice].[dbo].[NS_GPS_Group]");
DataSet ds = db.ExecuteDataSet(CommandType.Text, sb.ToString());
if (ds != null)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
CheckedListBoxItem clbItem = new CheckedListBoxItem(dr["GroupName"].ToString() +"-"+dr["PortName"].ToString(), dr);
clbGroup.Items.Add(clbItem);
}
}
}
private void InitclbTerminal()
{
Database db = DatabaseFactory.CreateDatabase();
StringBuilder sb = new StringBuilder();
sb.Append("SELECT dbo.NS_GPS_Terminal.Id, dbo.NS_GPS_Terminal.TerminalNumber, dbo.NS_GPS_TerminalGroup.Group_Id, dbo.NS_GPS_Group.PortName");
sb.Append(" FROM dbo.NS_GPS_Terminal INNER JOIN");
sb.Append(" dbo.NS_GPS_TerminalGroup ON dbo.NS_GPS_Terminal.Id = dbo.NS_GPS_TerminalGroup.Terminal_Id INNER JOIN");
sb.Append(" dbo.NS_GPS_Group ON dbo.NS_GPS_TerminalGroup.Group_Id = dbo.NS_GPS_Group.Id");
sb.Append(" ORDER BY dbo.NS_GPS_Terminal.TerminalNumber");
DataSet ds = db.ExecuteDataSet(CommandType.Text, sb.ToString());
if (ds != null)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
CheckedListBoxItem clbItem = new CheckedListBoxItem(dr["TerminalNumber"].ToString(), dr);
clbTerminal.Items.Add(clbItem);
}
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void EchoplexOperationForm_Load(object sender, EventArgs e)
{
try
{
InitclbGroup();
InitclbTerminal();
}
catch
{
MessageBox.Show("无法连接数据库\n请配置数据库", "提示");
this.Close();
}
}
private void btnStop_Click(object sender, EventArgs e)
{
if (clbTerminal.CheckedIndices.Count == 0)
{
MessageBox.Show("请选择终端", "提示");
return;
}
foreach (object obj in clbTerminal.CheckedItems)
{
DataRow dr = ((CheckedListBoxItem)obj).Value as DataRow;
byte[] bytes = DataSend.CreateBytes(int.Parse(dr["TerminalNumber"].ToString()), DataSend.SendType.H53, 0);
foreach (SerialPort port in s_Ports)
{
if (port.PortName == dr["PortName"].ToString())
{
try
{
port.Write(bytes, 0, bytes.Length);
textBox1.Text += "对" + int.Parse(dr["TerminalNumber"].ToString()).ToString() + "停止回送命令已成功发出……\r\n";
}
catch
{
textBox1.Text += "对" + int.Parse(dr["TerminalNumber"].ToString()).ToString() + "停止回送命令发出失败\r\n";
}
}
}
}
}
private void btnInstant_Click(object sender, EventArgs e)
{
if (clbTerminal.CheckedIndices.Count == 0)
{
MessageBox.Show("请选择终端", "提示");
return;
}
foreach (object obj in clbTerminal.CheckedItems)
{
DataRow dr = ((CheckedListBoxItem)obj).Value as DataRow;
byte[] bytes = DataSend.CreateBytes(int.Parse(dr["TerminalNumber"].ToString()), DataSend.SendType.H41, 0);
try
{
foreach (SerialPort port in s_Ports)
{
if (port.PortName == dr["PortName"].ToString())
{
port.Write(bytes, 0, bytes.Length);
textBox1.Text += "对" + int.Parse(dr["TerminalNumber"].ToString()).ToString() + "即时回送命令已成功发出……\r\n";
}
}
}
catch
{
textBox1.Text += "对" + int.Parse(dr["TerminalNumber"].ToString()).ToString() + "即时回送命令发出失败\r\n";
}
}
}
private void clbGroup_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.CurrentValue == CheckState.Checked)
{
CheckedListBoxItem clbItem = clbGroup.Items[e.Index] as CheckedListBoxItem;
DataRow dr = clbItem.Value as DataRow;
for (int i = 0; i < clbTerminal.Items.Count; i++ )
{
CheckedListBoxItem clbItemTmp = clbTerminal.Items[i] as CheckedListBoxItem;
DataRow drTmp = clbItemTmp.Value as DataRow;
if (drTmp["Group_Id"].ToString() == dr["Id"].ToString())
{
clbTerminal.SetItemChecked(i, false);
}
}
}
else
{
CheckedListBoxItem clbItem = clbGroup.Items[e.Index] as CheckedListBoxItem;
DataRow dr = clbItem.Value as DataRow;
for (int i = 0; i < clbTerminal.Items.Count; i++)
{
CheckedListBoxItem clbItemTmp = clbTerminal.Items[i] as CheckedListBoxItem;
DataRow drTmp = clbItemTmp.Value as DataRow;
if (drTmp["Group_Id"].ToString() == dr["Id"].ToString())
{
clbTerminal.SetItemChecked(i, true);
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -