📄 frmmain.cs
字号:
this.OpenComm();
//
//启动工作者线程
m_bStopThread = false;
m_ComThread = new Thread(new ThreadStart(EntryPoint));
m_ComThread.Start();
//
m_bStartTest = true;
this.m_EquipAndPerformInfo.StartTestTime = DateTime.Now;
//
mainMenu_Control_StartTest.Enabled = false;
mainMenu_Control_EndTest.Enabled = true;
mainMenu_Control_OutServiceTest.Enabled = true;
mainMenu_DataAnalyze_G821.Enabled = true;
//发送时间校正命令
this.TimeCheck();
//发送电路接口设置命令
this.CirInfoSet();
//
//发送启动测试命令
DataEntry dataEntry = new DataEntry(12);
DateTime dateTime = DateTime.Now;
//txtStartTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:MM:ss");
byte [] data = new byte[12];
data[0] = 0;
data[1] = MsgCommandId.START_TEST;
data[2] = (byte)this.m_EquipAndPerformInfo.m_CirConfigParam.TestMode;//测试模式
data[3] = (byte)this.m_EquipAndPerformInfo.m_CirConfigParam.TestSequence;//测试序列
data[4] = (byte)this.m_EquipAndPerformInfo.m_CirConfigParam.TestPattern;//测试图案
data[5] = (byte)(dateTime.Year & 0xff);
data[6] = (byte)(dateTime.Year>>8);
data[7] = (byte)dateTime.Month;
data[8] = (byte)dateTime.Day;
data[9] = (byte)dateTime.Hour;
data[10] = (byte)dateTime.Minute;
data[11] = (byte)dateTime.Second;
dataEntry.szData = data;
m_DataHandler.AddOneFrameToSndDataList(dataEntry);
//#if DEBUG
InsertItemToDataList(1,data);//
//#endif
Cursor.Current = Cursors.Default;
}
/// <summary>
/// 终止测试
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mainMenu_Control_EndTest_Click(object sender, System.EventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
byte [] data = new byte[2];
data[0] = 0;
data[1] = MsgCommandId.STOP_TEST;
DataEntry dataEntry = new DataEntry(2);
dataEntry.szData = data;
m_DataHandler.AddOneFrameToSndDataList(dataEntry);
//#if DEBUG
InsertItemToDataList(1,data);//
//#endif
Thread.Sleep(2000);
//
m_bStopThread = true;
//
m_Comm.Close();
//
mainMenu_Control_StartTest.Enabled = true;
mainMenu_Control_EndTest.Enabled = false;
mainMenu_Control_OutServiceTest.Enabled = false;
mainMenu_DataAnalyze_G821.Enabled = false;
Cursor.Current = Cursors.Default;
}
/// <summary>
/// 测试使用
/// 向ListView窗口中插入消息净荷(不包括帧头帧尾校验字)
/// </summary>
/// <param name="orient">
/// 0=上行消息,1= 下行消息
/// </param>
/// <param name="data">
/// 消息净荷
/// </param>
public void InsertItemToDataList(int orient ,byte [] data)
{
string strOrient = "";//方向标识
string message = "";//消息描述
if(orient == 0)
strOrient = "<<<<";
else
strOrient = ">>>>";
//
switch(data[1])
{
case 0x30:
message = "设备复位";
break;
case 0x31:
message = "设备复位再确认";
break;
case 0x32:
message = "启动测试";
break;
case 0x33:
message = "终止测试";
break;
case 0x34:
message = "路由测试";
break;
case 0x35:
message = "时间校正";
break;
case 0x36:
message = "电路及接口信息设置";
break;
case 0x37:
message = "中断业务测试控制";
break;
case 0x38:
message = "实时误码性能查询";
break;
case 0x39:
message = "15分钟误码信息上报确认";
break;
case 0x40:
message = "电路告警上报确认";
break;
case 0x41:
message = "环路延时测试";
break;
case 0x42:
message = "指示灯和状态查询";
break;
case 0x61:
message = "设备复位确认";
break;
case 0x62:
message = "启动测试应答";
break;
case 0x63:
message = "终止测试应答";
break;
case 0x64:
message = "路由测试应答";
break;
case 0x65:
message = "时间校正应答";
break;
case 0x66:
message = "电路及接口信息设置应答";
break;
case 0x67:
message = "中断业务测试控制应答";
break;
case 0x68:
message = "实时误码性能查询应答";
break;
case 0x69:
message = "15分钟误码信息上报";
break;
case 0x70:
message = "电路告警上报";
break;
case 0x71:
message = "环路延时测试应答";
break;
case 0x72:
message = "指示灯和状态查询应答";
break;
default:
message = "!!!未知消息";
break;
}
///////////////////////////////////////////
lock(listViewShowComData)
{
if(listViewShowComData.Items.Count > 100)
listViewShowComData.Items.RemoveAt(0);
}
//
ListViewItem lvi = new ListViewItem();
lvi.SubItems.Clear();
lvi.SubItems[0].Text = strOrient;
lvi.SubItems.Add(message);
lvi.SubItems.Add(HexCon.ByteToString(data));
//
lock(listViewShowComData)
{
listViewShowComData.Items.Add(lvi);
listViewShowComData.EnsureVisible(listViewShowComData.Items.Count-1);
}
}
/// <summary>
/// 初始化listViewShowComData
/// </summary>
private void InitListView()
{
//init ShowComData ListView
listViewShowComData.FullRowSelect = true;
listViewShowComData.View = View.Details;
listViewShowComData.Columns.Add("方向",40,HorizontalAlignment.Left);
listViewShowComData.Columns.Add("消息类型",120,HorizontalAlignment.Left);
listViewShowComData.Columns.Add("消息内容",220,HorizontalAlignment.Left);
listViewShowComData.Visible = true;
}
/// <summary>
/// 串口配置
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mainMenu_System_CommConfig_Click(object sender, System.EventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
frmCommConfig dlg = new frmCommConfig(this);
dlg.Show();
Cursor.Current = Cursors.Default;
}
/// <summary>
/// 打开串口
/// </summary>
private void OpenComm()
{
//
//
m_Comm = new CommPort(this.m_EquipAndPerformInfo.m_CommConfigParam.ComNo,
this.m_EquipAndPerformInfo.m_CommConfigParam.BaudRate,
this.m_EquipAndPerformInfo.m_CommConfigParam.Parity
);//定义串行口对象
m_Comm.Open();
}
/// <summary>
/// 中断业务测试控制
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mainMenu_Control_OutServiceTest_Click(object sender, System.EventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
frmOutServiceTestCtrl dlg = new frmOutServiceTestCtrl(this);
dlg.Show();
Cursor.Current = Cursors.Default;
}
/// <summary>
/// 发送电路信息设置命令
/// </summary>
private void CirInfoSet()
{
//发送电路信息设置命令
m_DataHandler.AddOneFrameToSndDataList(this.m_CircuitInfo);
//#if DEBUG
InsertItemToDataList(1,this.m_CircuitInfo.szData);//
//#endif
}
/// <summary>
/// 发送时钟校正命令
/// </summary>
private void TimeCheck()
{
//
//发送时钟校正命令
DataEntry dataEntry = new DataEntry(9);
DateTime dateTime = DateTime.Now;
byte [] data = new byte[9];
data[0] = 0;
data[1] = MsgCommandId.TIME_CHECK;
data[2] = (byte)(dateTime.Year & 0xff);
data[3] = (byte)(dateTime.Year>>8);
data[4] = (byte)dateTime.Month;
data[5] = (byte)dateTime.Day;
data[6] = (byte)dateTime.Hour;
data[7] = (byte)dateTime.Minute;
data[8] = (byte)dateTime.Second;
dataEntry.szData = data;
m_DataHandler.AddOneFrameToSndDataList(dataEntry);
//#if DEBUG
this.InsertItemToDataList(1,data);
//#endif
}
private void frmMain_Load(object sender, System.EventArgs e)
{
this.InitListView();
//
CircuitInfoConfigParamInit();
//
Rectangle screen = Screen.PrimaryScreen.Bounds;
this.Location = new Point((screen.Width - this.Width) / 2,
(screen.Height - this.Height ) / 2);
this.listViewShowComData.Size = new Size(224, 240);
this.listViewShowComData.Visible = false;
}
private void frmMain_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel = true;//禁止主窗口退出
}
private void mainMenu_DataAnalyze_G821_Click(object sender, System.EventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
//
frmG821 dlg = new frmG821(this);
dlg.WindowState = FormWindowState.Normal;
dlg.Show();
//
Cursor.Current = Cursors.Default;
}
private void mainMenu_DataAnalyze_HistoryErr_Click(object sender, System.EventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
//
Cursor.Current = Cursors.Default;
}
private void mainMenu_DataAnalyze_HistoryAlm_Click(object sender, System.EventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
//
Cursor.Current = Cursors.Default;
}
private void mainMenu_DataManage_DataDelete_Click(object sender, System.EventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
//
Cursor.Current = Cursors.Default;
}
private void mainMenu_Control_ClearDataInEquip_Click(object sender, System.EventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
//
Cursor.Current = Cursors.Default;
}
private void menuItem_Debug_Click(object sender, System.EventArgs e)
{
if(this.listViewShowComData.Visible == false)
{
this.listViewShowComData.Visible = true;
this.menuItem_Debug.Checked = true;
}
else
{
this.listViewShowComData.Visible = false;
this.menuItem_Debug.Checked = false;
}
}
private void listViewShowComData_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
{
lock(listViewShowComData)
{
listViewShowComData.Items.Clear();
}
}
private void mainMenu_System_Exit_Click(object sender, System.EventArgs e)
{
this.m_bStopThread = true;
Application.Exit();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -