//根据变量名称写 public void SendAODO(int iAddr, int iValue, int iFun) { //(012)49 A4 00 00 00 06 05 05 00 6E FF 00 //(012)49 E5 00 00 00 06 05 06 00 11 00 00 CMessage nMsg = new CMessage(); SSend_Message temSend = new SSend_Message(); switch (iFun) { case 5: case 6: temSend.Length = 12; temSend.DataBuffer = new byte[temSend.Length]; temSend.DataBuffer[5] = 6; temSend.DataBuffer[6] = Convert.ToByte(Address); temSend.DataBuffer[7] = (Byte)iFun; temSend.DataBuffer[8] = (byte)(iAddr >> 8); temSend.DataBuffer[9] = (byte)iAddr; temSend.DataBuffer[10] = (byte)(iValue >> 8); temSend.DataBuffer[11] = (byte)iValue; nMsg.sSendMsg = temSend; ListImmSendMsg.Add(nMsg); break; default: break; } }
public void InitLoopMsg()//初始化循环发送报文ListMsgSend { ListMsgCyc.Clear(); foreach (CMessage nMsg in StaDevice.ListMsgLoop) { nMsg.iPortIndex = this.iPortIndex; nMsg.iStaIndex = this.iStaIndex; PacketLoopMsg(nMsg); ListMsgCyc.Add(nMsg); ListImmSendMsg.Add(nMsg); Debug.WriteLine("InitLoopMsg.ListImmSendMsg"); } SendReadIdle(); }
public void SendWriteIdle()//下发写Idle值 { for (int kk = 5; kk < 7; kk++) { SSend_Message temSet = new SSend_Message(); int iLen = intEnd - intStart; CMessage nMsg = new CMessage(); temSet.Length = 34 + iLen * 2; temSet.DataBuffer = new byte[temSet.Length]; for (int i = 0; i < 4; i++) { temSet.DataBuffer[i] = FINSTCPHeader[i]; } int iNum = temSet.Length - 8; temSet.DataBuffer[4] = (byte)(iNum >> 24); temSet.DataBuffer[5] = (byte)(iNum >> 16); temSet.DataBuffer[6] = (byte)(iNum >> 8); temSet.DataBuffer[7] = (byte)iNum; temSet.DataBuffer[11] = 2; for (int i = 0; i < 10; i++) { temSet.DataBuffer[i + 16] = FINSHeader[i]; } temSet.DataBuffer[26] = 1; temSet.DataBuffer[27] = 2; temSet.DataBuffer[28] = 130; temSet.DataBuffer[29] = (byte)((intStart + (kk - 3) * 1000) >> 8); temSet.DataBuffer[30] = (byte)(intStart + (kk - 3) * 1000); temSet.DataBuffer[33] = (byte)iLen; foreach (CVar nVar in StaDevice.ListDevVar) { if (nVar.ByteAddr >= intStart && nVar.ByteAddr < intEnd) { int ibyte = nVar.ByteAddr; if (ibyte < intStart || ibyte > intEnd) { continue; } long iValue = (long)nVar.IntTag[kk]; temSet.DataBuffer[34 + (ibyte - intStart) * 2] = (byte)(iValue >> 8); temSet.DataBuffer[35 + (ibyte - intStart) * 2] = (byte)iValue; } } nMsg.sSendMsg = temSet; ListImmSendMsg.Add(nMsg); Debug.WriteLine("SendWriteIdle.ListImmSendMsg"); } }
//界面操作 public void SendAODO(string sVar, double fValue, string sType) { foreach (CVar nVar in StaDevice.ListDevVar) { if (nVar.Name == sVar) { SSend_Message temSet = new SSend_Message(); int iLen; CMessage nMsg = new CMessage(); switch (sType) { case "AO": //AO 需要处理变比 int iValue = (int)Math.Round(fValue / nVar.RatioValue); temSet.Length = 36; temSet.DataBuffer = new byte[temSet.Length]; for (int i = 0; i < 4; i++) { temSet.DataBuffer[i] = FINSTCPHeader[i]; } iLen = temSet.Length - 8; temSet.DataBuffer[4] = (byte)(iLen >> 24); temSet.DataBuffer[5] = (byte)(iLen >> 16); temSet.DataBuffer[6] = (byte)(iLen >> 8); temSet.DataBuffer[7] = (byte)iLen; temSet.DataBuffer[11] = 2; for (int i = 0; i < 10; i++) { temSet.DataBuffer[i + 16] = FINSHeader[i]; } temSet.DataBuffer[26] = 1; temSet.DataBuffer[27] = 2; temSet.DataBuffer[28] = 130; iLen = nVar.ByteAddr + 1000; temSet.DataBuffer[29] = (byte)(iLen >> 8); temSet.DataBuffer[30] = (byte)iLen; temSet.DataBuffer[33] = 1; temSet.DataBuffer[34] = (byte)(iValue >> 8); temSet.DataBuffer[35] = (byte)iValue; nMsg.sSendMsg = temSet; ListImmSendMsg.Add(nMsg); Debug.WriteLine("SendAODO:AO.ListImmSendMsg"); break; } } } }
/// <summary> /// 下发写多值 /// </summary> /// <param name="SendBuff">发送的字节buf</param> /// <param name="intStart">起始地址</param> /// <param name="iLen">数据长度</param> public void SendRun(byte[] SendBuff, int intStart, int iLen)//下发配方 { try { SSend_Message temSet = new SSend_Message(); CMessage nMsg = new CMessage(); temSet.Length = 34 + iLen * 2; temSet.DataBuffer = new byte[temSet.Length]; for (int i = 0; i < 4; i++) { temSet.DataBuffer[i] = FINSTCPHeader[i]; } int iNum = temSet.Length - 8; temSet.DataBuffer[4] = (byte)(iNum >> 24); temSet.DataBuffer[5] = (byte)(iNum >> 16); temSet.DataBuffer[6] = (byte)(iNum >> 8); temSet.DataBuffer[7] = (byte)iNum; temSet.DataBuffer[11] = 2; for (int i = 0; i < 10; i++) { temSet.DataBuffer[i + 16] = FINSHeader[i]; } temSet.DataBuffer[26] = 1; temSet.DataBuffer[27] = 2; temSet.DataBuffer[28] = 130; temSet.DataBuffer[29] = (byte)(intStart >> 8); temSet.DataBuffer[30] = (byte)intStart; temSet.DataBuffer[33] = (byte)iLen; for (int i = 0; i < Math.Min(SendBuff.Length, iLen * 2); i++) { temSet.DataBuffer[34 + i] = SendBuff[i]; } nMsg.sSendMsg = temSet; ListImmSendMsg.Add(nMsg); //Debug.WriteLine("SendRun.ListImmSendMsg"); } catch (Exception ex) { Debug.WriteLine("CProtcolFINS.SendRun" + ex.Message); } }
public void SendReadIdle()//下发读Idle报文 { for (int kk = 2; kk < 4; kk++) { SSend_Message temSend = new SSend_Message(); CMessage nMsg = new CMessage(); temSend.Length = 34; temSend.DataBuffer = new byte[temSend.Length]; for (int i = 0; i < 4; i++) { temSend.DataBuffer[i] = FINSTCPHeader[i]; } int iLen = temSend.Length - 8; temSend.DataBuffer[4] = (byte)(iLen >> 24); temSend.DataBuffer[5] = (byte)(iLen >> 16); temSend.DataBuffer[6] = (byte)(iLen >> 8); temSend.DataBuffer[7] = (byte)iLen; temSend.DataBuffer[11] = 2; for (int i = 0; i < 10; i++) { temSend.DataBuffer[i + 16] = FINSHeader[i]; } string Function = "010182"; for (int i = 0; i < 3; i++) { temSend.DataBuffer[i + 26] = Convert.ToByte(Function.Substring(i * 2, 2), 16); } int iStart = intStart + kk * 1000; temSend.DataBuffer[29] = (byte)(iStart >> 8); temSend.DataBuffer[30] = (byte)iStart; iLen = intEnd - intStart; temSend.DataBuffer[32] = (byte)(iLen >> 8); temSend.DataBuffer[33] = (byte)iLen; nMsg.sSendMsg = temSend; nMsg.Starting = iStart.ToString(); ListImmSendMsg.Add(nMsg); Debug.WriteLine("SendReadIdle.ListImmSendMsg"); } }
//界面操作 public void SendAODO(string sVar, int iValue, string sType) { if (sType == "SY") { SSend_Message temSet = new SSend_Message(); int iLen; CMessage nMsg = new CMessage(); temSet.Length = 36; temSet.DataBuffer = new byte[temSet.Length]; for (int i = 0; i < 4; i++) { temSet.DataBuffer[i] = FINSTCPHeader[i]; } iLen = temSet.Length - 8; temSet.DataBuffer[4] = (byte)(iLen >> 24); temSet.DataBuffer[5] = (byte)(iLen >> 16); temSet.DataBuffer[6] = (byte)(iLen >> 8); temSet.DataBuffer[7] = (byte)iLen; temSet.DataBuffer[11] = 2; for (int i = 0; i < 10; i++) { temSet.DataBuffer[i + 16] = FINSHeader[i]; } temSet.DataBuffer[26] = 1; temSet.DataBuffer[27] = 2; temSet.DataBuffer[28] = 130; iLen = Convert.ToInt32(sVar); temSet.DataBuffer[29] = (byte)(iLen >> 8); temSet.DataBuffer[30] = (byte)iLen; temSet.DataBuffer[33] = 1; temSet.DataBuffer[34] = (byte)(iValue >> 8); temSet.DataBuffer[35] = (byte)iValue; nMsg.sSendMsg = temSet; ListImmSendMsg.Add(nMsg); CAlarmMsgEventArgs e = new CAlarmMsgEventArgs(); e.Date_Time = DateTime.Now; e.Recorder = GetMsg(sVar, iValue); e.priority = EAlarmPriority.PRIORITY_1; e.eAlarmType = EAlarmType.ManualAct; e.StaName = Name; if (e.Recorder != "") { staAlarm.OnAlarmEvent(e); } return; } foreach (CVar nVar in StaDevice.ListDevVar) { if (nVar.Name == sVar) { SSend_Message temSet = new SSend_Message(); int iLen; CMessage nMsg = new CMessage(); switch (sType) { case "AO": //AO 需要处理变比 iValue = (int)Math.Round(iValue / nVar.RatioValue); temSet.Length = 36; temSet.DataBuffer = new byte[temSet.Length]; for (int i = 0; i < 4; i++) { temSet.DataBuffer[i] = FINSTCPHeader[i]; } iLen = temSet.Length - 8; temSet.DataBuffer[4] = (byte)(iLen >> 24); temSet.DataBuffer[5] = (byte)(iLen >> 16); temSet.DataBuffer[6] = (byte)(iLen >> 8); temSet.DataBuffer[7] = (byte)iLen; temSet.DataBuffer[11] = 2; for (int i = 0; i < 10; i++) { temSet.DataBuffer[i + 16] = FINSHeader[i]; } temSet.DataBuffer[26] = 1; temSet.DataBuffer[27] = 2; temSet.DataBuffer[28] = 130; iLen = nVar.ByteAddr + 1000; temSet.DataBuffer[29] = (byte)(iLen >> 8); temSet.DataBuffer[30] = (byte)iLen; temSet.DataBuffer[33] = 1; temSet.DataBuffer[34] = (byte)(iValue >> 8); temSet.DataBuffer[35] = (byte)iValue; nMsg.sSendMsg = temSet; ListImmSendMsg.Add(nMsg); Debug.WriteLine("SendAODO:AO.ListImmSendMsg"); break; case "AO2": //AO2 不需要处理变比 temSet.Length = 36; temSet.DataBuffer = new byte[temSet.Length]; for (int i = 0; i < 4; i++) { temSet.DataBuffer[i] = FINSTCPHeader[i]; } iLen = temSet.Length - 8; temSet.DataBuffer[4] = (byte)(iLen >> 24); temSet.DataBuffer[5] = (byte)(iLen >> 16); temSet.DataBuffer[6] = (byte)(iLen >> 8); temSet.DataBuffer[7] = (byte)iLen; temSet.DataBuffer[11] = 2; for (int i = 0; i < 10; i++) { temSet.DataBuffer[i + 16] = FINSHeader[i]; } temSet.DataBuffer[26] = 1; temSet.DataBuffer[27] = 2; temSet.DataBuffer[28] = 130; iLen = nVar.ByteAddr + 1000; temSet.DataBuffer[29] = (byte)(iLen >> 8); temSet.DataBuffer[30] = (byte)iLen; temSet.DataBuffer[33] = 1; temSet.DataBuffer[34] = (byte)(iValue >> 8); temSet.DataBuffer[35] = (byte)iValue; nMsg.sSendMsg = temSet; ListImmSendMsg.Add(nMsg); Debug.WriteLine("SendAODO:AO2.ListImmSendMsg"); break; case "DO": //DO int iByte = nVar.ByteAddr - 1000; int iBit = nVar.BitAddr; if (nVar.GetBoolValue()) { iValue = 0; } else { iValue = 1; } temSet.Length = 35; temSet.DataBuffer = new byte[temSet.Length]; for (int i = 0; i < 4; i++) { temSet.DataBuffer[i] = FINSTCPHeader[i]; } iLen = temSet.Length - 8; temSet.DataBuffer[4] = (byte)(iLen >> 24); temSet.DataBuffer[5] = (byte)(iLen >> 16); temSet.DataBuffer[6] = (byte)(iLen >> 8); temSet.DataBuffer[7] = (byte)iLen; temSet.DataBuffer[11] = 2; for (int i = 0; i < 10; i++) { temSet.DataBuffer[i + 16] = FINSHeader[i]; } temSet.DataBuffer[26] = 1; temSet.DataBuffer[27] = 2; temSet.DataBuffer[28] = 2; temSet.DataBuffer[29] = (byte)(iByte >> 8); temSet.DataBuffer[30] = (byte)iByte; temSet.DataBuffer[31] = (byte)(iBit); temSet.DataBuffer[33] = 1; //iValue = 0; temSet.DataBuffer[34] = (byte)iValue; nMsg.sSendMsg = temSet; ListImmSendMsg.Add(nMsg); Debug.WriteLine("SendAODO:DO.ListImmSendMsg"); // ListImmSendMsg.Add(SendMag8000); break; case "DO2": //DO iByte = nVar.ByteAddr - 1000; iBit = nVar.BitAddr; temSet.Length = 35; temSet.DataBuffer = new byte[temSet.Length]; for (int i = 0; i < 4; i++) { temSet.DataBuffer[i] = FINSTCPHeader[i]; } iLen = temSet.Length - 8; temSet.DataBuffer[4] = (byte)(iLen >> 24); temSet.DataBuffer[5] = (byte)(iLen >> 16); temSet.DataBuffer[6] = (byte)(iLen >> 8); temSet.DataBuffer[7] = (byte)iLen; temSet.DataBuffer[11] = 2; for (int i = 0; i < 10; i++) { temSet.DataBuffer[i + 16] = FINSHeader[i]; } temSet.DataBuffer[26] = 1; temSet.DataBuffer[27] = 2; temSet.DataBuffer[28] = 2; temSet.DataBuffer[29] = (byte)(iByte >> 8); temSet.DataBuffer[30] = (byte)iByte; temSet.DataBuffer[31] = (byte)(iBit); temSet.DataBuffer[33] = 1; //iValue = 0; temSet.DataBuffer[34] = (byte)iValue; nMsg.sSendMsg = temSet; ListImmSendMsg.Add(nMsg); Debug.WriteLine("SendAODO:DO2.ListImmSendMsg"); // ListImmSendMsg.Add(SendMag8000); break; } } } }