private void QueryVerBtn_Click(object sender, EventArgs e) { MsgDefine.Head QueryVer = new MsgDefine.Head(); QueryVer.head = 0xffff; QueryVer.pkt_type = (ushort)MsgDefine.RecvPktType.RECV_QUERY_VER; QueryVer.data_length = (uint)(Marshal.SizeOf(QueryVer) - 8); int lengthRecvRf = Marshal.SizeOf(QueryVer); byte[] dataQueryVer = new byte[lengthRecvRf]; IntPtr intptr = Marshal.AllocHGlobal(lengthRecvRf); Marshal.StructureToPtr(QueryVer, intptr, true); Marshal.Copy(intptr, dataQueryVer, 0, lengthRecvRf); Marshal.FreeHGlobal(intptr); CustomDataEvtArg dataEvtArg = new CustomDataEvtArg(); dataEvtArg.deivceName = COM.ZCTT.AGI.Common.Global.GCurrentDevice; dataEvtArg.data = dataQueryVer; for (int i = 0; i < dataQueryVer.Length; i++) { System.Diagnostics.Debug.WriteLine(dataQueryVer[i]); } COM.ZCTT.AGI.Common.Global.tempClass.SendDataToDevice(sender, dataEvtArg); }
private void SendUERleaseREQ() { AGIInterface.CustomDataEvtArg ce1 = new CustomDataEvtArg(); PC_AG_UE_SILENCE_RPT_RSP UeSilenceREQ = new PC_AG_UE_SILENCE_RPT_RSP(); int reqlength = Marshal.SizeOf(UeSilenceREQ); byte[] header = new byte[] { 0, 0, 0, 0, 4, 2, 0x0b, 0x40, 0, 0, 0x0f, 0 };//加消息头 byte[] tempBytes; int dstOffset = 0; UeSilenceREQ.mu8ReTrace = 1; if (MessageBox.Show("Do you want to release UE?", "NOTE", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { UeSilenceREQ.mu8ReTrace = 0; } else { UeSilenceREQ.mu8ReTrace = 1; } UeSilenceREQ.mau8Pading = new byte[] { 0, 0, 0 }; ce1.data = new byte[reqlength]; System.Buffer.BlockCopy(header, 0, ce1.data, dstOffset, 12); dstOffset = dstOffset + 12; System.Buffer.BlockCopy(rData, 20, ce1.data, dstOffset, 56); dstOffset = dstOffset + 56; tempBytes = BitConverter.GetBytes(UeSilenceREQ.mu8ReTrace); System.Buffer.BlockCopy(tempBytes, 0, ce1.data, dstOffset, 1); dstOffset++; System.Buffer.BlockCopy(UeSilenceREQ.mau8Pading, 0, ce1.data, dstOffset, 3); ce1.deivceName = Global.GCurrentDevice; Global.tempClass.SendDataToDevice(null, ce1); }
/// <summary> /// 发送设备的状态信息给主窗体 /// </summary> public void SendStatusToMainForm() { if (Global.GCurrentDevice == deviceName) { AGIInterface.CustomDataEvtArg ce = new CustomDataEvtArg(); ce.deviceConnStaus = (this.connectionState == 0) ? "Connected" : "Disconnected"; Global.connectionStatus = (this.connectionState == 0) ? true : false; ce.deivceName = this.deviceName; if (ce.deviceConnStaus == "Disconnected") { ce.deviceInstumentState = " "; ce.deviceWorkModel = " "; } else { ce.deviceInstumentState = (this.deviceInstrumentState == 0) ? "IDLE" : "Working"; //2014.4.15 stop按钮和状态异常 if (Global.testMode != Global.TestMode.PlayBack && ce.deviceInstumentState == "IDLE") { Global.testStatus = Global.TestStatus.Stop; } if (Global.testMode != Global.TestMode.PlayBack && ce.deviceInstumentState == "Working") { Global.testStatus = Global.TestStatus.Start; } ce.deviceWorkModel = Global.testMode.ToString(); //(this.deviceWorkModel == 1) ? "Cell Scanning" : "Protocol Tracking"; } ce.remainingPower = this.remainingPower; Global.tempClass.SendStatusToMainForm(this, ce); } }
private void SendRxAnt(object sender, string dev) { CustomDataEvtArg EvtArg = CellSearchAndMonitorUnions.RxAntMsg(1); EvtArg.deivceName = dev; Global.tempClass.SendDataToDevice(sender, EvtArg); DeviceManger.FindDevice(EvtArg.deivceName).SendRexAnt = true; }
//private bool sendRexAnt = false; private void CellSearchStart() { string freq = CSAMForm.CellSearchListView.Items[CellSearchItemIndex].SubItems[1].Text.Trim(); string earfcn = CSAMForm.CellSearchListView.Items[CellSearchItemIndex].SubItems[2].Text.Trim(); string pci = CSAMForm.CellSearchListView.Items[CellSearchItemIndex].SubItems[3].Text.Trim(); CustomDataEvtArg CDEArgMes = CellSearchAndMonitorUnions.GenerateMessage(earfcn, pci, 2); //Global.GCurrentDevice = DeviceManger.deviceList[0].DeviceName; string lteMode = Global.EARFCNToLteMode(Convert.ToInt32(earfcn)); DeviceManger.flashDeviceConnect(); foreach (Device dev in DeviceManger.deviceConnect) { if (dev.LteMode == lteMode) { Global.GCurrentDevice = dev.DeviceName; CDEArgMes.deivceName = dev.DeviceName; if (dev.SendRexAnt == false) { SendRxAnt(CellSearchSender, dev.DeviceName); } break; } } if (String.IsNullOrEmpty(CDEArgMes.deivceName)) { MessageBox.Show("没有" + lteMode + "板卡!"); foreach (Device dev in DeviceManger.deviceList) { if (dev.SendRexAnt) { dev.SendRexAnt = false; } } CSAMForm.CellMonitorButton.Enabled = true; CSAMForm.CellStopBtn.Enabled = false; isStop = true; Global.tempClass.CSAMStop(); return; } Global.CurrentSender = CSAMForm.Name; //Global.tempClass.Start(CellSearchSender, CDEArgMes); if (CellSearchSender != null) { Global.tempClass.SendDataToDevice(CellSearchSender, CDEArgMes); CSAMRunning = true; //IsWitingForRelAck = false; CSAMForm.CellMonitorButton.Enabled = false; CSAMForm.CellStopBtn.Enabled = true; Global.tempClass.CSAMStart(); //CSAMForm.StopMonitorButton.Enabled = true; mutexRrace = 0; //CustomDataEvtArg getAGTStatus = new CustomDataEvtArg(); //getAGTStatus.deivceName = Global.GCurrentDevice; //getAGTStatus.data = new byte[] { 0, 0, 0, 0, 0, 0, 0x01, 0x40, 0, 0, 0, 0 }; //Global.tempClass.SendDataToDevice(CellSearchSender, getAGTStatus); } }
private void DlSniffReceived(object send, CustomDataEvtArg ce) { if (this.InvokeRequired) { try { this.BeginInvoke(new Class1.SendToDlSniffFormHandler(DlSniffReceived), send, ce); } catch { } } else { MsgDefine.SendDlSniff DlSniff = new MsgDefine.SendDlSniff(); int lengthDlSinff = Marshal.SizeOf(DlSniff); IntPtr intptr = Marshal.AllocHGlobal(lengthDlSinff); Marshal.Copy(ce.data, 0, intptr, lengthDlSinff); DlSniff = (MsgDefine.SendDlSniff)Marshal.PtrToStructure(intptr, typeof(MsgDefine.SendDlSniff)); Marshal.FreeHGlobal(intptr); byte numberCell = DlSniff.numberCell; for (int i = 0; i < numberCell; i++) { byte mcc = DlSniff.cellInfomation[i].Mcc; byte mnc = DlSniff.cellInfomation[i].Mnc; ushort tac = DlSniff.cellInfomation[i].Tac; ushort pciNo = DlSniff.cellInfomation[i].PciNo; String ecgi = ""; for (int j = 0; j < 7; j++) { ecgi += DlSniff.cellInfomation[i].CellId[j].ToString("X"); } ushort earfcn = DlSniff.cellInfomation[i].Earfcn; byte cpType = DlSniff.cellInfomation[i].CP_Type; ushort crsRp = DlSniff.cellInfomation[i].Crs_RP; ushort crsRq = DlSniff.cellInfomation[i].Crs_RQ; ListViewItem item = new ListViewItem(new String[9]); item.SubItems[0].Text = mcc.ToString(); item.SubItems[1].Text = mnc.ToString(); item.SubItems[2].Text = pciNo.ToString(); item.SubItems[3].Text = tac.ToString(); item.SubItems[4].Text = ecgi; item.SubItems[5].Text = earfcn.ToString(); if (cpType == 0) { item.SubItems[6].Text = "常规"; } else { item.SubItems[6].Text = "扩展"; } item.SubItems[7].Text = "-" + (crsRp * 0.125).ToString() + "dBm"; item.SubItems[8].Text = (crsRq * 0.0625).ToString() + "dB"; listView1.Items.Add(item); } } }
/// <summary> /// 停止“协议跟踪”事件绑定的方法 /// </summary> /// <param name="sender">sender</param> /// <param name="ex">自定义的事件参数</param> public void StopEvent(object sender, CustomDataEvtArg ex) { if (ex.moduleName == "ProtocolTrace") { //AGIInterface.CustomDataEvtArg cusArg = new CustomDataEvtArg(); //cusArg.data = new byte[] { 0, 0, 0, 0, 4, 2, 0x0c, 0x40, 1, 0, 0, 0 };//加消息头。。 //cusArg.deivceName = Global.GCurrentDevice; //Global.tempClass.SendDataToDevice(sender, cusArg); } }
/// <summary> /// 改变状态栏状态事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void StatusChanged(object sender, CustomDataEvtArg e) { if (this.InvokeRequired) { try { this.BeginInvoke(new Class1.DeviceSendStatusToMainForm(StatusChanged), sender, e); } catch { } } else { int index = 0; int connCount = 0; int idleCount = 0; foreach (Device temdev in DeviceManger.deviceList) { if (temdev.ConnectionState == 0) { //statusList[index].Text = " "; statusList[index].Image = imageList1.Images[0]; connCount++; if (temdev.DeviceInstrumentState == 0) { idleCount++; } } else { //statusList[index].Text = " "; statusList[index].Image = imageList1.Images[1]; } index++; } if (connCount == 0) { Device.Text = "设备状态:"; DeviceColor.BackColor = System.Drawing.SystemColors.Control; } else if (idleCount == connCount) { Device.Text = "设备状态:IDLE"; DeviceColor.BackColor = System.Drawing.Color.Green; } else { Device.Text = "设备状态:Working"; DeviceColor.BackColor = System.Drawing.Color.Red; } } }
private void ReleaseProtocolTracing() { if (mutexRelease == 1) { Global.CurrentSender = CSAMForm.Name; AGIInterface.CustomDataEvtArg cusArg = new CustomDataEvtArg(); cusArg.data = new byte[] { 0, 0, 0, 0, 4, 2, 0x0c, 0x40, 1, 0, 0, 0 };//加消息头。。 cusArg.deivceName = Global.GCurrentDevice; //IsWitingForRelAck = true; Global.tempClass.SendDataToDevice(CellSearchSender, cusArg); mutexRelease = 0; } }
/// <summary> /// 开始“协议跟踪”事件绑定的方法 /// </summary> /// <param name="sender">sender</param> /// <param name="ex">自定义的事件参数</param> public void StartEvent(object sender, CustomDataEvtArg ex) { if (ex.moduleName == "ProtocolTrace" && ex.isRealTime == true) { //CustomDataEvtArg cusArg = new CustomDataEvtArg(); //cusArg.data = Global.ProTracReq; //cusArg.deivceName = Global.GCurrentDevice; //Global.tempClass.SendDataToDevice(sender, cusArg); //Global.FirstTime = true; } }
public static CustomDataEvtArg RxAntMsg(byte RxAntNum) { PC_AG_SET_AGT_INFO_REQ SetAgtInfoReq = new PC_AG_SET_AGT_INFO_REQ(); SetAgtInfoReq.msgHeader.reserved = 0; SetAgtInfoReq.msgHeader.SrcID = 4; SetAgtInfoReq.msgHeader.destID = 2; SetAgtInfoReq.msgHeader.msgType = 0x4000;/* V1.0 */ SetAgtInfoReq.msgHeader.transactionID = 0; SetAgtInfoReq.u8WorkMode = 2; SetAgtInfoReq.u8IterfaceType = 1; SetAgtInfoReq.u8OutDataType = 2; SetAgtInfoReq.u8SaveMode = 2; SetAgtInfoReq.RptInterval = 0; SetAgtInfoReq.u8RxAntNum = RxAntNum; if (RxAntNum == 1) { SetAgtInfoReq.u8RxAntStatus = 1; } else if (RxAntNum == 2) { SetAgtInfoReq.u8RxAntStatus = 3; } SetAgtInfoReq.mu8GpsValidFlag = 0; int DataLength = Marshal.SizeOf(SetAgtInfoReq); //消息头中的消息长度 SetAgtInfoReq.msgHeader.MsgLen = (UInt16)((DataLength - 12) / 4); CustomDataEvtArg testOKArgs = new CustomDataEvtArg(); testOKArgs.data = new byte[DataLength]; int reqlength = Marshal.SizeOf(SetAgtInfoReq); byte[] reqdata = new byte[reqlength]; IntPtr intptr = Marshal.AllocHGlobal(reqlength); Marshal.StructureToPtr(SetAgtInfoReq, intptr, true); Marshal.Copy(intptr, reqdata, 0, reqlength); Marshal.FreeHGlobal(intptr); System.Buffer.BlockCopy(reqdata, 0, testOKArgs.data, 0, reqlength); testOKArgs.deivceName = Global.GCurrentDevice; Global.ProTracReq = testOKArgs.data; return(testOKArgs); }
private void PagingPwrReceived(object sender, CustomDataEvtArg ce) { if (this.InvokeRequired) { try { this.BeginInvoke(new Class1.SendUeInfoToMainFormHandler(PagingPwrReceived), sender, ce); } catch { } } else { MsgDefine.SendPagingPwr PagingPwr = new MsgDefine.SendPagingPwr(); int lengthPagingPwr = Marshal.SizeOf(PagingPwr); if (lengthPagingPwr > ce.data.Length) { return; } IntPtr intptr = Marshal.AllocHGlobal(lengthPagingPwr); Marshal.Copy(ce.data, 0, intptr, lengthPagingPwr); PagingPwr = (MsgDefine.SendPagingPwr)Marshal.PtrToStructure(intptr, typeof(MsgDefine.SendPagingPwr)); Marshal.FreeHGlobal(intptr); String imsi = ""; for (int i = 0; i < 8; i++) { imsi += PagingPwr.pagingImsi[i].ToString("X"); } imsi = imsi.Substring(1, 15); byte pwrNo = PagingPwr.uePwrNo; double avePwr = 0; for (byte i = 0; i < pwrNo; i++) { avePwr += PagingPwr.uePwr[i]; } avePwr = avePwr / pwrNo - 135; ListViewItem item = new ListViewItem(new String[3]); item.SubItems[0].Text = imsi; item.SubItems[1].Text = pwrNo.ToString(); item.SubItems[2].Text = avePwr.ToString() + "dbm"; this.listView1.Items.Add(item); } }
private void button1_Click(object sender, EventArgs e) { if (!LTEUnion.IsDigitalString(textBox2.Text)) { MessageBox.Show("请输入正确的定时器间隔!"); } else if (Convert.ToUInt32(textBox2.Text) < 0 || Convert.ToUInt32(textBox2.Text) > 500) { MessageBox.Show("定时器间隔应为0~500"); } else if (Convert.ToUInt32(textBox2.Text) % 10 != 0) { MessageBox.Show("定时器间隔应为10的整数倍!"); } else if (Global.GCurrentDevice == "") { MessageBox.Show("设备未连接!"); } else { MsgDefine.RecvNewTac NewTac = new MsgDefine.RecvNewTac(); NewTac.head.head = 0xffff; NewTac.head.pkt_type = (ushort)MsgDefine.RecvPktType.RECV_NEW_TAC; NewTac.head.data_length = (uint)(Marshal.SizeOf(NewTac) - 8); NewTac.newSysNo = Convert.ToUInt16(textBox1.Text); NewTac.newTimer = Convert.ToUInt16(textBox2.Text); int lengthNewTac = Marshal.SizeOf(NewTac); byte[] dataRecvNewTac = new byte[lengthNewTac]; IntPtr intptr = Marshal.AllocHGlobal(lengthNewTac); Marshal.StructureToPtr(NewTac, intptr, true); Marshal.Copy(intptr, dataRecvNewTac, 0, lengthNewTac); Marshal.FreeHGlobal(intptr); CustomDataEvtArg dataEvtArg = new CustomDataEvtArg(); dataEvtArg.deivceName = Global.GCurrentDevice; dataEvtArg.data = dataRecvNewTac; for (int i = 0; i < dataRecvNewTac.Length; i++) { System.Diagnostics.Debug.WriteLine(dataRecvNewTac[i]); } Global.tempClass.SendDataToDevice(sender, dataEvtArg); } }
private void SysOptionBtn_Click(object sender, EventArgs e) { MsgDefine.RecvSysOption RecvSysOpt = new MsgDefine.RecvSysOption(); RecvSysOpt.head.head = 0xffff; RecvSysOpt.head.pkt_type = (ushort)MsgDefine.RecvPktType.RECV_SYS_OPTION; RecvSysOpt.head.data_length = (uint)(Marshal.SizeOf(RecvSysOpt) - 8); RecvSysOpt.opSysNo = Convert.ToUInt16(textBox6.Text); if (checkBox3.Checked) { RecvSysOpt.opLuImei = 1; } else { RecvSysOpt.opLuImei = 0; } if (checkBox4.Checked) { RecvSysOpt.opLuSTMSI = 1; } else { RecvSysOpt.opLuSTMSI = 0; } int lengthRecvSysOpt = Marshal.SizeOf(RecvSysOpt); byte[] dataRecvSysOpt = new byte[lengthRecvSysOpt]; IntPtr intptr = Marshal.AllocHGlobal(lengthRecvSysOpt); Marshal.StructureToPtr(RecvSysOpt, intptr, true); Marshal.Copy(intptr, dataRecvSysOpt, 0, lengthRecvSysOpt); Marshal.FreeHGlobal(intptr); CustomDataEvtArg dataEvtArg = new CustomDataEvtArg(); dataEvtArg.deivceName = COM.ZCTT.AGI.Common.Global.GCurrentDevice; dataEvtArg.data = dataRecvSysOpt; for (int i = 0; i < dataRecvSysOpt.Length; i++) { System.Diagnostics.Debug.WriteLine(dataRecvSysOpt[i]); } COM.ZCTT.AGI.Common.Global.tempClass.SendDataToDevice(sender, dataEvtArg); }
private void button1_Click(object sender, EventArgs e) { if (!LTEUnion.IsDigitalString(textBox2.Text)) { MessageBox.Show("请输入正确的EARFCN!"); } else { MsgDefine.RecvDlRxPara DlSniff = new MsgDefine.RecvDlRxPara(); DlSniff.head.head = 0xffff; DlSniff.head.pkt_type = (ushort)MsgDefine.RecvPktType.RECV_DLRX_PARA; DlSniff.head.data_length = (uint)(Marshal.SizeOf(DlSniff) - 8); DlSniff.dlSysNo = Convert.ToUInt16(textBox1.Text); DlSniff.earfcn = Convert.ToUInt16(textBox2.Text); DlSniff.dlFn = Convert.ToUInt32(textBox3.Text); DlSniff.dlRxMod = (byte)(comboBox1.SelectedIndex + 1); if (checkBox1.Checked) { DlSniff.dlEnable = 1; } else { DlSniff.dlEnable = 0; } int lengthDlSniff = Marshal.SizeOf(DlSniff); byte[] dataDlSniff = new byte[lengthDlSniff]; IntPtr intptr = Marshal.AllocHGlobal(lengthDlSniff); Marshal.StructureToPtr(DlSniff, intptr, true); Marshal.Copy(intptr, dataDlSniff, 0, lengthDlSniff); Marshal.FreeHGlobal(intptr); CustomDataEvtArg dataEvtArg = new CustomDataEvtArg(); dataEvtArg.deivceName = Global.GCurrentDevice; dataEvtArg.data = dataDlSniff; for (int i = 0; i < dataDlSniff.Length; i++) { System.Diagnostics.Debug.WriteLine(dataDlSniff[i]); } Global.tempClass.SendDataToDevice(sender, dataEvtArg); } }
private void IBOperMsg(object sender, EventArgs e) { MsgDefine.RecvIbOper RecvIbOp = new MsgDefine.RecvIbOper(); RecvIbOp.head.head = 0xffff; RecvIbOp.head.pkt_type = (ushort)MsgDefine.RecvPktType.RECV_IB_OPER; RecvIbOp.head.data_length = (uint)(Marshal.SizeOf(RecvIbOp) - 8); RecvIbOp.ibSysNo = Convert.ToByte(textBox1.Text); RecvIbOp.ibCmdType = (byte)(comboBox1.SelectedIndex + 1); String imsi = "0" + textBox2.Text; RecvIbOp.ibImsi = new byte[8]; for (int i = 0; i < 8; i++) { RecvIbOp.ibImsi[i] = Convert.ToByte(imsi.Substring(i * 2, 2), 16); } int lengthRecvIbOp = Marshal.SizeOf(RecvIbOp); byte[] dataRecvRecvRf = new byte[lengthRecvIbOp]; IntPtr intptr = Marshal.AllocHGlobal(lengthRecvIbOp); Marshal.StructureToPtr(RecvIbOp, intptr, true); Marshal.Copy(intptr, dataRecvRecvRf, 0, lengthRecvIbOp); Marshal.FreeHGlobal(intptr); CustomDataEvtArg dataEvtArg = new CustomDataEvtArg(); dataEvtArg.deivceName = Global.GCurrentDevice; dataEvtArg.data = dataRecvRecvRf; for (int i = 0; i < dataRecvRecvRf.Length; i++) { System.Diagnostics.Debug.WriteLine(dataRecvRecvRf[i]); } Global.tempClass.SendDataToDevice(sender, dataEvtArg); }
private void button2_Click(object sender, EventArgs e) { MsgDefine.RecvNcPara NcPara = new MsgDefine.RecvNcPara(); NcPara.head.head = 0xffff; NcPara.head.pkt_type = (ushort)MsgDefine.RecvPktType.RECV_NC_PARA; NcPara.head.data_length = (uint)(Marshal.SizeOf(NcPara) - 8); NcPara.ncSysNo = Convert.ToUInt16(textBox0.Text); NcPara.ncCmdType = (byte)(comboBox1.SelectedIndex + 1); NcPara.intraFreqCell.PCI = new byte[6]; NcPara.interFreqCellList.interFreqList = new MsgDefine.interFreqList[6]; byte NumInterFreq = 0; foreach (ListViewItem item in listView1.Items) { if (item.SubItems[0].Text == "待添加") { switch (item.SubItems[1].Text) { case "同频邻区表": { for (int i = 0; i < 6; i++) { if (item.SubItems[i + 2].Text == "") { NcPara.intraFreqCell.NumIntraFreqCell = (byte)i; break; } else { NcPara.intraFreqCell.PCI[i] = Convert.ToByte(item.SubItems[i + 2].Text); } } break; } case "异频邻区表1": case "异频邻区表2": case "异频邻区表3": case "异频邻区表4": case "异频邻区表5": case "异频邻区表6": { NcPara.interFreqCellList.interFreqList[NumInterFreq].PCI = new byte[6]; for (int i = 0; i < 6; i++) { if (item.SubItems[i + 2].Text == "") { NcPara.interFreqCellList.interFreqList[NumInterFreq].NumInterFreqCell = (byte)i; break; } else { NcPara.interFreqCellList.interFreqList[NumInterFreq].PCI[i] = Convert.ToByte(item.SubItems[i + 2].Text); } } NumInterFreq++; break; } } } } NcPara.interFreqCellList.NumInterFreq = NumInterFreq; int lengthNcPara = Marshal.SizeOf(NcPara); byte[] dataNcPara = new byte[lengthNcPara]; IntPtr intptr = Marshal.AllocHGlobal(lengthNcPara); Marshal.StructureToPtr(NcPara, intptr, true); Marshal.Copy(intptr, dataNcPara, 0, lengthNcPara); Marshal.FreeHGlobal(intptr); CustomDataEvtArg dataEvtArg = new CustomDataEvtArg(); dataEvtArg.deivceName = Global.GCurrentDevice; dataEvtArg.data = dataNcPara; for (int i = 0; i < dataNcPara.Length; i++) { System.Diagnostics.Debug.WriteLine(dataNcPara[i]); } Global.tempClass.SendDataToDevice(sender, dataEvtArg); }
private void button1_Click(object sender, EventArgs e) { if (!LTEUnion.IsDigitalString(textBox2.Text)) { MessageBox.Show("请输入正确的寻呼间隔!"); } else if (Convert.ToInt32(textBox2.Text) < 1 || Convert.ToInt32(textBox2.Text) > 255) { MessageBox.Show("寻呼间隔范围为1~255秒!"); } else if (comboBox2.SelectedIndex == 1 && !LTEUnion.IsIMSI(textBox3.Text)) { MessageBox.Show("请输入正确的15位IMSI!"); } else if (comboBox2.SelectedIndex == 0 && !LTEUnion.IsSTMSI(textBox3.Text)) { MessageBox.Show("请输入正确的10位STMSI!"); } else if (Global.GCurrentDevice == "") { MessageBox.Show("设备未连接!"); } else { MsgDefine.RecvCtrlCmd RecvCtrl = new MsgDefine.RecvCtrlCmd(); RecvCtrl.head.head = 0xffff; RecvCtrl.head.pkt_type = (ushort)MsgDefine.RecvPktType.RECV_CTRL_CMD; RecvCtrl.head.data_length = (uint)(Marshal.SizeOf(RecvCtrl) - 8); RecvCtrl.ctrlSysNo = Convert.ToByte(textBox1.Text); RecvCtrl.ctrlCmdType = (byte)(comboBox1.SelectedIndex + 1); RecvCtrl.ctrlCmdPara = Convert.ToByte(textBox2.Text); RecvCtrl.ctrlPagingIDType = (byte)(comboBox2.SelectedIndex + 1); if (comboBox2.SelectedIndex == 1) { String imsi = "0" + textBox3.Text; RecvCtrl.ctrlImsi = new byte[8]; for (int i = 0; i < 8; i++) { RecvCtrl.ctrlImsi[i] = Convert.ToByte(imsi.Substring(i * 2, 2), 16); } } else if (comboBox2.SelectedIndex == 0) { String imsi = "000000" + textBox3.Text; RecvCtrl.ctrlImsi = new byte[8]; for (int i = 0; i < 8; i++) { RecvCtrl.ctrlImsi[i] = Convert.ToByte(imsi.Substring(i * 2, 2), 16); } } int lengthRecvCtrl = Marshal.SizeOf(RecvCtrl); byte[] dataRecvCtrl = new byte[lengthRecvCtrl]; IntPtr intptr = Marshal.AllocHGlobal(lengthRecvCtrl); Marshal.StructureToPtr(RecvCtrl, intptr, true); Marshal.Copy(intptr, dataRecvCtrl, 0, lengthRecvCtrl); Marshal.FreeHGlobal(intptr); CustomDataEvtArg dataEvtArg = new CustomDataEvtArg(); dataEvtArg.deivceName = Global.GCurrentDevice; dataEvtArg.data = dataRecvCtrl; for (int i = 0; i < dataRecvCtrl.Length; i++) { System.Diagnostics.Debug.WriteLine(dataRecvCtrl[i]); } Global.tempClass.SendDataToDevice(sender, dataEvtArg); } }
private void RfParaBtn_Click(object sender, EventArgs e) { MsgDefine.RecvRfPara RecvRf = new MsgDefine.RecvRfPara(); RecvRf.head.head = 0xffff; RecvRf.head.pkt_type = (ushort)MsgDefine.RecvPktType.RECV_RF_PARA; RecvRf.head.data_length = (uint)(Marshal.SizeOf(RecvRf) - 8); RecvRf.rfSysNo = Convert.ToUInt16(textBox1.Text); if (checkBox1.Checked) { RecvRf.rfEnable = 1; } else { RecvRf.rfEnable = 0; } if (checkBox2.Checked) { RecvRf.fastConfigEarfcn = 0; } else { RecvRf.fastConfigEarfcn = 1; } RecvRf.earfcn_band = Convert.ToUInt16(BandTextBox.Text); RecvRf.DlEarfcn = Convert.ToUInt16(dlEarfcnBox.Text); RecvRf.UlEarfcn = Convert.ToUInt16(ulEarfcnBox.Text); RecvRf.SubframeAssinment = Convert.ToByte(textBox4.Text); RecvRf.specialSubframePatterns = Convert.ToByte(textBox25.Text); RecvRf.FrameStrucureType = (byte)comboBox8.SelectedIndex; switch (comboBox9.SelectedIndex) { case 0: RecvRf.DlBandWidth = 6; break; case 1: RecvRf.DlBandWidth = 15; break; case 2: RecvRf.DlBandWidth = 25; break; case 3: RecvRf.DlBandWidth = 50; break; case 4: RecvRf.DlBandWidth = 75; break; case 5: RecvRf.DlBandWidth = 100; break; } switch (comboBox10.SelectedIndex) { case 0: RecvRf.UlBandWidth = 6; break; case 1: RecvRf.UlBandWidth = 15; break; case 2: RecvRf.UlBandWidth = 25; break; case 3: RecvRf.UlBandWidth = 50; break; case 4: RecvRf.UlBandWidth = 75; break; case 5: RecvRf.UlBandWidth = 100; break; } RecvRf.RFchoice = (byte)comboBox11.SelectedIndex; RecvRf.TX1PowerAttenuation = Convert.ToUInt16(textBox2.Text); RecvRf.TX2PowerAttenuation = Convert.ToUInt16(textBox3.Text); int lengthRecvRf = Marshal.SizeOf(RecvRf); byte[] dataRecvRecvRf = new byte[lengthRecvRf]; IntPtr intptr = Marshal.AllocHGlobal(lengthRecvRf); Marshal.StructureToPtr(RecvRf, intptr, true); Marshal.Copy(intptr, dataRecvRecvRf, 0, lengthRecvRf); Marshal.FreeHGlobal(intptr); CustomDataEvtArg dataEvtArg = new CustomDataEvtArg(); dataEvtArg.deivceName = "设备0011";//COM.ZCTT.AGI.Common.Global.GCurrentDevice; dataEvtArg.data = dataRecvRecvRf; for (int i = 0; i < dataRecvRecvRf.Length; i++) { System.Diagnostics.Debug.WriteLine(dataRecvRecvRf[i]); } COM.ZCTT.AGI.Common.Global.tempClass.SendDataToDevice(sender, dataEvtArg); }
//mode:0-测向,2-STMSI,3-cellsearch public static CustomDataEvtArg GenerateMessage(string band, string earfcn, string pci, byte mode) { PC_AG_PROTOCOL_TRACE_REQ ProTracReq = new PC_AG_PROTOCOL_TRACE_REQ(); //消息头 ProTracReq.msgHeader.Reserved = 0; ProTracReq.msgHeader.Source = 4; ProTracReq.msgHeader.Destination = 2; ProTracReq.msgHeader.MessageType = 0x400a; /* V1.0 */ ProTracReq.msgHeader.TransactionID = 0; ProTracReq.msgHeader.MsgLen = 0; //需要最后发送的时候计算 //PROTOCOL_TRACE_UE_INFO_STRU mstUeInfo ProTracReq.mstUeInfo = new PROTOCOL_TRACE_UE_INFO_STRU(); ProTracReq.mstUeInfo.mastUEInfoList = new UE_INFO_STRU[16]; for (int i = 0; i < ProTracReq.mstUeInfo.mastUEInfoList.Length; i++) { UE_INFO_STRU ueinfo = new UE_INFO_STRU(); ueinfo.mu8UEIDTYPE = 0; ueinfo.mu8UEIDLength = 8; ueinfo.mu8CellInfoFlag = 0; ueinfo.mu8UeCategory = 1; ueinfo.mstCellInfo = new CELL_INFO_STRU(); ueinfo.mstCellInfo.u16EARFCN = 0; ueinfo.mstCellInfo.u16PCI = 0; ueinfo.muUeIdData = new UEID_DATA_STRU(); ueinfo.muUeIdData.mau8IMSI = new byte[MAX_SIZE_IMSI + 3]; ProTracReq.mstUeInfo.mastUEInfoList[i] = ueinfo; } ProTracReq.mstUeInfo.mastUsimInfoList = new USIM_INFO_STRU[16]; for (int i = 0; i < ProTracReq.mstUeInfo.mastUsimInfoList.Length; i++) { USIM_INFO_STRU usiminfo = new USIM_INFO_STRU(); usiminfo.mau8IMSI = new byte[MAX_SIZE_IMSI + 3]; usiminfo.mau16SimAC = 0; usiminfo.mu8KLengthIndex = 1; usiminfo.mu8Pading = 0; usiminfo.maU8KDATA = new byte[32]; ProTracReq.mstUeInfo.mastUsimInfoList[i] = usiminfo; } //cellsearch mode ProTracReq.mstUeInfo.mu8UESelectMode = mode; ProTracReq.mstUeInfo.mu8TraceUENum = 1; ProTracReq.mstUeInfo.mu8UEIDListCount = 1; ProTracReq.mstUeInfo.mu8KeyGetMode = 0; ProTracReq.mstUeInfo.mu32UeSilenceCheckTimer = 18; ProTracReq.mstCellInfo.mu8RATType = 0; //PROTOCOL_TRACE_CELL_INFO_STRU mstCellInfo ProTracReq.mstCellInfo = new PROTOCOL_TRACE_CELL_INFO_STRU(); ProTracReq.mstCellInfo.mu16CellNumber = 1; ProTracReq.mstCellInfo.mu32PlmnNum = 1; ProTracReq.mstCellInfo.mu8RATType = 0; ProTracReq.mstCellInfo.mu16ProtolLayerSelect = 0x0200; ProTracReq.mstCellInfo.mu16AverageFrameNum = 1; ProTracReq.mstCellInfo.mu16statisticalInfoReportPeriod = 1; ProTracReq.mstCellInfo.mu16CtrlInfoReportPeriod = 1; ProTracReq.mstCellInfo.mu16FreqBandNum = 1; ProTracReq.mstCellInfo.PlmnIdList = new PLMNID_STRU[4]; for (int i = 0; i < ProTracReq.mstCellInfo.PlmnIdList.Length; i++) { PLMNID_STRU plmnid = new PLMNID_STRU(); plmnid.mau8AucMcc = new byte[3] { 4, 6, 0 }; plmnid.mu8Pading1 = 0; plmnid.mau8AucMnc = new byte[2] { 0, 0 }; plmnid.mau8Pading2 = new byte[2] { 0, 0 }; ProTracReq.mstCellInfo.PlmnIdList[i] = plmnid; } CELL_INFO_STRU cellinfo = new CELL_INFO_STRU(); //EARFCN_INFO_STRU earfcninfo = new EARFCN_INFO_STRU(); ProTracReq.mstCellInfo.mu8CellSelectMode = 0; double freq = 0; //int freqIndex = 0; //switch(band) //{ // case "38": // freqIndex = 0; // break; // case "39": // freqIndex = 1; // break; // case "40": // freqIndex = 2; // break; // case "41": // freqIndex = 3; // break; // case "1": // freqIndex = 4; // break; // case "3": // freqIndex = 5; // break; // default: // System.Windows.Forms.MessageBox.Show("错误的band!"); // break; //} try { //freq修改 freq = Global.FreqToEARFCN(Convert.ToInt32(band), Convert.ToDouble(earfcn), 0, 0, 50); if (freq == -1) { freq = 0; } //MessageBox.Show(freq.ToString()); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show("Message=" + ex.Message + "\r\nStacktrace:" + ex.StackTrace); } ProTracReq.mstCellInfo.mu16CellNumber = 1; ProTracReq.mstCellInfo.mu16FreqBandNum = 0; cellinfo.u16EARFCN = Convert.ToUInt16(freq); cellinfo.u16PCI = Convert.ToUInt16(pci); switch (mode) { case 0: ProTracReq.mstCellInfo.mu16ProtolLayerSelect = 515; ProTracReq.mstCellInfo.mu16L1MeasSelect = 8193; break; case 2: ProTracReq.mstCellInfo.mu16ProtolLayerSelect = 515; ProTracReq.mstCellInfo.mu16L1MeasSelect = 8193; break; case 3: ProTracReq.mstCellInfo.mu16ProtolLayerSelect = 515; ProTracReq.mstCellInfo.mu16L1MeasSelect = 8193; break; default: break; } UInt16 mcc = 460; UInt16 mnc = 00; if (mode == 0) { byte[] CRNTIorRRID = new byte[2]; ProTracReq.mstUeInfo.mu8UESelectMode = 0; int ii = 0; int j = 1; ProTracReq.mstUeInfo.mastUEInfoList[0].mu8UEIDTYPE = 1; //GUTI ////////////////////////////////////////////////////////////////////////////0806 ProTracReq.mstUeInfo.mastUEInfoList[0].mu8UEIDLength = 10; byte[] TypeGUTI = new byte[16]; byte[] tempKey = System.Text.Encoding.Default.GetBytes(LTEUnion.TargetInfoLVItem.SubItems[1].Text); for (int i = 0; i < tempKey.Length; i++) { if (tempKey[i] >= '0' && tempKey[i] <= '9') { tempKey[i] = (byte)(tempKey[i] - 48); } else if (tempKey[i] >= 'a' && tempKey[i] <= 'f') { tempKey[i] = (byte)(tempKey[i] - 'a' + 10); } else if (tempKey[i] >= 'A' && tempKey[i] <= 'F') { tempKey[i] = (byte)(tempKey[i] - 'A' + 10); } } for (int num = 5; num < 10; num++) { byte tempValue = (byte)(tempKey[ii] << 4); tempValue &= 0xf0; tempValue |= tempKey[j]; TypeGUTI[num] = tempValue; ii += 2; j += 2; } // TypeGUTI[0] = 0; // TypeGUTI[1] = 0xf1; // TypeGUTI[2] = 0x10; // TypeGUTI[3] = 0; // TypeGUTI[4] = 0; TypeGUTI[0] = (byte)(mnc / 10); TypeGUTI[1] = (byte)(mnc % 10 | 0xf0); TypeGUTI[2] = (byte)(mcc % 10); TypeGUTI[3] = (byte)(mcc % 100 / 10); TypeGUTI[4] = (byte)(mcc / 100); int length; if (TypeGUTI.Length >= 10) { length = 10; } else { length = TypeGUTI.Length; } System.Buffer.BlockCopy(TypeGUTI, 0, ProTracReq.mstUeInfo.mastUEInfoList[0].muUeIdData.mau8GUTI, 0, TypeGUTI.Length); ///////////////////////////////////////////////////////////////////////////0806 } byte[] KDATA = new byte[32]; ProTracReq.mstUeInfo.mastUsimInfoList[0].mu8KLengthIndex = 2; ProTracReq.mstUeInfo.mastUsimInfoList[0].maU8KDATA = KDATA; int DataLength = Marshal.SizeOf(ProTracReq); DataLength = DataLength + Marshal.SizeOf(cellinfo); ProTracReq.mstCellInfo.PlmnIdList[0].mau8AucMcc[0] = (byte)(mcc / 100); ProTracReq.mstCellInfo.PlmnIdList[1].mau8AucMcc[0] = (byte)(mcc / 100); ProTracReq.mstCellInfo.PlmnIdList[2].mau8AucMcc[0] = (byte)(mcc / 100); ProTracReq.mstCellInfo.PlmnIdList[3].mau8AucMcc[0] = (byte)(mcc / 100); ProTracReq.mstCellInfo.PlmnIdList[0].mau8AucMcc[1] = (byte)(mcc % 100 / 10); ProTracReq.mstCellInfo.PlmnIdList[1].mau8AucMcc[1] = (byte)(mcc % 100 / 10); ProTracReq.mstCellInfo.PlmnIdList[2].mau8AucMcc[1] = (byte)(mcc % 100 / 10); ProTracReq.mstCellInfo.PlmnIdList[3].mau8AucMcc[1] = (byte)(mcc % 100 / 10); ProTracReq.mstCellInfo.PlmnIdList[0].mau8AucMcc[2] = (byte)(mcc % 10); ProTracReq.mstCellInfo.PlmnIdList[1].mau8AucMcc[2] = (byte)(mcc % 10); ProTracReq.mstCellInfo.PlmnIdList[2].mau8AucMcc[2] = (byte)(mcc % 10); ProTracReq.mstCellInfo.PlmnIdList[3].mau8AucMcc[2] = (byte)(mcc % 10); ProTracReq.mstCellInfo.PlmnIdList[0].mau8AucMnc[0] = (byte)(mnc / 10); ProTracReq.mstCellInfo.PlmnIdList[1].mau8AucMnc[0] = (byte)(mnc / 10); ProTracReq.mstCellInfo.PlmnIdList[2].mau8AucMnc[0] = (byte)(mnc / 10); ProTracReq.mstCellInfo.PlmnIdList[3].mau8AucMnc[0] = (byte)(mnc / 10); ProTracReq.mstCellInfo.PlmnIdList[0].mau8AucMnc[1] = (byte)(mnc % 10); ProTracReq.mstCellInfo.PlmnIdList[1].mau8AucMnc[1] = (byte)(mnc % 10); ProTracReq.mstCellInfo.PlmnIdList[2].mau8AucMnc[1] = (byte)(mnc % 10); ProTracReq.mstCellInfo.PlmnIdList[3].mau8AucMnc[1] = (byte)(mnc % 10); //消息头中的消息长度 ProTracReq.msgHeader.MsgLen = (UInt16)((DataLength - 12) / 4); CustomDataEvtArg testOKArgs = new CustomDataEvtArg(); testOKArgs.data = new byte[DataLength]; int reqlength = Marshal.SizeOf(ProTracReq); byte[] reqdata = new byte[reqlength]; IntPtr intptr = Marshal.AllocHGlobal(reqlength); Marshal.StructureToPtr(ProTracReq, intptr, true); Marshal.Copy(intptr, reqdata, 0, reqlength); Marshal.FreeHGlobal(intptr); System.Buffer.BlockCopy(reqdata, 0, testOKArgs.data, 0, reqlength); int cellinfolength = Marshal.SizeOf(cellinfo); byte[] cellinfodata1 = new byte[cellinfolength]; IntPtr ptr = Marshal.AllocHGlobal(cellinfolength); Marshal.StructureToPtr(cellinfo, ptr, true); Marshal.Copy(ptr, cellinfodata1, 0, cellinfolength); Marshal.FreeHGlobal(ptr); System.Buffer.BlockCopy(cellinfodata1, 0, testOKArgs.data, reqlength, cellinfolength); testOKArgs.deivceName = "AGT"; testOKArgs.moduleName = "ProtocolTrace"; testOKArgs.readyModule = "ProtocolTrace"; //Global.tempClass.Ready(sender, testOKArgs); Global.ProTracReq = testOKArgs.data; Global.ReadyModule = "ProtocolTrace"; //Global.tempClass.Ready(sender, testOKArgs); return(testOKArgs); }
private void SysParaBtn_Click(object sender, EventArgs e) { MsgDefine.RecvSysParaBitStream RecvSysPara = new MsgDefine.RecvSysParaBitStream(); RecvSysPara.head.head = 0xffff; RecvSysPara.head.pkt_type = (ushort)MsgDefine.RecvPktType.RECV_SYS_PARA; RecvSysPara.head.data_length = (uint)(Marshal.SizeOf(RecvSysPara) - 8); RecvSysPara.paraSysNo = Convert.ToByte(textBox7.Text); if (textBox8.Text.Length == 3) { byte[] mcc = new byte[3]; mcc[0] = Convert.ToByte(textBox8.Text.Substring(0, 1)); mcc[1] = Convert.ToByte(textBox8.Text.Substring(1, 1)); mcc[2] = Convert.ToByte(textBox8.Text.Substring(2, 1)); RecvSysPara.paraMcc = mcc; } else { MessageBox.Show("请填入正确的MCC"); return; } switch (comboBox1.SelectedIndex) { case 0: RecvSysPara.paraMnc = new byte[2] { 0, 0 }; break; case 1: RecvSysPara.paraMnc = new byte[2] { 0, 2 }; break; case 2: RecvSysPara.paraMnc = new byte[2] { 0, 7 }; break; case 3: RecvSysPara.paraMnc = new byte[2] { 0, 1 }; break; case 4: RecvSysPara.paraMnc = new byte[2] { 0, 6 }; break; case 5: RecvSysPara.paraMnc = new byte[2] { 0, 3 }; break; case 6: RecvSysPara.paraMnc = new byte[2] { 0, 5 }; break; case 7: RecvSysPara.paraMnc = new byte[2] { 1, 1 }; break; } RecvSysPara.paraPciNo = Convert.ToUInt16(textBox9.Text); RecvSysPara.paraTac = Convert.ToUInt16(textBox10.Text); RecvSysPara.CellId = Convert.ToUInt32(textBox11.Text); RecvSysPara.TaiPeri = Convert.ToUInt32(textBox12.Text); RecvSysPara.paraIDReqNumOUT = Convert.ToByte(textBox23.Text); RecvSysPara.paraIDReqNumIN = Convert.ToByte(textBox13.Text); RecvSysPara.UEcapaEnquiryNumOUT = Convert.ToByte(textBox24.Text); RecvSysPara.UEcapaEnquiryNumIN = Convert.ToByte(textBox14.Text); if (checkBox7.Checked) { RecvSysPara.BoolMeasureOUT = 1; } else { RecvSysPara.BoolMeasureOUT = 0; } if (checkBox6.Checked) { RecvSysPara.BoolMeasureIN = 1; } else { RecvSysPara.BoolMeasureIN = 0; } switch (comboBox4.SelectedIndex) { case 0: RecvSysPara.paraTAURejCauOUT = 2; break; case 1: RecvSysPara.paraTAURejCauOUT = 3; break; case 2: RecvSysPara.paraTAURejCauOUT = 5; break; case 3: RecvSysPara.paraTAURejCauOUT = 6; break; case 4: RecvSysPara.paraTAURejCauOUT = 11; break; case 5: RecvSysPara.paraTAURejCauOUT = 12; break; case 6: RecvSysPara.paraTAURejCauOUT = 13; break; case 7: RecvSysPara.paraTAURejCauOUT = 15; break; case 8: RecvSysPara.paraTAURejCauOUT = 17; break; case 9: RecvSysPara.paraTAURejCauOUT = 22; break; } switch (comboBox2.SelectedIndex) { case 0: RecvSysPara.paraTAURejCauIN = 2; break; case 1: RecvSysPara.paraTAURejCauIN = 3; break; case 2: RecvSysPara.paraTAURejCauIN = 5; break; case 3: RecvSysPara.paraTAURejCauIN = 6; break; case 4: RecvSysPara.paraTAURejCauIN = 11; break; case 5: RecvSysPara.paraTAURejCauIN = 12; break; case 6: RecvSysPara.paraTAURejCauIN = 13; break; case 7: RecvSysPara.paraTAURejCauIN = 15; break; case 8: RecvSysPara.paraTAURejCauIN = 17; break; case 9: RecvSysPara.paraTAURejCauIN = 22; break; } switch (comboBox5.SelectedIndex) { case 0: RecvSysPara.paraATTRejCauOUT = 2; break; case 1: RecvSysPara.paraATTRejCauOUT = 3; break; case 2: RecvSysPara.paraATTRejCauOUT = 5; break; case 3: RecvSysPara.paraATTRejCauOUT = 6; break; case 4: RecvSysPara.paraATTRejCauOUT = 11; break; case 5: RecvSysPara.paraATTRejCauOUT = 12; break; case 6: RecvSysPara.paraATTRejCauOUT = 13; break; case 7: RecvSysPara.paraATTRejCauOUT = 15; break; case 8: RecvSysPara.paraATTRejCauOUT = 17; break; case 9: RecvSysPara.paraATTRejCauOUT = 22; break; } switch (comboBox3.SelectedIndex) { case 0: RecvSysPara.paraATTRejCauIN = 2; break; case 1: RecvSysPara.paraATTRejCauIN = 3; break; case 2: RecvSysPara.paraATTRejCauIN = 5; break; case 3: RecvSysPara.paraATTRejCauIN = 6; break; case 4: RecvSysPara.paraATTRejCauIN = 11; break; case 5: RecvSysPara.paraATTRejCauIN = 12; break; case 6: RecvSysPara.paraATTRejCauIN = 13; break; case 7: RecvSysPara.paraATTRejCauIN = 15; break; case 8: RecvSysPara.paraATTRejCauIN = 17; break; case 9: RecvSysPara.paraATTRejCauIN = 22; break; } RecvSysPara.redirectedRATOUT = (byte)(comboBox7.SelectedIndex); RecvSysPara.redirectedCarrierOUT = Convert.ToUInt16(textBox18.Text); RecvSysPara.PriorityOUT = Convert.ToByte(textBox19.Text); RecvSysPara.redirectedRATIN = (byte)(comboBox6.SelectedIndex); RecvSysPara.redirectedCarrierIN = Convert.ToUInt16(textBox15.Text); RecvSysPara.PriorityIN = Convert.ToByte(textBox16.Text); RecvSysPara.redirectedCellIN = Convert.ToByte(textBox17.Text); int lengthRecvSysPara = Marshal.SizeOf(RecvSysPara); byte[] dataRecvSysPara = new byte[lengthRecvSysPara]; IntPtr intPtr = Marshal.AllocHGlobal(lengthRecvSysPara); Marshal.StructureToPtr(RecvSysPara, intPtr, true); Marshal.Copy(intPtr, dataRecvSysPara, 0, lengthRecvSysPara); Marshal.FreeHGlobal(intPtr); CustomDataEvtArg dataEvtArg = new CustomDataEvtArg(); dataEvtArg.data = dataRecvSysPara; dataEvtArg.deivceName = COM.ZCTT.AGI.Common.Global.GCurrentDevice; for (int i = 0; i < dataRecvSysPara.Length; i++) { System.Diagnostics.Debug.WriteLine(dataRecvSysPara[i]); } COM.ZCTT.AGI.Common.Global.tempClass.SendDataToDevice(sender, dataEvtArg); }
/// <summary> /// 确定按钮单击时的处理方法 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button_OK_Click(object sender, EventArgs e) { try { Device thisDevice = new Device(); foreach (Device tempDevice in DeviceManger.deviceList) { if (tempDevice.DeviceName == this.comboBox_DeviceName.Text.Trim()) { thisDevice = tempDevice; break; } } if (this.comboBox_WorkMode.Text.Trim() == "CellScan") { thisDevice.DeviceWorkModel = (byte)COM.ZCTT.AGI.Common.Global.WorkModeValue.CellScan; } else if (this.comboBox_WorkMode.Text.Trim() == "ProtocolTrack") { thisDevice.DeviceWorkModel = (byte)COM.ZCTT.AGI.Common.Global.WorkModeValue.ProtocolTrack; } if (this.comboBox_InterfaceType.Text.Trim() == "LAN") { thisDevice.PortType = (byte)COM.ZCTT.AGI.Common.Global.PortTypeValue.LAN; thisDevice.IpAddress = this.textBox_IpAddress.Text.Trim(); thisDevice.DataPortNum = int.Parse(this.textBox_DataPortNum.Text.Trim()); thisDevice.MessagePortNum = int.Parse(this.textBox_MsgPortNum.Text.Trim()); } else if (this.comboBox_InterfaceType.Text.Trim() == "USB") { thisDevice.PortType = (byte)COM.ZCTT.AGI.Common.Global.PortTypeValue.USB; } if (this.comboBox_OutDataType.Text.Trim() == "IQ") { thisDevice.OutputDataType = (byte)COM.ZCTT.AGI.Common.Global.OutDataTypeValue.IQ; } else if (this.comboBox_OutDataType.Text.Trim() == "TestData") { thisDevice.OutputDataType = (byte)COM.ZCTT.AGI.Common.Global.OutDataTypeValue.TestData; } else if (this.comboBox_OutDataType.Text.Trim() == "MeasuringData") { thisDevice.OutputDataType = (byte)COM.ZCTT.AGI.Common.Global.OutDataTypeValue.MeasuringData; } else if (this.comboBox_OutDataType.Text.Trim() == "LayerOutData") { thisDevice.OutputDataType = (byte)COM.ZCTT.AGI.Common.Global.OutDataTypeValue.LayerOutData; } if (this.comboBox_DataStoreMode.Text.Trim() == "ExternalStore") { thisDevice.DataStoreMode = (byte)COM.ZCTT.AGI.Common.Global.DataSaveMode.ExternalStore; } else if (this.comboBox_DataStoreMode.Text.Trim() == "TimingSave") { thisDevice.DataStoreMode = (byte)COM.ZCTT.AGI.Common.Global.DataSaveMode.TimingSave; } else if (this.comboBox_DataStoreMode.Text.Trim() == "StoredContiguously") { thisDevice.DataStoreMode = (byte)COM.ZCTT.AGI.Common.Global.DataSaveMode.StoredContiguously; } else if (this.comboBox_DataStoreMode.Text.Trim() == "TriggerSave") { thisDevice.DataStoreMode = (byte)COM.ZCTT.AGI.Common.Global.DataSaveMode.TriggerSave; } if (this.textBox_DataStoreTime.Text.Length != 0) { thisDevice.DataStoreTime = UInt16.Parse(this.textBox_DataStoreTime.Text.Trim()); } if (this.comboBox_SaveDataType.Text.Trim() == "CSV") { thisDevice.DataStoreType = (byte)COM.ZCTT.AGI.Common.Global.DataSaveType.CSV; } else if (this.comboBox_SaveDataType.Text.Trim() == "TXT") { thisDevice.DataStoreType = (byte)COM.ZCTT.AGI.Common.Global.DataSaveType.TXT; } if (checkBox1.Enabled && checkBox1.Checked) { if (MessageBox.Show("Are you sure to reset IP and Port of this device?", "", MessageBoxButtons.OKCancel) == DialogResult.OK) { #region reset AGT ip and prot ,edit at 20141110 PC_AG_RENEW_IP_REQ stu_PC_AG_RENEW_IP_REQ = new PC_AG_RENEW_IP_REQ(); stu_PC_AG_RENEW_IP_REQ.msgHeader.Reserved = 0; stu_PC_AG_RENEW_IP_REQ.msgHeader.Source = 3; stu_PC_AG_RENEW_IP_REQ.msgHeader.Destination = 2; stu_PC_AG_RENEW_IP_REQ.msgHeader.MessageType = 0x4008; stu_PC_AG_RENEW_IP_REQ.msgHeader.TransactionID = 0; stu_PC_AG_RENEW_IP_REQ.msgHeader.MsgLen = (UInt16)((Marshal.SizeOf(stu_PC_AG_RENEW_IP_REQ) - 12) / 4); //stu_PC_AG_RENEW_IP_REQ.mau8AgtPort0Num = new byte[4]; //stu_PC_AG_RENEW_IP_REQ.mau8AgtPort1Num = new byte[4]; stu_PC_AG_RENEW_IP_REQ.mau8AgtPort0Num = Convert.ToUInt32(thisDevice.DataPortNum); stu_PC_AG_RENEW_IP_REQ.mau8AgtPort1Num = Convert.ToUInt32(thisDevice.MessagePortNum); stu_PC_AG_RENEW_IP_REQ.mau8AgtIPAdress = new byte[4]; //for (int i = 0; i < 4; i++) //{ // stu_PC_AG_RENEW_IP_REQ.mau8AgtPort0Num[i] = GetByte(thisDevice.DataPortNum, i); // stu_PC_AG_RENEW_IP_REQ.mau8AgtPort1Num[i] = GetByte(thisDevice.MessagePortNum, i); //} string[] s = thisDevice.IpAddress.Split(new char[] { '.' }); for (int i = 0; i < 4; i++) { stu_PC_AG_RENEW_IP_REQ.mau8AgtIPAdress[i] = Convert.ToByte(s[i]); } stu_PC_AG_RENEW_IP_REQ.mu32AgtGateAdress = 0; stu_PC_AG_RENEW_IP_REQ.mu32AgtMacAdress = 0; byte[] configData = new byte[1024]; byte[] tempBytes; int dstOffset = 0; //Head tempBytes = BitConverter.GetBytes(stu_PC_AG_RENEW_IP_REQ.msgHeader.Reserved); Buffer.BlockCopy(tempBytes, 0, configData, dstOffset, 4); dstOffset = dstOffset + 4; configData[dstOffset] = stu_PC_AG_RENEW_IP_REQ.msgHeader.Source; dstOffset++; configData[dstOffset] = stu_PC_AG_RENEW_IP_REQ.msgHeader.Destination; dstOffset++; tempBytes = BitConverter.GetBytes(stu_PC_AG_RENEW_IP_REQ.msgHeader.MessageType); Buffer.BlockCopy(tempBytes, 0, configData, dstOffset, 2); dstOffset = dstOffset + 2; tempBytes = BitConverter.GetBytes(stu_PC_AG_RENEW_IP_REQ.msgHeader.TransactionID); Buffer.BlockCopy(tempBytes, 0, configData, dstOffset, 2); dstOffset = dstOffset + 2; tempBytes = BitConverter.GetBytes(stu_PC_AG_RENEW_IP_REQ.msgHeader.MsgLen); Buffer.BlockCopy(tempBytes, 0, configData, dstOffset, 2); dstOffset = dstOffset + 2; //Body tempBytes = BitConverter.GetBytes(stu_PC_AG_RENEW_IP_REQ.mu32ModefyMode); Buffer.BlockCopy(tempBytes, 0, configData, dstOffset, 4); dstOffset = dstOffset + 4; tempBytes = BitConverter.GetBytes(stu_PC_AG_RENEW_IP_REQ.mau8AgtPort0Num); Buffer.BlockCopy(tempBytes, 0, configData, dstOffset, 4); dstOffset = dstOffset + 4; tempBytes = BitConverter.GetBytes(stu_PC_AG_RENEW_IP_REQ.mau8AgtPort1Num); Buffer.BlockCopy(tempBytes, 0, configData, dstOffset, 4); dstOffset = dstOffset + 4; //configData[dstOffset] = stu_PC_AG_RENEW_IP_REQ.mau8AgtPort0Num[0]; //dstOffset++; //configData[dstOffset] = stu_PC_AG_RENEW_IP_REQ.mau8AgtPort0Num[1]; //dstOffset++; //configData[dstOffset] = stu_PC_AG_RENEW_IP_REQ.mau8AgtPort0Num[2]; //dstOffset++; //configData[dstOffset] = stu_PC_AG_RENEW_IP_REQ.mau8AgtPort0Num[3]; //dstOffset++; //configData[dstOffset] = stu_PC_AG_RENEW_IP_REQ.mau8AgtPort1Num[0]; //dstOffset++; //configData[dstOffset] = stu_PC_AG_RENEW_IP_REQ.mau8AgtPort1Num[1]; //dstOffset++; //configData[dstOffset] = stu_PC_AG_RENEW_IP_REQ.mau8AgtPort1Num[2]; //dstOffset++; //configData[dstOffset] = stu_PC_AG_RENEW_IP_REQ.mau8AgtPort1Num[3]; //dstOffset++; configData[dstOffset] = stu_PC_AG_RENEW_IP_REQ.mau8AgtIPAdress[0]; dstOffset++; configData[dstOffset] = stu_PC_AG_RENEW_IP_REQ.mau8AgtIPAdress[1]; dstOffset++; configData[dstOffset] = stu_PC_AG_RENEW_IP_REQ.mau8AgtIPAdress[2]; dstOffset++; configData[dstOffset] = stu_PC_AG_RENEW_IP_REQ.mau8AgtIPAdress[3]; dstOffset++; tempBytes = BitConverter.GetBytes(stu_PC_AG_RENEW_IP_REQ.mu32AgtGateAdress); Buffer.BlockCopy(tempBytes, 0, configData, dstOffset, 4); dstOffset = dstOffset + 4; tempBytes = BitConverter.GetBytes(stu_PC_AG_RENEW_IP_REQ.mu32AgtMacAdress); Buffer.BlockCopy(tempBytes, 0, configData, dstOffset, 4); dstOffset = dstOffset + 4; tempBytes = new byte[dstOffset]; System.Buffer.BlockCopy(configData, 0, tempBytes, 0, dstOffset); CustomDataEvtArg cusArg = new CustomDataEvtArg(); cusArg.data = tempBytes; cusArg.deivceName = comboBox_DeviceName.Text; Global.tempClass.SendDataToDevice(sender, cusArg); //////////////////////////////////////////// #endregion } } this.Close(); if (AGIInterface.Class1.OnChangeDeviceInfoList != null) { AGIInterface.Class1.OnChangeDeviceInfoList(this.comboBox_DeviceName.Text.Trim()); } } catch (Exception ex) { MessageBox.Show("Instrument configuration is exception:" + ex.Message); } }
private void UeInfoReceived(object sender, CustomDataEvtArg ce) { if (this.InvokeRequired) { try { this.BeginInvoke(new Class1.SendUeInfoToMainFormHandler(UeInfoReceived), sender, ce); } catch { } } else { MsgDefine.SendUeInfo UeInfo = new MsgDefine.SendUeInfo(); int lengthUeInfo = Marshal.SizeOf(UeInfo); if (lengthUeInfo > ce.data.Length) { return; } IntPtr intptr = Marshal.AllocHGlobal(lengthUeInfo); Marshal.Copy(ce.data, 0, intptr, lengthUeInfo); UeInfo = (MsgDefine.SendUeInfo)Marshal.PtrToStructure(intptr, typeof(MsgDefine.SendUeInfo)); Marshal.FreeHGlobal(intptr); String imsi = ""; for (int i = 0; i < 16; i++) { imsi += UeInfo.ueImsi[i]; } String imei = ""; for (int i = 0; i < 16; i++) { imei += UeInfo.ueImei[i]; } String sTmsi = ""; for (int i = 0; i < 12; i++) { sTmsi += UeInfo.ueSTmsi[i]; } String taType = ""; switch (UeInfo.ueTaType) { case 1: taType = "EpsAtt"; break; case 2: taType = "EPSImsiAtt"; break; case 6: taType = "EpsEmerAtt"; break; case 16: taType = "TAu"; break; case 17: taType = "TaLau"; break; case 18: taType = "TaLauImsi"; break; case 19: taType = "PeriU"; break; case 24: taType = "TaUBr"; break; case 25: taType = "TaLaUBr"; break; case 26: taType = "TaLaImsiBr"; break; case 27: taType = "PeriUBr"; break; } String ueType = ""; switch (UeInfo.ueType) { case 0: ueType = "LTE"; break; case 1: ueType = "LTE/GSM"; break; case 2: ueType = "LTE/CDMA2000"; break; case 3: ueType = "LTE/CDMA2000/GSM"; break; case 4: ueType = "LTE/TD-S"; break; case 5: ueType = "LTE/TD-S/GSM"; break; case 6: ueType = "LTE/TD-S/CDMA2000"; break; case 7: ueType = "LTE/TD-S/CDMA2000/GSM"; break; case 8: ueType = "LTE/WCDMA"; break; case 9: ueType = "LTE/WCDMA/GSM"; break; case 10: ueType = "LTE/WCDMA/CDMA2000"; break; case 11: ueType = "LTE/WCDMA/CDMA2000/GSM"; break; case 12: ueType = "LTE/WCDMA/TD-S"; break; case 13: ueType = "LTE/WCDMA/TD-S/GSM"; break; case 14: ueType = "LTE/WCDMA/TD-S/CDMA2000"; break; case 15: ueType = "LTE/WCDMA/TD-S/CDMA2000/GSM"; break; } String taTime = DateTime.Now.ToString(); byte pwrNo = UeInfo.uePwrNo; double avePwr = 0; for (byte i = 0; i < pwrNo; i++) { avePwr += UeInfo.uePwr[i]; } avePwr = avePwr / pwrNo - 135; //foreach(ListViewItem item in this.listView1.Items) //{ // if (imsi == item.SubItems[0].Text) // { // item.SubItems[1].Text = imei; // item.SubItems[2].Text = sTmsi; // item.SubItems[3].Text = taType; // item.SubItems[4].Text = ueType; // item.SubItems[5].Text = taTime; // item.SubItems[6].Text = (Convert.ToInt32(item.SubItems[6].Text) + 1).ToString(); // this.listView1.Items.Add(item); // return; // } ListViewItem item = new ListViewItem(new String[8]); item.SubItems[0].Text = imsi; item.SubItems[1].Text = imei; item.SubItems[2].Text = sTmsi; item.SubItems[3].Text = taType; item.SubItems[4].Text = ueType; item.SubItems[5].Text = taTime; item.SubItems[6].Text = pwrNo.ToString(); item.SubItems[7].Text = avePwr.ToString() + "dbm"; this.listView1.Items.Add(item); //} } }
/// <summary> /// ACK处理 /// </summary> /// <param name="buffer">接收ACK的buffer</param> /// <param name="receiveDateLength">接收的数据长度</param> /// <returns></returns> private int AckDataHander(byte[] buffer, int receiveDateLength) { if (receiveDateLength >= 12) { UInt16 msgLength = System.BitConverter.ToUInt16(buffer, 10); int bodyCount = msgLength * 4; if (bodyCount == 4) //标准ACK响应 { if (buffer[12] == 1) //ACK失败 { MessageBox.Show("Message ACK failed!"); return(1); } } //需要特殊处理的ACK响应 UInt16 msgType = System.BitConverter.ToUInt16(buffer, 6); System.Diagnostics.Debug.WriteLine(" receive a ACK ,msg type : " + Convert.ToString(msgType, 16)); /////////////////////////////////////// if (Convert.ToString(msgType, 16) == "ffff" && receiveDateLength == 12 && buffer[0] == 0x48 && buffer[1] == 0xc && buffer[2] == 0xf4 && buffer[3] == 0x7e && buffer[4] == 0x2 && buffer[5] == 0x4 && buffer[6] == 0xff && buffer[7] == 0xff && buffer[8] == 0 && buffer[9] == 0 && buffer[10] == 0 && buffer[11] == 0) { //######查看收到的0000消息######## //AGIInterface.CustomDataEvtArg ce = new CustomDataEvtArg(); //ce.data = buffer; //Global.tempClass.SendDataToDebug(this, ce); //##################### MessageBox.Show("The Instrument has been connected by another AGI!"); if (AGIInterface.Class1.OnChangeDeviceInfoList != null) { AGIInterface.Class1.OnChangeDeviceInfoList("exception"); } } else { if (connectcount == 0) { if (ConnectionState == (byte)Global.DeviceStateValue.Disconnection) { //如果连接成功,改变设备底色为绿色 if (AGIInterface.Class1.OnConnOk != null) { AGIInterface.Class1.OnConnOk(this.deviceName); } //SendStatusToMainForm(); } } } ////////////////////////////////////////// switch (msgType) { case COM.ZCTT.AGI.Common.AGIMsgDefine.AG_PC_PROTOCOL_TRACE_REL_ACK_MSG_TYPE: case COM.ZCTT.AGI.Common.AGIMsgDefine.L1_AG_PROTOCOL_TRACE_REL_ACK_MSG_TYPE: { AGIInterface.CustomDataEvtArg ce = new CustomDataEvtArg(); ce.deivceName = Global.GCurrentDevice; Global.tempClass.SendACKToCellSearch(this, ce); break; } //获取设备状态消息的ACK消息 case COM.ZCTT.AGI.Common.AGIMsgDefine.AG_PC_GET_AGT_INFO_REQ_ACK_MSG_TYPE: { this.deviceInstrumentState = buffer[12]; this.deviceWorkModel = buffer[13]; this.PortType = buffer[14]; this.OutputDataType = buffer[15]; this.DataStoreMode = buffer[16]; if (this.deviceInstrumentState == 1) { if (this.deviceWorkModel == 1) { Global.testMode = Global.TestMode.RealTime; Global.ReadyModule = "ProtocolTrace"; } else if (this.deviceWorkModel == 2) { //Global.testMode = Global.TestMode.CellScan; //Global.CRModule = "CellScan"; } else if (this.deviceWorkModel == 3) { //Global.testMode = Global.TestMode.CellScan; //Global.CRModule = "UnSpCellScan"; } } else { } //按照新的接口协议,下面的处理是错误的,如果需要获取值,请参看新接口协议 //16 saveTime = System.BitConverter.ToUInt16(buffer,20); //this.dataStoreTime = saveTime; //this.remainingPower =Convert.ToInt16((byte)buffer[19]).ToString();UInt if (this.deviceInstrumentState == 1) { if (Global.isReboot == true) { byte[] stop = new byte[] { }; if (this.deviceWorkModel == 1) { stop = new byte[] { 0, 0, 0, 0, 4, 2, 0x0c, 0x40, 1, 0, 0, 0 }; //加消息头。。 } else if (this.deviceWorkModel == 2) { stop = new byte[] { 0, 0, 0, 0, //reserved 1, //srdID 0, //destID 0x03, //msgType 0x40, 0, //transactionID 0, 0, //msgLen 0 }; } else if (this.deviceWorkModel == 3) { stop = new byte[] { 0, 0, 0, 0, //reserved 1, //srdID 0, //destID 0x05, //msgType 0x40, 0, //transactionID 0, 0, //msgLen 0 }; } sendMessage(stop); // CloseDeviceConn(); } } //发送设备状态信息到主程序 SendStatusToMainForm(); break; } default: break; } } else { System.Diagnostics.Debug.WriteLine("ACK is not the right format!"); } return(0); }
/// <summary> /// 数据接收线程 /// </summary> private void DataRecvThread() { dataRecvClient = new TcpClient(); try { dataRecvClient.Connect(ipAddress, dataPortNum); dataRecvClient.ReceiveBufferSize = 30000000;//edit by zhouyt 20140723 dataStrem = dataRecvClient.GetStream(); } catch (Exception ex) { Console.WriteLine(">>>Message= " + ex.Message + "\r\n StrackTrace: " + ex.StackTrace); CloseDeviceConn(); ////////////////////////////////// SendStatusToMainForm(); if (AGIInterface.Class1.OnChangeDeviceInfoList != null) { AGIInterface.Class1.OnChangeDeviceInfoList("exception"); } //////////////////////////////////// } while (true) { try { byte[] dataBuffer = new byte[10240]; int headerLen = dataStrem.Read(dataBuffer, 0, 8); //先收头,再收数据 lastTime = DateTime.Now;//收到任何数据都表示没有断开连接 while (headerLen < 8) { headerLen += dataStrem.Read(dataBuffer, headerLen, 8 - headerLen); } if (System.BitConverter.ToUInt16(dataBuffer, 0) != 0xffff) { continue; } //用于区分消息所属设备,12.10 string str2 = ""; //byte[] byteArray = new byte[4]; for (int i = 0; i < DeviceName.Length; i++) { if ((DeviceName[i] >= '0') && (DeviceName[i] <= '9')) { str2 += DeviceName[i]; } } //byteArray = System.Text.Encoding.Default.GetBytes(str2); //Array.Copy(byteArray, dataBuffer, 4); ////for test string str = "设备" + str2; // string str = "AGT"+System.Text.Encoding.ASCII.GetString(byteArray); Console.WriteLine("消息所属设备:" + str); UInt32 msgLength = System.BitConverter.ToUInt32(dataBuffer, 4); UInt16 msgType = System.BitConverter.ToUInt16(dataBuffer, 2); int bodyCount = (int)msgLength; int bodyReadLen = dataStrem.Read(dataBuffer, 8, bodyCount); lastTime = DateTime.Now; //收到任何数据都表示没有断开连接 while (bodyReadLen < bodyCount) //如果一次没有接收完成再继续接收 { bodyReadLen += dataStrem.Read(dataBuffer, 8 + bodyReadLen, bodyCount - bodyReadLen); } lastTime = DateTime.Now;//收到任何数据都表示没有断开连接 int receivedDataLength = bodyReadLen + 8; byte[] receivedData = new byte[receivedDataLength]; Array.Copy(dataBuffer, receivedData, receivedDataLength); //Debug Output System.Diagnostics.Debug.WriteLine("receive a data , msgType : " + Convert.ToString(msgType, 16) + " dataLength : " + receivedDataLength); switch (msgType) { case (ushort)COM.ZCTT.AGI.Common.MsgDefine.SendPktType.SEND_HEART_BEAT: //1 { heartBeatCount++; Global.tempClass.HeartBeatCount(heartBeatCount); connectcount = 0; break; } case (ushort)COM.ZCTT.AGI.Common.MsgDefine.SendPktType.SEND_UE_INFO: //2 { CustomDataEvtArg ce = new CustomDataEvtArg(); ce.data = receivedData; Global.tempClass.SendUeInfoToMainForm(this, ce); break; } case (ushort)COM.ZCTT.AGI.Common.MsgDefine.SendPktType.SEND_REQ_CNF: //3 { ushort cnfType = System.BitConverter.ToUInt16(receivedData, 10); ushort cnfInd = System.BitConverter.ToUInt16(receivedData, 12); switch (cnfType) { case (ushort)COM.ZCTT.AGI.Common.MsgDefine.RecvPktType.RECV_SYS_PARA: //系统参数,MCC、MNC等 { if (cnfInd == 0) { MessageBox.Show("系统参数发送成功"); } else { MessageBox.Show("系统参数发送失败"); } break; } case (ushort)COM.ZCTT.AGI.Common.MsgDefine.RecvPktType.RECV_SYS_OPTION: //系统选项,如是否上报IMEI等 { if (cnfInd == 0) { MessageBox.Show("系统选项发送成功"); } else { MessageBox.Show("系统选项发送失败"); } break; } case (ushort)COM.ZCTT.AGI.Common.MsgDefine.RecvPktType.RECV_DLRX_PARA: //下行接收参数,用于获取公网信息 { if (cnfInd == 0) { MessageBox.Show("下行测试参数发送成功"); } else { MessageBox.Show("下行测试参数发送失败"); } break; } case (ushort)COM.ZCTT.AGI.Common.MsgDefine.RecvPktType.RECV_NC_PARA: //邻区表参数 { if (cnfInd == 0) { Global.tempClass.NcSniffStatus(0); } else if (cnfInd == 1) { Global.tempClass.NcSniffStatus(1); } break; } case (ushort)COM.ZCTT.AGI.Common.MsgDefine.RecvPktType.RECV_IB_OPER: //IMSI库处理 { if (cnfInd == 0) { Global.tempClass.IBOPERStatus(0); } else if (cnfInd == 1) { Global.tempClass.IBOPERStatus(1); MessageBox.Show("IMSI操作失败,请重新操作!"); } else if (cnfInd == 2) { Global.tempClass.IBOPERStatus(1); MessageBox.Show("IMSI操作失败,请重新操作!"); } break; } case (ushort)COM.ZCTT.AGI.Common.MsgDefine.RecvPktType.RECV_CTRL_CMD: //寻呼控制命令 { if (cnfInd == 0) { MessageBox.Show("寻呼命令发送成功"); } else { MessageBox.Show("寻呼命令发送失败"); } break; } case (ushort)COM.ZCTT.AGI.Common.MsgDefine.RecvPktType.RECV_RF_PARA: //射频参数,如频点、功率等 { if (cnfInd == 0) { MessageBox.Show("射频参数发送成功"); } else { MessageBox.Show("射频参数发送失败"); } break; } case (ushort)COM.ZCTT.AGI.Common.MsgDefine.RecvPktType.RECV_QUERY_VER: //查询版本 case (ushort)COM.ZCTT.AGI.Common.MsgDefine.RecvPktType.RECV_RX_PARA: //接收参数,如RACH接收功率门限等 case (ushort)COM.ZCTT.AGI.Common.MsgDefine.RecvPktType.RECV_NEW_TAC: //重新获取新的MCC、MNC、TAC和Cell ID case (ushort)COM.ZCTT.AGI.Common.MsgDefine.RecvPktType.RECV_NOW_PARA: //获取当前设备内的参数 case (ushort)COM.ZCTT.AGI.Common.MsgDefine.RecvPktType.RECV_HEART_BEAT_CNF: //心跳包确认 case (ushort)COM.ZCTT.AGI.Common.MsgDefine.RecvPktType.RECV_DEV_STATE: //返回设备状态 case (ushort)COM.ZCTT.AGI.Common.MsgDefine.RecvPktType.RECV_REDIRECT_R9: //case (ushort)COM.ZCTT.AGI.Common.MsgDefine.RecvPktType.RECV_REBOOT_ENB: break; } break; } case (ushort)COM.ZCTT.AGI.Common.MsgDefine.SendPktType.SEND_NOW_PARA: //4 break; case (ushort)COM.ZCTT.AGI.Common.MsgDefine.SendPktType.SEND_PAGING_PWR: //5 { if (CtrlCmdFormIsClosed) { CustomDataEvtArg ce = new CustomDataEvtArg(); ce.data = receivedData; Global.tempClass.SendPagingPwrToCtrlForm(this, ce); } break; } case (ushort)COM.ZCTT.AGI.Common.MsgDefine.SendPktType.SEND_DEV_VERSION: //7 { MsgDefine.SendDevVersion DevVersion = new MsgDefine.SendDevVersion(); int lengthDevVersion = Marshal.SizeOf(DevVersion); if (lengthDevVersion > receivedData.Length) { return; } IntPtr intptr = Marshal.AllocHGlobal(lengthDevVersion); Marshal.Copy(receivedData, 0, intptr, lengthDevVersion); DevVersion = (MsgDefine.SendDevVersion)Marshal.PtrToStructure(intptr, typeof(MsgDefine.SendDevVersion)); Marshal.FreeHGlobal(intptr); String fpgaVersion = ""; for (int i = 0; i < 4; i++) { fpgaVersion += DevVersion.fpgaVersion[i]; } String bbuVersion = ""; for (int i = 0; i < 4; i++) { bbuVersion += DevVersion.BBUVersion[i].ToString(); } String SoftWareVersion = ""; for (int i = 0; i < DevVersion.SoftWareVersion.Length; i++) { if (DevVersion.SoftWareVersion[i] != '\0') { SoftWareVersion += DevVersion.SoftWareVersion[i].ToString(); } } MessageBox.Show("FPGA版本:" + fpgaVersion + "\n" + "BBU版本 :" + bbuVersion + "\n" + "软件版本 :" + SoftWareVersion + "\n"); break; } //case (ushort)COM.ZCTT.AGI.Common.MsgDefine.SendPktType.SEND_DL_SNIFF: default: break; } //if (msgType != 0x8002)//心跳信息 //{ if (AGIInterface.Class1.OnSaveData != null) { AGIInterface.Class1.OnSaveData(receivedData); } //} } catch (Exception ex) { Console.WriteLine(">>>Message= " + ex.Message + "\r\n StrackTrace: " + ex.StackTrace); break; } } }