コード例 #1
0
ファイル: DownDataFJYD.cs プロジェクト: lexzh/Myproject
 public Response icar_SendRawPackage(CmdParam.ParamType paramType_0, string string_1, string string_2, CmdParam.CommMode commMode_0, SimpleCmd simpleCmd_0)
 {
     Response response = new Response();
     string str = "";
     foreach (string[] strArray in simpleCmd_0.CmdParams)
     {
         string str8 = str;
         str = str8 + "命令码-" + simpleCmd_0.OrderCode.ToString() + ",参数-" + this.method_5(strArray, 0) + ";";
     }
     base.WriteLog(paramType_0.ToString(), string_1 + "," + str);
     if (!base.CheckCar(paramType_0, string_1, string_2))
     {
         response.ErrorMsg = base.ErrorMsg;
         return response;
     }
     if (!base.isStartCommon())
     {
         response.ErrorMsg = base.ErrorMsg;
         return response;
     }
     if ((simpleCmd_0.CmdParams != null) && (simpleCmd_0.CmdParams.Count > 0))
     {
         int newOrderId = -1;
         object objectArg = null;
         byte[] bytes = null;
         foreach (Bussiness.CarInfo info in base.carInfoList)
         {
             try
             {
                 foreach (string[] strArray2 in simpleCmd_0.CmdParams)
                 {
                     newOrderId = SendBase.CarCmdSend.GetNewOrderId();
                     base.SaveCmdParm(newOrderId.ToString() + "|" + info.CarId.ToString() + ";");
                     string orderIDParam = response.OrderIDParam;
                     response.OrderIDParam = orderIDParam + newOrderId.ToString() + "|" + info.CarId.ToString() + ";";
                     base.AddUpDataLog(newOrderId, info.CarNum, simpleCmd_0.OrderCode.ToString(), this.method_5(strArray2, (int) simpleCmd_0.OrderCode));
                     if (simpleCmd_0.OrderCode == CmdParam.OrderCode.回拔坐席电话指令)
                     {
                         bytes = Encoding.GetEncoding("gb2312").GetBytes(strArray2[0]);
                         byte[] array = new byte[15];
                         bytes.CopyTo(array, 0);
                         objectArg = array;
                     }
                     if (simpleCmd_0.OrderCode == CmdParam.OrderCode.设置油耗仪参数)
                     {
                         objectArg = new Oix().GetObjectArg(strArray2);
                     }
                     if (simpleCmd_0.OrderCode == CmdParam.OrderCode.设置出入口分段超速报警)
                     {
                         Car car = new Car();
                         string[] strArray3 = simpleCmd_0.CmdParams[0] as string[];
                         Hashtable hashtable = new Hashtable();
                         for (int i = 0; i < (strArray3.Length / 8); i++)
                         {
                             if (!hashtable.Contains(strArray3[i * 8]))
                             {
                                 car.Car_AddPassWayPathIdToTmp(info.CarId, base.WorkId, newOrderId, strArray3[i * 8], strArray3[(i * 8) + 1], (Convert.ToDouble(strArray3[(i * 8) + 6]) > 0.0) ? ((int) Convert.ToDouble(strArray3[(i * 8) + 6])) : ((int) Convert.ToDouble(strArray3[(i * 8) + 7])));
                                 hashtable[strArray3[i * 8]] = null;
                             }
                         }
                         objectArg = simpleCmd_0.pvArg;
                     }
                     if (info.ProtocolName == SendBase.m_ProtocolName)
                     {
                         if (simpleCmd_0.OrderCode == CmdParam.OrderCode.设置关键区域)
                         {
                             TrafficRawPackage package = new TrafficRawPackage {
                                 OrderCode = CmdParam.OrderCode.命令透传,
                                 SubOrderCode = simpleCmd_0.OrderCode
                             };
                             Car car2 = new Car();
                             StringBuilder builder = new StringBuilder();
                             builder.Append((strArray2.Length / 8).ToString("X4"));
                             for (int j = 0; j < strArray2.Length; j += 8)
                             {
                                 builder.Append(Convert.ToInt32(strArray2[j]).ToString("X8"));
                                 builder.Append(Convert.ToByte(strArray2[j + 1]).ToString("X2"));
                                 builder.Append(((int) (Convert.ToDouble(strArray2[j + 2]) * 1000000.0)).ToString("X8"));
                                 builder.Append(((int) (Convert.ToDouble(strArray2[j + 3]) * 1000000.0)).ToString("X8"));
                                 if (string.IsNullOrEmpty(strArray2[j + 5]))
                                 {
                                     builder.Append(Convert.ToInt32(strArray2[j + 4]).ToString("X8"));
                                     builder.Append("00000000");
                                 }
                                 else
                                 {
                                     builder.Append(((int) (Convert.ToDouble(strArray2[j + 4]) * 1000000.0)).ToString("X8"));
                                     builder.Append(((int) (Convert.ToDouble(strArray2[j + 5]) * 1000000.0)).ToString("X8"));
                                 }
                                 builder.Append(Convert.ToByte(strArray2[j + 6]).ToString("X2"));
                                 builder.Append(Convert.ToInt32(strArray2[j + 7]).ToString("X8"));
                                 if (car2.SetCriticalRegionToTmp(info.CarId, base.WorkId, newOrderId, strArray2[j], strArray2[j + 6], strArray2[j + 7]) != 0)
                                 {
                                     base.WriteError(base.WorkId.ToString(), info.SimNum, simpleCmd_0.OrderCode.ToString() + "-参数保存失败-" + strArray2[j] + "," + strArray2[j + 6] + "," + strArray2[j + 7]);
                                 }
                             }
                             package.strText = builder.ToString();
                             string conntent = "";
                             string str3 = package.ToXmlString(base.CalOrderId(base.WorkId, newOrderId), info.SimNum, SendBase.m_ProtocolName, (int) commMode_0, "SendRawPackage", ref conntent);
                             response.ResultCode = SendBase.CarCmdSend.icar_SendCmdXML(base.WorkId, newOrderId, info.SimNum, SendBase.m_ProtocolName, (int) package.OrderCode, (int) commMode_0, str3);
                         }
                         else if (simpleCmd_0.OrderCode == CmdParam.OrderCode.设置出入口分段超速报警)
                         {
                             TrafficRawPackage package2 = new TrafficRawPackage {
                                 OrderCode = CmdParam.OrderCode.命令透传,
                                 SubOrderCode = simpleCmd_0.OrderCode
                             };
                             StringBuilder builder2 = new StringBuilder();
                             byte[] pvArg = (byte[]) simpleCmd_0.pvArg;
                             if (pvArg != null)
                             {
                                 for (int k = 0; k < pvArg.Length; k++)
                                 {
                                     if (((k + 1) % 0x16) == 1)
                                     {
                                         byte[] buffer4 = new byte[4];
                                         for (int m = 0; m < 4; m++)
                                         {
                                             buffer4[m] = pvArg[k + m];
                                         }
                                         k += 3;
                                         builder2.Append(BitConverter.ToInt32(buffer4, 0).ToString("X8"));
                                     }
                                     else
                                     {
                                         builder2.Append(pvArg[k].ToString("X2"));
                                     }
                                 }
                             }
                             package2.strText = builder2.ToString();
                             string str4 = "";
                             string str5 = package2.ToXmlString(base.CalOrderId(base.WorkId, newOrderId), info.SimNum, SendBase.m_ProtocolName, (int) commMode_0, "SendRawPackage", ref str4);
                             response.ResultCode = SendBase.CarCmdSend.icar_SendCmdXML(base.WorkId, newOrderId, info.SimNum, SendBase.m_ProtocolName, (int) package2.OrderCode, (int) commMode_0, str5);
                         }
                         else
                         {
                             string str6 = "";
                             string str7 = simpleCmd_0.ToXmlString(base.CalOrderId(base.WorkId, newOrderId), info.SimNum, SendBase.m_ProtocolName, (int) commMode_0, "SimpleCmd", ref str6);
                             response.ResultCode = SendBase.CarCmdSend.icar_SendCmdXML(base.WorkId, newOrderId, info.SimNum, SendBase.m_ProtocolName, (int) simpleCmd_0.OrderCode, (int) commMode_0, str7);
                         }
                     }
                     else
                     {
                         response.ResultCode = SendBase.CarCmdSend.icar_SendRawPackage(base.WorkId, newOrderId, info.SimNum, simpleCmd_0.CmdCode, ref objectArg, commMode_0);
                     }
                     if (response.ResultCode != 0L)
                     {
                         base.WriteError(base.WorkId.ToString(), info.SimNum, simpleCmd_0.OrderCode.ToString());
                     }
                 }
             }
             catch (Exception exception)
             {
                 response.ErrorMsg = "下发消息指令时发生错误,错误详细信息:" + exception.Message;
                 base.log.WriteError(base.errMsg, exception);
             }
         }
         return response;
     }
     response.ResultCode = -1L;
     response.ErrorMsg = "下发参数为空!";
     return response;
 }