Jelajahi Sumber

winfrom提交

duyong 4 tahun lalu
induk
melakukan
f6bc384463

+ 2 - 2
CarMeterSystem/App.config

@@ -37,10 +37,10 @@
     <add key="TareControlType" value="3" />
 
     <!--厂内外车配置:001004003(内部),001004002(外部)-->
-    <add key="carTypeNo" value="001004003" />
+    <add key="carTypeNo" value="001004002" />
 
     <!--厂内外车配置:001004003(内部),001004002(外部)-->
-    <add key="carTypeName" value="部" />
+    <add key="carTypeName" value="部" />
 
 		<add key="ClientSettingsProvider.ServiceUri" value="" />
 	</appSettings>

+ 92 - 3
CarMeterSystem/Form1.cs

@@ -320,6 +320,7 @@ namespace CarMeterSystem
                 l.WriteLog(12,sweepCodeClass.ToString());
                 if (string.IsNullOrEmpty(sweepCodeClass.StrCode))
                 {
+                    codeFlag = false;
                     if (string.IsNullOrEmpty(PbCache.strCode))
                     {
                         firstCode = "";
@@ -342,10 +343,9 @@ namespace CarMeterSystem
                     //}
                     l.WriteLog(12, "测试扫码值"+PbCache.strCode);
                     PbCache.collect.carno = sweepCodeClass.StrCode;
-                   
+                    
                     codeFlag = true;
                 }
-
                 #endregion
 
                 #region 秤上无车10分钟获取一次基础数据
@@ -459,6 +459,9 @@ namespace CarMeterSystem
                     flagCarMonit = true;
                 }
 
+                // 更新监控表
+                doLive();
+
                 //}
                 //*/
 
@@ -541,6 +544,10 @@ namespace CarMeterSystem
                         #region 车号信息
                         mwUpdate.rfidCar = "";
                         mwUpdate.photoCar = e.vdioCarNos;
+                        if (testFlag)
+                        {
+                            mwUpdate.photoCar = PbCache.collect.carno;
+                        }
                         //e.RfidNos = "0003";
                         if (!string.IsNullOrEmpty(e.RfidNos))
                         {
@@ -580,7 +587,6 @@ namespace CarMeterSystem
                         #region 写入一次监控表,将重量/车号停留超时等信息写入
                         mwUpdate.weightStatus = PbCache.collect.weightStatus;
                         mwUpdate.msgInfo = PbCache.ResultMessage;
-                        mwUpdate.photoCar = PbCache.collect.carno;
                         if (codeFlag)
                         {
                             mwUpdate.scanCar = PbCache.collect.carno;
@@ -1169,6 +1175,89 @@ namespace CarMeterSystem
             }
         }
 
+        /// <summary>
+        /// 操作Live表的数据:零点报警
+        /// </summary>
+        private void doLive()
+        {
+            if (PbCache.collect_no == null)
+            {
+                return;
+            }
+            List<LiveData> ll = MemoClass.getWarnInfo(PbCache.collect_no);
+            MeterWorkMonitor mwm = new MeterWorkMonitor();
+            mwm.pointNo = PbCache.sportInfo.baseSpotNo;
+            mwm.redGreenLightState = "0";
+            if (ll != null)
+            {
+                foreach (LiveData lv in ll)
+                {
+                    switch (lv.Tagname.Replace(PbCache.collect_no, ""))
+                    {
+                        case "PowerStatus":
+                            mwm.powerState = lv.Value.ToString();
+                            break;
+                        case "PlcWatchDog":
+                            if (int.Parse(lv.Value.ToString()) >= 0 && int.Parse(lv.Value.ToString()) <= 0)
+                            {
+                                mwm.plcState = 0.ToString();
+                            }
+                            break;
+                        case "InfraredWest":
+                            if (lv.Value.ToString() == "2")
+                            {
+                                mwm.leftInfraredRayState = "0";
+                            }
+                            else
+                            {
+                                mwm.leftInfraredRayState = lv.Value.ToString();
+                            }
+                            break;
+                        case "InfraredEast":
+                            if (lv.Value.ToString() == "2")
+                            {
+                                mwm.rightInfraredRayState = "0";
+                            }
+                            else
+                            {
+                                mwm.rightInfraredRayState = lv.Value.ToString();
+                            }
+                            break;
+                        case "AmplifierState":
+                            mwm.amplifierState = lv.Value.ToString();
+                            break;
+                        case "LampState":
+                            mwm.lampState = lv.Value.ToString();
+                            break;
+                        case "InfraredLeft":
+                            if (lv.Value.ToString() == "2")
+                            {
+                                mwm.frontInfraredRayState = "0";
+                            }
+                            else
+                            {
+                                mwm.frontInfraredRayState = lv.Value.ToString();
+                            }
+                            break;
+                        case "InfraredRight":
+                            if (lv.Value.ToString() == "2")
+                            {
+                                mwm.rearInfraredRayState = "0";
+                            }
+                            else
+                            {
+                                mwm.rearInfraredRayState = lv.Value.ToString();
+                            }
+                            break;
+                        case "RfidState":
+                            mwm.rfidState = lv.Value.ToString();
+                            break;
+                    }
+                }
+            }
+            RESTfulResult<string> rms = meterWorkMonitor.doUpdateWf(mwm);
+        }
+
         /// <summary>
         /// 新增零点报警的数据
         /// </summary>

+ 100 - 11
CarMeterSystem/frmMain.cs

@@ -337,6 +337,7 @@ namespace CarMeterSystem
 
                 if (string.IsNullOrEmpty(sweepCodeClass.StrCode))
                 {
+                    codeFlag = false;
                     if (string.IsNullOrEmpty(PbCache.strCode))
                     {
                         firstCode = "";
@@ -410,18 +411,20 @@ namespace CarMeterSystem
 
                 #region
                 //一旦界面锁定则不采集数据
-                //if (!PbCache.isLockFrm)
-                //{
-                PbCache.collect.pointid = PbCache.sportInfo.baseSpotNo;
-                PbCache.collect.weight = e.weight;
-                PbCache.collect.weightStatus = e.weightStatus;
-                PbCache.collect.parkStatus = e.parkStatus;
-                PbCache.collect.datetime = e.datetime;
-                PbCache.collect.licType = e.licType;
-
-                //}
+                if (!PbCache.isLockFrm)
+                {
+                    PbCache.collect.pointid = PbCache.sportInfo.baseSpotNo;
+                    PbCache.collect.weight = e.weight;
+                    PbCache.collect.weightStatus = e.weightStatus;
+                    PbCache.collect.parkStatus = e.parkStatus;
+                    PbCache.collect.datetime = e.datetime;
+                    PbCache.collect.licType = e.licType;
+                }
                 //*/
 
+                // 更新监控表
+                doLive();
+
                 //重量大于500的情况下
                 if (e.weight > 500)
                 {
@@ -577,7 +580,7 @@ namespace CarMeterSystem
                         #region RFID识别车号信息
                         mwUpdate.rfidCar = "";
                         mwUpdate.photoCar = e.vdioCarNos;
-
+                        //mwUpdate.photoCar = PbCache.collect.carno;
                         if (!string.IsNullOrEmpty(e.RfidNos))
                         {
                             string sqls = @"SELECT RFID_ID id,CAR_NO text FROM METER_BASE_RFID_INFO where RFID_CODE = '" + e.RfidNos + "'";
@@ -618,6 +621,7 @@ namespace CarMeterSystem
 
                         #region 写入一次监控表,将重量/车号停留超时等信息写入
                         mwUpdate.msgInfo = PbCache.ResultMessage;
+                        mwUpdate.weightStatus = PbCache.collect.weightStatus;
                         //另外初始化一次监控数据
                         RESTfulResult<string> rms = meterWorkMonitor.doUpdateWf(mwUpdate);
                         if (!rms.Succeed)
@@ -836,6 +840,91 @@ namespace CarMeterSystem
             }
         }
 
+
+        /// <summary>
+        /// 操作Live表的数据:零点报警
+        /// </summary>
+        private void doLive()
+        {
+            if (PbCache.collect_no == null)
+            {
+                return;
+            }
+            List<LiveData> ll = MemoClass.getWarnInfo(PbCache.collect_no);
+            MeterWorkMonitor mwm = new MeterWorkMonitor();
+            mwm.pointNo = PbCache.sportInfo.baseSpotNo;
+            mwm.redGreenLightState = "0";
+            if (ll != null)
+            {
+                foreach (LiveData lv in ll)
+                {
+                    switch (lv.Tagname.Replace(PbCache.collect_no, ""))
+                    {
+                        case "PowerStatus":
+                            mwm.powerState = lv.Value.ToString();
+                            break;
+                        case "PlcWatchDog":
+                            if (int.Parse(lv.Value.ToString()) >= 0 && int.Parse(lv.Value.ToString()) <= 0)
+                            {
+                                mwm.plcState = 0.ToString();
+                            }
+                            break;
+                        case "InfraredWest":
+                            if (lv.Value.ToString() == "2")
+                            {
+                                mwm.leftInfraredRayState = "0";
+                            }
+                            else
+                            {
+                                mwm.leftInfraredRayState = lv.Value.ToString();
+                            }
+                            break;
+                        case "InfraredEast":
+                            if (lv.Value.ToString() == "2")
+                            {
+                                mwm.rightInfraredRayState = "0";
+                            }
+                            else
+                            {
+                                mwm.rightInfraredRayState = lv.Value.ToString();
+                            }
+                            break;
+                        case "AmplifierState":
+                            mwm.amplifierState = lv.Value.ToString();
+                            break;
+                        case "LampState":
+                            mwm.lampState = lv.Value.ToString();
+                            break;
+                        case "InfraredLeft":
+                            if (lv.Value.ToString() == "2")
+                            {
+                                mwm.frontInfraredRayState = "0";
+                            }
+                            else
+                            {
+                                mwm.frontInfraredRayState = lv.Value.ToString();
+                            }
+                            break;
+                        case "InfraredRight":
+                            if (lv.Value.ToString() == "2")
+                            {
+                                mwm.rearInfraredRayState = "0";
+                            }
+                            else
+                            {
+                                mwm.rearInfraredRayState = lv.Value.ToString();
+                            }
+                            break;
+                        case "RfidState":
+                            mwm.rfidState = lv.Value.ToString();
+                            break;
+                    }
+                }
+            }
+            RESTfulResult<string> rms = meterWorkMonitor.doUpdateWf(mwm);
+        }
+
+
         /// <summary>
         /// 新增零点报警的数据
         /// </summary>

+ 138 - 41
CarMeterSystem/frmOneYardToEnd.cs

@@ -37,6 +37,7 @@ namespace CarMeterSystem
         private PreTrackScaleService PreTrackScaleService = new PreTrackScaleService();
         private MeterWorkScheduledHelpService meterWorkScheduledHelpService = new MeterWorkScheduledHelpService();
         private MeterWorkCompareSpotScaleService meterWorkCompareSpotScaleService = new MeterWorkCompareSpotScaleService();
+        private MeterBaseSpecialUnitService meterBaseSpecialUnitService = new MeterBaseSpecialUnitService();
         private MyTest myTest = new MyTest();
 
 
@@ -144,6 +145,7 @@ namespace CarMeterSystem
                     //超量程
                     vicPlayClass.GetVoicePlay("已超量程", PbCache.collect.carno);
                     PbCache.ResultMessage = "当前重量已超量程,秤体量程为【" + PbCache.range.upperRange / 1000 + "】T,不允许进行自助计量操作!";
+                    led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, "当前重量已超量程,秤体量程为【" + PbCache.range.upperRange / 1000 + "】T,不允许进行自助计量操作!");
                     PbCache.isLockFrm = false;
                     btnSave.Enabled = true;
                     setMsg(PbCache.ResultMessage);
@@ -154,6 +156,7 @@ namespace CarMeterSystem
                     //重量稳定,且对射验证不合格
                     vicPlayClass.GetVoicePlay("您的车辆未停到位", PbCache.collect.carno);
                     PbCache.ResultMessage = "您的车辆未停到位,请调整车辆位置,不要遮挡激光检测设备,不允许进行自助计量操作!"; //btnSave_Click
+                    led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, "您的车辆未停到位,请调整车辆位置,不要遮挡激光检测设备,不允许进行自助计量操作!");
                     PbCache.isLockFrm = false;
                     btnSave.Enabled = true;
                     setMsg(PbCache.ResultMessage);
@@ -190,9 +193,12 @@ namespace CarMeterSystem
                 //判断区域是否正确
                 if (!areaInfo.ValidMethod(PbCache.sportInfo, txtCarNo.Text) && PbCache.monitor.validArea == "1" && !isCompare)
                 {
+                    vicPlayClass.GetVoicePlay("计量失败,异地洁净,请联系计量大厅", PbCache.collect.carno);
+                    PbCache.ResultMessage = "计量失败:异地结净,请联系计量大厅"; //btnSave_Click
+                    led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, "计量失败:异地结净,请联系计量大厅");
                     PbCache.isLockFrm = false;
                     btnSave.Enabled = true;
-                    setMsg("车辆两次称点区域不同");
+                    setMsg("计量失败:异地结净,请联系计量大厅");
                     return;
                 }
 
@@ -331,6 +337,17 @@ namespace CarMeterSystem
                     }
                     else
                     {
+                        //拿到车辆
+                        RESTfulResult<List<MeterBaseCar>> resCarLists = carService.doQueryCarList(new MeterBaseCar { carNo = PbCache.lockCarNo });
+                        RESTfulResult<List<MeterBaseSpecialUnit>> sunitList = meterBaseSpecialUnitService.doQueryCarList(new MeterBaseSpecialUnit { unitNo = resCarLists.Data[0].usetDepartmentNo });
+
+                        if (sunitList.Data == null || sunitList.Data.Count != 1)
+                        { }
+                        else
+                        {
+                            led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, "请通过APP确认本次重量,重量为" + Math.Round((PbCache.lockWgt / 1000), 2) + "T");
+                        }
+
                         // 把车号加上-
                         string tempCarNo = PbCache.lockCarNo;
                         RESTfulResult<List<MeterBaseCar>> resCarList = carService.doQueryCarList(new MeterBaseCar { carNo = tempCarNo });
@@ -366,7 +383,7 @@ namespace CarMeterSystem
                                         }
                                         if (!string.IsNullOrEmpty(PbCache.LEDResultMessage))
                                         {
-                                            led_controler.setOneLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
+                                            led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
                                         }
                                     }
                                     catch (Exception exp)
@@ -377,7 +394,7 @@ namespace CarMeterSystem
                                         setMsg(PbCache.ResultMessage);
                                         if (!string.IsNullOrEmpty(PbCache.LEDResultMessage))
                                         {
-                                            led_controler.setOneLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
+                                            led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
                                         }
                                         //break;
                                         return;
@@ -404,7 +421,7 @@ namespace CarMeterSystem
                                         }
                                         if (!string.IsNullOrEmpty(PbCache.LEDResultMessage))
                                         {
-                                            led_controler.setOneLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
+                                            led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
                                         }
                                     }
                                     catch (Exception exp)
@@ -415,7 +432,7 @@ namespace CarMeterSystem
                                         setMsg(PbCache.ResultMessage);
                                         if (!string.IsNullOrEmpty(PbCache.LEDResultMessage))
                                         {
-                                            led_controler.setOneLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
+                                            led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
                                         }
                                         //break;
                                         return;
@@ -427,7 +444,7 @@ namespace CarMeterSystem
                                     if (strRm.Data.isError)
                                     {
                                         //如果是报错则直接不执行,并写入信息到界面,同时调用语音播报
-                                        vicPlayClass.GetVoicePlay("计量数据保存失败", PbCache.collect.carno);
+                                        readVoicd();
                                         PbCache.ResultMessage = strRm.Data.resultInfo;
                                         PbCache.monitorResultMessage = strRm.Data.resultInfo;
                                         PbCache.isLockFrm = false;
@@ -436,7 +453,7 @@ namespace CarMeterSystem
                                         Monitor(strRm.Data);
                                         if (!string.IsNullOrEmpty(PbCache.LEDResultMessage))
                                         {
-                                            led_controler.setOneLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
+                                            led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
                                         }
                                         return;
                                     }
@@ -448,7 +465,7 @@ namespace CarMeterSystem
                                         Monitor(strRm.Data);
                                         if (!string.IsNullOrEmpty(PbCache.LEDResultMessage))
                                         {
-                                            led_controler.setOneLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
+                                            led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
                                         }
                                         //return;
                                     }
@@ -461,7 +478,7 @@ namespace CarMeterSystem
                                 }
                                 else
                                 {
-                                    vicPlayClass.GetVoicePlay("计量数据保存失败", PbCache.collect.carno);
+                                    readVoicd();
                                     PbCache.ResultMessage = strRm.ResultMessage;
                                     PbCache.isLockFrm = false;
                                     btnSave.Enabled = true;
@@ -479,7 +496,7 @@ namespace CarMeterSystem
                                     Monitor(strRm.Data);
                                     if (!string.IsNullOrEmpty(PbCache.LEDResultMessage))
                                     {
-                                        led_controler.setOneLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
+                                        led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
                                     }
                                     return;
 
@@ -491,11 +508,15 @@ namespace CarMeterSystem
                                 {
                                     PbCache.ResultMessage += "车号为空,请联系处理";
                                     PbCache.monitorResultMessage = "车号为空,请联系处理";
+                                    vicPlayClass.GetVoicePlay("车号为空,请联系处理", PbCache.lockCarNo);
+                                    led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, "车号未注册,请联系处理");
                                 }
                                 else
                                 {
                                     PbCache.ResultMessage += "车号未注册,请联系处理";
                                     PbCache.monitorResultMessage = "车号未注册,请联系处理";
+                                    vicPlayClass.GetVoicePlay("车号未注册,请联系处理", PbCache.lockCarNo);
+                                    led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, "车号未注册,请联系处理");
                                 }
                                 PbCache.isLockFrm = false;
                                 btnSave.Enabled = true;
@@ -507,7 +528,7 @@ namespace CarMeterSystem
                                 Monitor(rt);
                                 if (!string.IsNullOrEmpty(PbCache.LEDResultMessage))
                                 {
-                                    led_controler.setOneLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
+                                    led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
                                 }
                                 if (!string.IsNullOrEmpty(tempCarNo))
                                 {
@@ -550,14 +571,7 @@ namespace CarMeterSystem
 
                     //语音提醒部分
                     //flag =true表示称重成功
-                    if (flag && PbCache.ResultMessage.Contains("请及时留期限皮"))
-                    {
-                        vicPlayClass.GetVoicePlay("称重完成空车留期限皮", PbCache.lockCarNo);
-                    }
-                    else
-                    {
-                        vicPlayClass.GetVoicePlay(strMsg, PbCache.lockCarNo);
-                    }
+                    readVoicd();
 
                     //提示信息,
                     //txtMsgInfo.Text = PbCache.ResultMessage;
@@ -955,17 +969,17 @@ namespace CarMeterSystem
                         }
                     }
 
-                #region 模拟APP
-                if (!string.IsNullOrEmpty(PbCache.collect.carno))
-                {
-                    string sqls = "UPDATE METER_BASE_APP_TEST SET CAR_NO= '"+ PbCache.collect.carno + "' where ID = 1";
+                    #region 模拟APP
+                    if (!string.IsNullOrEmpty(PbCache.collect.carno))
+                    {
+                        string sqls = "UPDATE METER_BASE_APP_TEST SET CAR_NO= '"+ PbCache.collect.carno + "' where ID = 1";
 
-                    PbModelDbService<List<PbModelDb>> pbp = new PbModelDbService<List<PbModelDb>>();
-                    RESTfulResult<List<PbModelDb>> rmT = pbp.executeSqlDataWf(sqls);
-                }
-                #endregion
+                        PbModelDbService<List<PbModelDb>> pbp = new PbModelDbService<List<PbModelDb>>();
+                        RESTfulResult<List<PbModelDb>> rmT = pbp.executeSqlDataWf(sqls);
+                    }
+                    #endregion
 
-                #endregion 红外对射及量程验证及停留超时验证
+                    #endregion 红外对射及量程验证及停留超时验证
 
 
                     #region 查一次是否校秤,若未校秤则不能计量
@@ -998,19 +1012,19 @@ namespace CarMeterSystem
 
                     #region 判断是否需要复磅
 
-                    if (isShowRecover && !string.IsNullOrEmpty(txtCarNo.Text))
-                    {
-                        recoverInfo.ValidMethod(txtCarNo.Text);
-                        if (PbCache.isAllowRecover)
-                        {
-                            btnRecover.Visible = true;
-                        }
-                        else
+                        if (isShowRecover && !string.IsNullOrEmpty(txtCarNo.Text))
                         {
-                            btnRecover.Visible = false;
+                            recoverInfo.ValidMethod(txtCarNo.Text);
+                            if (PbCache.isAllowRecover)
+                            {
+                                btnRecover.Visible = true;
+                            }
+                            else
+                            {
+                                btnRecover.Visible = false;
+                            }
+                            isShowRecover = false;
                         }
-                        isShowRecover = false;
-                    }
 
                 #endregion 判断是否需要复磅
 
@@ -1133,12 +1147,17 @@ namespace CarMeterSystem
                                     {
                                         txtMsgInfo.Text  = "车号为空,请联系处理";
                                         PbCache.monitorResultMessage = "车号为空,请联系处理";
+                                        led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, "车号为空,请联系处理");
+                                        vicPlayClass.GetVoicePlay("车号为空,请联系处理", PbCache.lockCarNo);
                                     }
                                     else
                                     {
                                         txtMsgInfo.Text  = "车号未注册,请联系处理";
                                         PbCache.monitorResultMessage = "车号未注册,请联系处理";
+                                        led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, "车号未注册,请联系处理");
+                                        vicPlayClass.GetVoicePlay("车号未注册,请联系处理", PbCache.lockCarNo);
                                     }
+
                                     PbCache.isLockFrm = false;
                                     btnSave.Enabled = true;
                                 
@@ -1218,8 +1237,7 @@ namespace CarMeterSystem
                             //3秒后自动执行保存方法
                             //Thread.Sleep(3000);
                             //this.btnSave.PerformClick();
-
-                         }
+                        }
                         else if (PbCache.monitor.validMatClick == "0")
                         {
                             //已锁定 && !PbCache.isLockFrm 
@@ -1954,11 +1972,14 @@ namespace CarMeterSystem
 
                 //RESTfulResult<string> rms = monitor.doUpdateWf(new MeterWorkMonitor { pointNo = PbCache.sportInfo.baseSpotNo, isOverWgt = "" });
 
+                led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, "");
+
                 RESTfulResult<string> rms = monitor.doUpdateWf(new MeterWorkMonitor
                 {
                     pointNo = PbCache.sportInfo.baseSpotNo,
                     validWgt = "1",
                     validCarno = "1",
+                    validIsPre = "0",
                     validTareTime = "1",
                     validMatTime = "1",
                     validTimeInterval = "1",
@@ -2033,5 +2054,81 @@ namespace CarMeterSystem
             PbCache.isPre = true;
             ucCarMeterInfoJisco1.setFormControlValue(model);
         }
+
+        public void readVoicd()
+        {
+            string voiceContent = "";
+
+            switch (PbCache.voiceType)
+            {
+                case 1:
+                    voiceContent = "计量完成,请离开秤台";
+                    break;
+                case 2:
+                    voiceContent = "计量失败,称重类型选择错误,请联系计量大厅";
+                    break;
+                case 3:
+                    voiceContent = "计量失败,存在多条未洁净数据,请联系计量大厅";
+                    break;
+                case 4:
+                    voiceContent = "计量失败,洁净重量过小,请联系计量大厅";
+                    break;
+                case 5:
+                    voiceContent = "计量失败,皮重超差,请联系计量大厅";
+                    break;
+                case 6:
+                    voiceContent = "计量失败,委托选择异常,请联系计量大厅";
+                    break;
+                case 7:
+                    voiceContent = "计量失败,无计量委托,请联系计量大厅";
+                    break;
+                case 8:
+                    voiceContent = "计量完成,存在多个计量委托,无法匹配,请联系计量大厅";
+                    break;
+                case 9:
+                    voiceContent = "计量完成,留存期限皮成功";
+                    break;
+                case 10:
+                    voiceContent = "计量完成,无计量委托,请联系计量大厅";
+                    break;
+                case 11:
+                    voiceContent = "计量完成,之前存在未结净毛重,请联系计量大厅";
+                    break;
+                case 12:
+                    voiceContent = "请在计量APP中确认重量并保存";
+                    break;
+                case 13:
+                    voiceContent = "计量失败,皮重超差,请联系计量大厅";//皮重验证
+                    break;
+                case 14:
+                    voiceContent = "计量失败,洁净重量过小,请联系计量大厅";//毛重验证
+                    break;
+                case 15:
+                    voiceContent = "计量完成,期限皮已过期,请留存期限皮";//计量完成,期限皮不存在或已过期,请留存期限皮
+                    break;
+                case 16:
+                    voiceContent = "计量完成,请离开秤台";//计量完成,期限皮结净
+                    break;
+                case 17:
+                    voiceContent = "计量完成,之前存在未结净毛重,请联系计量大厅";//期限皮过期,之前存在一个未结净的毛重
+                    break;
+                case 18:
+                    voiceContent = "计量完成,委托匹配异常,请联系计量大厅";//不存在一次计量数据却存在一条使用中的委托
+                    break;
+                case 19:
+                    voiceContent = "计量失败,委托选择异常,请联系计量大厅";//存在多条已选择的委托,请联系计量大厅
+                    break;
+                case 20:
+                    voiceContent = "计量失败,称重类型选择错误,请联系计量大厅";//存在多条上称申请数据,请联系计量大厅
+                    break;
+                case 21:
+                    voiceContent = "计量失败,未选择称重类型";//未选择称重类型,请选择后开始计量
+                    break;
+            }
+
+
+            vicPlayClass.GetVoicePlay(voiceContent, PbCache.lockCarNo);
+
+        }
     }
 }

+ 2 - 0
Common/Common.csproj

@@ -95,6 +95,7 @@
     <Compile Include="DbOption\base\MeterBaseScalePointService.cs" />
     <Compile Include="DbOption\base\MeterBaseSpecialUnitService.cs" />
     <Compile Include="DbOption\base\MeterBaseUnitInfoService.cs" />
+    <Compile Include="DbOption\base\MetetBaseRailwayAiweightService.cs" />
     <Compile Include="DbOption\scale\PreBeltScalePreService.cs" />
     <Compile Include="DbOption\scale\PreTrackNoticeService.cs" />
     <Compile Include="DbOption\work\MeterWorkCompareSpotScaleService.cs" />
@@ -127,6 +128,7 @@
     <Compile Include="vo\base\MeterBaseOperationLog.cs" />
     <Compile Include="vo\base\MeterBasemeterMaterialpm.cs" />
     <Compile Include="vo\base\MeterBaseUnitInfo.cs" />
+    <Compile Include="vo\base\MetetBaseRailwayAiweight.cs" />
     <Compile Include="vo\pb\CraneScaleCollectModel.cs" />
     <Compile Include="vo\scale\PreBeltScaleForecast.cs" />
     <Compile Include="vo\scale\PreTrackNotice.cs" />

+ 31 - 0
Common/DbOption/base/MetetBaseRailwayAiweightService.cs

@@ -0,0 +1,31 @@
+using com.hnshituo.core.webapp.vo;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Common
+{
+    public class MetetBaseRailwayAiweightService
+    {
+        public RESTfulResult<List<MetetBaseRailwayAiweight>> add(List<MetetBaseRailwayAiweight> info)
+        {
+            DbHelper db = new DbHelper();
+            RESTfulResult<PageList<List<MetetBaseRailwayAiweight>>> rm = db.doOption<PageList<List<MetetBaseRailwayAiweight>>>("meterbaserailwayaiweights", "/checkAdd", new object[] { info }, 1);
+
+            RESTfulResult<List<MetetBaseRailwayAiweight>> result = new RESTfulResult<List<MetetBaseRailwayAiweight>>();
+            result.Succeed = rm.Succeed;
+            result.Status = rm.Status;
+            result.Message = rm.Message;
+            result.ResultMessage = rm.ResultMessage;
+            result.Code = rm.Code;
+            if (rm.Data != null && rm.Data.list != null && rm.Data.list.Count > 0)
+            {
+                result.Data = rm.Data.list;
+            }
+
+            return result;
+        }
+    }
+}

+ 1 - 1
Common/cacheCls/PbCache.cs

@@ -90,7 +90,7 @@ namespace Common
 
         public static bool isPre = false;
 
-        
+        public static int voiceType { get; set; }
         public static MeterWorkCarActualFirst mwPreFirst { get; set; }
 
         /// <summary>

+ 98 - 0
Common/vo/base/MetetBaseRailwayAiweight.cs

@@ -0,0 +1,98 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Common
+{
+    public class MetetBaseRailwayAiweight
+    {
+        /// <summary>
+        /// 编号
+        /// <summary>
+        //[AttributeID("relationNo")]
+        public string actualFirstNo { get; set; }
+        
+        /// <summary>
+        /// 火车号
+        /// <summary>
+        public string railwayNo { get; set; }
+
+        /// <summary>
+        /// 重量
+        /// <summary>
+        public string meterWeight { get; set; }
+
+        /// <summary>
+        /// 车型
+        /// <summary>
+        public string railwayType { get; set; }
+
+        /// <summary>
+        /// 轨道衡类型编号
+        /// <summary>
+        public string railwayTypeNo { get; set; }
+
+        /// <summary>
+        /// 轨道衡类型名称
+        /// <summary>
+        public string railwayTypeName { get; set; }
+
+        /// <summary>
+        /// 状态(0:有效  1:无效)
+        /// <summary>
+        public string valueFlag { get; set; }
+
+
+        /// <summary>
+        /// 创建人编号
+        /// <summary>
+        public string createManNo { get; set; }
+
+        /// <summary>
+        /// 创建人名称
+        /// <summary>
+        public string createManName { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// <summary>
+        public string createTime { get; set; }
+
+        /// <summary>
+        /// 修改人编号
+        /// <summary>
+        public string updateManNo { get; set; }
+
+        /// <summary>
+        /// 修改人名称
+        /// <summary>
+        public string updateManName { get; set; }
+
+        /// <summary>
+        /// 修改时间
+        /// <summary>
+        public string updateTime { get; set; }
+
+        /// <summary>
+        /// 有效开始时间
+        /// <summary>
+        public string startTime { get; set; }
+
+        /// <summary>
+        /// 有效结束时间
+        /// <summary>
+        public string endTime { get; set; }
+
+        /// <summary>
+        /// 有效期
+        /// <summary>
+        public string termValidity { get; set; }
+
+        /// <summary>
+        /// 车速
+        /// <summary>
+        public string railwaySpeed { get; set; }
+    }
+}

+ 276 - 206
Common/vo/work/MeterWorkMonitor.cs

@@ -12,213 +12,283 @@ using System;
 using System.Text;
 namespace Common
 {
-	public class MeterWorkMonitor
-	{
-		/// <summary>
-		/// 计量点编号
-		/// <summary>
-		//[AttributeID("pointNo")]
-		public string pointNo { get; set; }
-
-		/// <summary>
-		/// 计量点
-		/// <summary>
-		public string pointName { get; set; }
-
-		/// <summary>
-		/// 验证重量  0不验证  1验证
-		/// <summary>
-		public string validWgt { get; set; }
-
-		/// <summary>
-		/// 验证车号  0不验证  1验证
-		/// <summary>
-		public string validCarno { get; set; }
-
-		/// <summary>
-		/// 验证回皮时间  0不验证  1验证
-		/// <summary>
-		public string validTareTime { get; set; }
-
-		/// <summary>
-		/// 验证时间间隔  0不验证  1验证
-		/// <summary>
-		public string validTimeInterval { get; set; }
-
-		/// <summary>
-		/// 验证对射(实时数据库停车位置)  0不验证  1验证
-		/// <summary>
-		public string validParkStatus { get; set; }
-
-		/// <summary>
-		/// 验证危化品超重  0不验证  1验证
-		/// <summary>
-		public string validExceedWgt { get; set; }
-
-		/// <summary>
-		/// 验证预报超差  0不验证  1验证
-		/// <summary>
-		public string validPredictionDiff { get; set; }
-
-		/// <summary>
-		/// 验证区域  0不验证  1验证
-		/// <summary>
-		public string validArea { get; set; }
-
-		/// <summary>
-		/// 是否有效 1有效 0无效
-		/// <summary>
-		public string validFlag { get; set; }
-
-		/// <summary>
-		/// 验证物料可计量时间段 0不验证  1验证
-		/// <summary>
-		public string validMatTime { get; set; }
-
-		/// <summary>
-		/// 是否进行车号修正 0不修正 1修正
-		/// <summary>
-		public string carMonitor { get; set; }
-
-		/// <summary>
-		/// 车号修正级别1-6
-		/// <summary>
-		public long? carMonitorLvl { get; set; }
-
-		/// <summary>
-		/// 0未呼叫,1呼叫待接听,2呼叫已接听
-		/// <summary>
-		public string isHelp { get; set; }
-
-		/// <summary>
-		/// 0智能终端,1远程计量呼叫(派位阶段),2远程接管
-		/// <summary>
-		public string isTakeOver { get; set; }
-
-		/// <summary>
-		/// 写入LED的值
-		/// <summary>
-		public string ledWriter { get; set; }
-
-		/// <summary>
-		/// 打印纸张
-		/// <summary>
-		public long? printNum { get; set; }
-
-		/// <summary>
-		/// 与实时库对应的采集点
-		/// <summary>
-		public string collectionCode { get; set; }
-
-		/// <summary>
-		/// 1计量完成  有值则是当前计量数据编号
+    public class MeterWorkMonitor
+    {
+        /// <summary>
+        /// 计量点编号
+        /// <summary>
+        //[AttributeID("pointNo")]
+        public string pointNo { get; set; }
+
+        /// <summary>
+        /// 计量点
+        /// <summary>
+        public string pointName { get; set; }
+
+        /// <summary>
+        /// 验证重量  0不验证  1验证
+        /// <summary>
+        public string validWgt { get; set; }
+
+        /// <summary>
+        /// 验证车号  0不验证  1验证
+        /// <summary>
+        public string validCarno { get; set; }
+
+        /// <summary>
+        /// 验证回皮时间  0不验证  1验证
+        /// <summary>
+        public string validTareTime { get; set; }
+
+        /// <summary>
+        /// 验证时间间隔  0不验证  1验证
+        /// <summary>
+        public string validTimeInterval { get; set; }
+
+        /// <summary>
+        /// 验证对射(实时数据库停车位置)  0不验证  1验证
+        /// <summary>
+        public string validParkStatus { get; set; }
+
+        /// <summary>
+        /// 验证危化品超重  0不验证  1验证
+        /// <summary>
+        public string validExceedWgt { get; set; }
+
+        /// <summary>
+        /// 验证预报超差  0不验证  1验证
+        /// <summary>
+        public string validPredictionDiff { get; set; }
+
+        /// <summary>
+        /// 验证区域  0不验证  1验证
+        /// <summary>
+        public string validArea { get; set; }
+
+        /// <summary>
+        /// 是否有效 1有效 0无效
+        /// <summary>
+        public string validFlag { get; set; }
+
+        /// <summary>
+        /// 验证物料可计量时间段 0不验证  1验证
+        /// <summary>
+        public string validMatTime { get; set; }
+
+        /// <summary>
+        /// 是否进行车号修正 0不修正 1修正
+        /// <summary>
+        public string carMonitor { get; set; }
+
+        /// <summary>
+        /// 车号修正级别1-6
+        /// <summary>
+        public long? carMonitorLvl { get; set; }
+
+        /// <summary>
+        /// 0未呼叫,1呼叫待接听,2呼叫已接听
+        /// <summary>
+        public string isHelp { get; set; }
+
+        /// <summary>
+        /// 0智能终端,1远程计量呼叫(派位阶段),2远程接管
+        /// <summary>
+        public string isTakeOver { get; set; }
+
+        /// <summary>
+        /// 写入LED的值
+        /// <summary>
+        public string ledWriter { get; set; }
+
+        /// <summary>
+        /// 打印纸张
+        /// <summary>
+        public long? printNum { get; set; }
+
+        /// <summary>
+        /// 与实时库对应的采集点
+        /// <summary>
+        public string collectionCode { get; set; }
+
+        /// <summary>
+        /// 1计量完成  有值则是当前计量数据编号
+        /// </summary>
+        public string isOverWgt { get; set; }
+
+        /// <summary>
+        /// 接管终端用户
+        /// </summary>
+        public string userNo { get; set; }
+
+        /// <summary>
+        /// 监控用户
+        /// </summary>
+        public string monitorUserNo { get; set; }
+
+        /// <summary>
+        /// 重置车号
+        /// </summary>
+        public string setCar { get; set; }
+
+        /// <summary>
+        /// 0不读取LED_WRITER的值,1读取
+        /// </summary>
+        public string ledKeep { get; set; }
+
+        /// <summary>
+        /// rfid车号
+        /// </summary>
+        public string rfidCar { get; set; }
+
+        /// <summary>
+        /// 抓拍车号
+        /// </summary>
+        public string photoCar { get; set; }
+
+        /// <summary>
+        /// 扫描车号
+        /// </summary>
+        public string scanCar { get; set; }
+
+        /// <summary>
+        /// 修正车号
+        /// </summary>
+        public string editCar { get; set; }
+
+        /// <summary>
+        /// 车号异常 0正常 1异常
+        /// </summary>
+        public string carErr { get; set; }
+
+        /// <summary>
+        /// 重量异常 0正常 1异常
+        /// </summary>
+        public string wgtErr { get; set; }
+
+        /// <summary>
+        /// 最后在线时间,由于时间不一定准,
+        /// 所以使用旧数据时间与当前时间比如果连续30次相同则认为掉线
+        /// </summary>
+        public DateTime? lastTime { get; set; }
+
+        /// <summary>
+        /// 车辆停留超时 0正常 1超时
+        /// </summary>
+        public string stopOverTime { get; set; }
+
+        /// <summary>
+        /// 终端提示信息
+        /// </summary>
+        public string msgInfo { get; set; }
+
+        /// <summary>
+        /// 终端显示的重量
+        /// </summary>
+        public long? wgt { get; set; }
+
+        /// <summary>
+        /// 是否是监控界面点击的远程 0否 1是
+        /// </summary>
+        public string isRemote { get; set; }
+
+        /// <summary>
+        /// 不验证联达  1不验证 0验证
+        /// </summary>
+        public string validLianda { get; set; }
+
+        /// <summary>
+        /// 验证物料点击:0不验证  1验证 
+        /// </summary>
+        public string validMatClick { get; set; }
+
+        /// <summary>
+        /// 验证计量区域:0不验证  1验证
+        /// </summary>
+        public string validMeterArea { get; set; }
+
+        /// <summary>
+        /// 验证是否存在委托:0不验证  1验证
+        /// </summary>
+        public string validIsPre { get; set; }
+
+        /// <summary>
+        /// 派位的时间<用于在界面显示>
+        /// </summary>
+        public DateTime? pwTime { get; set; }
+
+        /// <summary>
+        /// 重量稳定
+        /// </summary>
+        public int weightStatus { get; set; }
+
+        /// <summary>
+        /// 衡器电源状态(0正常 1异常)
+        /// </summary>
+        public string powerState { get; set; }
+
+        /// <summary>
+        /// 硬盘录像机状态(0正常 1异常)
+        /// </summary>
+        public string dvrState { get; set; }
+
+        /// <summary>
+        /// 接管用户IP
+        /// </summary>
+        public string userIp { get; set; }
+
+        /// <summary>
+		/// MOXA状态(0正常 1异常)
 		/// </summary>
-		public string isOverWgt { get; set; }
+		public string moxaState { get; set; }
 
-		/// <summary>
-		/// 接管终端用户
+        /// <summary>
+		/// PLC状态(0正常 1异常)
 		/// </summary>
-		public string userNo { get; set; }
-
-		/// <summary>
-		/// 监控用户
-		/// </summary>
-		public string monitorUserNo { get; set; }
-
-		/// <summary>
-		/// 重置车号
-		/// </summary>
-		public string setCar { get; set; }
-
-		/// <summary>
-		/// 0不读取LED_WRITER的值,1读取
-		/// </summary>
-		public string ledKeep { get; set; }
-
-		/// <summary>
-		/// rfid车号
-		/// </summary>
-		public string rfidCar { get; set; }
-
-		/// <summary>
-		/// 抓拍车号
-		/// </summary>
-		public string photoCar { get; set; }
-
-		/// <summary>
-		/// 扫描车号
-		/// </summary>
-		public string scanCar { get; set; }
-
-		/// <summary>
-		/// 修正车号
-		/// </summary>
-		public string editCar { get; set; }
-
-		/// <summary>
-		/// 车号异常 0正常 1异常
-		/// </summary>
-		public string carErr { get; set; }
-
-		/// <summary>
-		/// 重量异常 0正常 1异常
-		/// </summary>
-		public string wgtErr { get; set; }
-
-		/// <summary>
-		/// 最后在线时间,由于时间不一定准,
-		/// 所以使用旧数据时间与当前时间比如果连续30次相同则认为掉线
-		/// </summary>
-		public DateTime? lastTime { get; set; }
-
-		/// <summary>
-		/// 车辆停留超时 0正常 1超时
-		/// </summary>
-		public string stopOverTime { get; set; }
-
-		/// <summary>
-		/// 终端提示信息
-		/// </summary>
-		public string msgInfo { get; set; }
-
-		/// <summary>
-		/// 终端显示的重量
-		/// </summary>
-		public long? wgt { get; set; }
-
-		/// <summary>
-		/// 是否是监控界面点击的远程 0否 1是
-		/// </summary>
-		public string isRemote { get; set; }
-
-		/// <summary>
-		/// 不验证联达  1不验证 0验证
-		/// </summary>
-		public string validLianda { get; set; }
-
-		/// <summary>
-		/// 验证物料点击:0不验证  1验证 
-		/// </summary>
-		public string validMatClick { get; set; }
-
-		/// <summary>
-		/// 验证计量区域:0不验证  1验证
-		/// </summary>
-		public string validMeterArea { get; set; }
-
-		/// <summary>
-		/// 验证是否存在委托:0不验证  1验证
-		/// </summary>
-		public string validIsPre { get; set; }
-
-		/// <summary>
-		/// 派位的时间<用于在界面显示>
-		/// </summary>
-		public DateTime? pwTime { get; set; }
-
-		/// <summary>
-		/// 重量稳定
-		/// </summary>
-		public int weightStatus { get; set; }
-	}
+		public string plcState { get; set; }
+
+        /// <summary>
+        /// 红外对射状态(0正常 1异常)
+        /// </summary>
+        public string leftInfraredRayState { get; set; }
+
+        /// <summary>
+        /// 红外对射状态(0正常 1异常)
+        /// </summary>
+        public string rightInfraredRayState { get; set; }
+
+        /// <summary>
+        /// 功放状态(0正常 1异常)
+        /// </summary>
+        public string amplifierState { get; set; }
+
+        /// <summary>
+        /// 照明灯状态(0关闭的 1打开的)
+        /// </summary>
+        public string lampState { get; set; }
+
+        /// <summary>
+        /// 站点类型
+        /// </summary>
+        public string spotTypeNo { get; set; }
+
+        /// <summary>
+        /// 红绿灯状态(0绿灯 1红灯)
+        /// </summary>
+        public string redGreenLightState { get; set; }
+
+        /// <summary>
+        /// 后红外光栅状态(0正常 1异常)
+        /// </summary>
+        public string frontInfraredRayState { get; set; }
+
+        /// <summary>
+        /// 后红外光栅状态(0正常 1异常)
+        /// </summary>
+        public string rearInfraredRayState { get; set; }
+
+        /// <summary>
+        /// rfid状态(0正常 1异常)
+        /// </summary>
+        public string rfidState { get; set; }
+    }
 }

+ 1 - 1
MeterModuleLibrary/uc/ucWeightCarTJXJG.cs

@@ -78,7 +78,7 @@ namespace MeterModuleLibrary
             {
                 if (txtWeight.IsHandleCreated)
                 {
-                    txtWeight.Invoke(new UpdateUIEventHander(UpdateUI_Method), txtWeight, new UpdateUIArgs(db + ""));
+                    txtWeight.Invoke(new UpdateUIEventHander(UpdateUI_Method), txtWeight, new UpdateUIArgs(db.ToString("0.00") + ""));
                 }
             }
         }

+ 1 - 0
MeterPlugInLibrary/LED/LED_Control.cs

@@ -226,6 +226,7 @@ namespace MeterPlugInLibrary
 
         public void setStaticLineMsg(string Ip, string ledInfo)
         {
+            ledInfo =  ledInfo.Replace(",", "\r\n");
             int nResult;
             LedDll.COMMUNICATIONINFO CommunicationInfo = new LedDll.COMMUNICATIONINFO();//定义一通讯参数结构体变量用于对设定的LED通讯,具体对此结构体元素赋值说明见COMMUNICATIONINFO结构体定义部份注示
 

File diff ditekan karena terlalu besar
+ 422 - 89
MeterSceneLibrary/JISCO/InnerCarJISCO.cs


+ 83 - 46
MeterSceneLibrary/JISCO/OuterCarJISCO.cs

@@ -101,12 +101,15 @@ namespace MeterSceneLibrary
                             PbCache.isActual = true;
                             PbCache.isInnerCar = true;
                             rt = saveMethod.doAddFirst(null, mwaf);
+                            PbCache.voiceType = 1;
                             PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
                         }
                         // 存在一条使用中的委托
                         else if (listPreScale.Count == 1 && listPreScale[0].valueFlag == "4")
                         {
                             rt = saveMethod.doError("不存在一次计量数据却存在一条使用中的委托");
+                            PbCache.voiceType = 18;
+                            PbCache.LEDResultMessage = "不存在一次计量数据却存在一条使用中的委托";
                         }
                         // 只存在一条未使用的委托
                         else if (listPreScale.Count == 1 && (listPreScale[0].valueFlag == "0" || listPreScale[0].valueFlag == "1"))
@@ -137,6 +140,7 @@ namespace MeterSceneLibrary
                                     // 把委托编号复制给一次计量记录
                                     PbCache.isActual = true;
                                     PbCache.isInnerCar = true;
+                                    PbCache.voiceType = 1;
                                     rt = saveMethod.doAddFirst(listPreScale[0], mwaf);
                                     PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
                                 }
@@ -150,6 +154,7 @@ namespace MeterSceneLibrary
                                     {
                                         PbCache.isActual = true;
                                         PbCache.isInnerCar = true;
+                                        PbCache.voiceType = 1;
                                         rt = saveMethod.doAddFirst(null, mwaf);
                                         PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
                                     }
@@ -158,7 +163,7 @@ namespace MeterSceneLibrary
                                     {
                                         /* 委托和当次存在委托满足一车多卸逻辑 && 当次重量值小于上次净重记录中的皮重值
                                          * 一车多卸判断逻辑1
-                                         * 存在判断依据(委托类型为一车多卸,且上次净数据中匹配委托类型也是一车多卸)
+                                         * 存在判断依据(委托类型为一车多卸,且上次净数据中匹配委托类型也是一车多卸)
                                          *
                                          * 一车多卸判断逻辑2
                                          * 委托不存在判断依据,则根据签发时间排序
@@ -168,7 +173,7 @@ namespace MeterSceneLibrary
 
                                         bool isHZ = false;
                                         // 签发时间比较
-                                        // 通过上次净记录,找到该委托的签发时间
+                                        // 通过上次净记录,找到该委托的签发时间
                                         RESTfulResult<List<PreTrackScale>> lastPre = preTrackScaleService.doQueryWf(new PreTrackScale { predictionNo = lastMeterWorkCarActual.predictionNo });
                                         //int min = 999;
 
@@ -191,10 +196,10 @@ namespace MeterSceneLibrary
                                         //    isYCDX = true;
                                         //}
 
-                                        if (lastPre.Data[0].predictionCombination == listPreScale[0].predictionCombination && lastPre.Data[0].predictionType == "6" && listPreScale[0].predictionType == "6")
-                                        {
-                                            isYCDX = true;
-                                        }
+                                        //if (lastPre.Data[0].predictionCombination == listPreScale[0].predictionCombination && lastPre.Data[0].predictionType == "6" && listPreScale[0].predictionType == "6")
+                                        //{
+                                        //    isYCDX = true;
+                                        //}
                                         
                                         if (!string.IsNullOrEmpty(lastPre.Data[0].receiverRemark) && !string.IsNullOrEmpty(listPreScale[0].receiverRemark) && listPreScale[0].tempConveyance == lastPre.Data[0].tempConveyance && !string.IsNullOrEmpty(listPreScale[0].tempConveyance) && !string.IsNullOrEmpty(lastPre.Data[0].tempConveyance))
                                         {
@@ -205,7 +210,7 @@ namespace MeterSceneLibrary
                                         {
                                             /*
                                              * a. 取上次净重记录的皮重为当次毛重
-                                             * b. 净匹配委托
+                                             * b. 净匹配委托
                                              */
                                             // 新增一条毛重数据
                                             MeterWorkCarActualFirst tempCarActualFirst = new MeterWorkCarActualFirst();
@@ -243,13 +248,13 @@ namespace MeterSceneLibrary
                                             // 将当次一次计量数据重量类型改为皮重
                                             mwaf.weightType = "1"; // 常规皮重
                                             mwaf.isPreScale = "1";
-                                            // 混装卸逻辑,并净匹配委托
+                                            // 混装卸逻辑,并净匹配委托
                                             rt = saveMethod.doNetHZHX(listPreScale[0], tempCarActualFirst, mwaf);
                                         }
 
                                         /* 匹配委托和当次委托满足混装逻辑 && 当次重量大于上次净重记录中的毛重值
                                          * 混装判断逻辑1
-                                         * 存在判断依据(委托类型为混装,且上次净数据中匹配委托类型也是混装)
+                                         * 存在判断依据(委托类型为混装,且上次净数据中匹配委托类型也是混装)
                                          *
                                          * 混装判断逻辑2
                                          * 两次委托发货单位一致,净重时间在4个小时之内
@@ -258,7 +263,7 @@ namespace MeterSceneLibrary
 
 
                                         // 签发时间比较
-                                        // 通过上次净记录,找到该委托的签发时间
+                                        // 通过上次净记录,找到该委托的签发时间
                                         //int hour = 999;
 
                                         //if (lastPre.Succeed && lastPre.Data.Count == 1)
@@ -286,7 +291,7 @@ namespace MeterSceneLibrary
                                         {
                                             /*
                                              * a. 取上次净重记录中的毛重值为当次皮重
-                                             * b. 净匹配委托
+                                             * b. 净匹配委托
                                              */
                                             // 新增一条皮重数据
                                             MeterWorkCarActualFirst newActualFirst = new MeterWorkCarActualFirst();
@@ -327,9 +332,11 @@ namespace MeterSceneLibrary
                                             // 将当次一次计量数据重量类型改为毛重
                                             mwaf.weightType = "0"; // 毛重
                                             mwaf.isPreScale = "1";
-                                            // 混装逻辑,并净匹配委托
+                                            // 混装逻辑,并净匹配委托
                                             rt = saveMethod.doAddNetNewHZHX(listPreScale[0], newActualFirst, mwaf);
-                                            rt.resultInfo += ",混装业务";
+                                            rt.resultInfo += ",混装业务"; 
+                                            PbCache.voiceType = 1; 
+                                            PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成混装业务", PbCache.lockCarNo, Math.Round(PbCache.lockWgt / 1000, 2), Math.Round((PbCache.lockWgt - double.Parse(lastMeterWorkCarActual.grossWeight.ToString()) / 1000), 2));
                                         }
                                         else
                                         {
@@ -337,12 +344,13 @@ namespace MeterSceneLibrary
                                             mwaf = entityBase2.format<MeterWorkCarActualFirst>(listPreScale[0], mwaf);
                                             PbCache.isActual = true;
                                             PbCache.isInnerCar = true;
+                                            PbCache.voiceType = 1;
                                             rt = saveMethod.doAddFirst(listPreScale[0], mwaf);
                                             PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
                                         }
 
                                     }
-                                    // 存在净记录,不满足以上逻辑
+                                    // 存在净记录,不满足以上逻辑
                                     else {
                                         /*
                                          * a. 正常保存重量(重量类型为空)
@@ -355,6 +363,7 @@ namespace MeterSceneLibrary
                                         mwaf = entityBase.format<MeterWorkCarActualFirst>(listPreScale[0], mwaf);
                                         PbCache.isActual = true;
                                         PbCache.isInnerCar = true;
+                                        PbCache.voiceType = 1;
                                         rt = saveMethod.doAddFirst(listPreScale[0], mwaf);
                                         PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
                                     }
@@ -369,6 +378,7 @@ namespace MeterSceneLibrary
                         else if (listPreScale.Count == 2 && listPreScale[0].valueFlag == "4" && listPreScale[1].valueFlag == "4")
                         {
                             rt = saveMethod.doAddFirst(null, mwaf);
+                            PbCache.voiceType = 1;
                             PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
                         }
                         // 存在多条委托
@@ -406,6 +416,8 @@ namespace MeterSceneLibrary
                             if (flag)
                             {
                                 pre = listPreScale[0];
+                                PbCache.voiceType = 1;
+                                PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
                             }
                             if (listPreScale.Count == 2 && listPreScale[0].valueFlag == "1" && listPreScale[1].valueFlag == "1" && listPreScale[0].predictionType == "6" && listPreScale[1].predictionType == "6")
                             {
@@ -421,20 +433,23 @@ namespace MeterSceneLibrary
                             }
                             if (listPreScale.Count == 2 && listPreScale[0].matterNo == listPreScale[1].matterNo && (listPreScale[0].receivingUintNo == listPreScale[1].forwardingUnitNo || listPreScale[0].forwardingUnitNo == listPreScale[1].receivingUintNo))
                             {
-                                // 正常净并生成两条净重数据
+                                // 正常净并生成两条净重数据
                                 pre = listPreScale[1];
                                 res = ",双委托业务";
+                                PbCache.voiceType = 1;
                                 PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,双委托业务", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
                             }
                             if (listPreScale.Count == 2 && !string.IsNullOrEmpty(listPreScale[0].receiverRemark) && !string.IsNullOrEmpty(listPreScale[1].receiverRemark) && listPreScale[0].tempConveyance == listPreScale[1].tempConveyance && !string.IsNullOrEmpty(listPreScale[0].tempConveyance) && !string.IsNullOrEmpty(listPreScale[1].tempConveyance))
                             {
                                 pre = listPreScale[1];
                                 res = ",混装业务";
+                                PbCache.voiceType = 1;
                                 PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,混装", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
                             }
                             if (pre == null)
                             {
                                 res = ",存在多个委托,无法自动匹配";
+                                PbCache.voiceType = 8;
                                 PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,多委托无法自动匹配请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
                                 PbCache.monitorResultMessage = string.Format("计量完成,车号{0}存在{1}个委托,无法自动匹配", PbCache.lockCarNo, listPreScale.Count);
                             }
@@ -470,7 +485,7 @@ namespace MeterSceneLibrary
                         }
                     }
 
-                    // 校验上次计量数据和当次计量数据是否满足基础配置表中的净最小值条件
+                    // 校验上次计量数据和当次计量数据是否满足基础配置表中的净最小值条件
                     if (Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) > diffrentWgt || listMonitor.Data[0].validPredictionDiff == "0")
                     {
                         if (rmPre.Succeed)
@@ -482,15 +497,16 @@ namespace MeterSceneLibrary
                                 if (listPreScale == null || listPreScale.Count == 0)
                                 {
                                     /*
-                                     * a. 正常产生净数据(状态为未发布)
+                                     * a. 正常产生净数据(状态为未发布)
                                      * b. 提示司机当前计量数据未匹配委托,请联系计量打印进行处理
                                      */
                                     rt = saveMethod.doNet(null, rmX.Data[0], mwaf);
                                     rt.isWarn = true;
                                     rt.WarnContent = "validIsPre";
-                                    rt.resultInfo += ",无委托洁净";
-                                    PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成无委托洁净请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
-                                    PbCache.monitorResultMessage = string.Format("计量完成,车号{0}无委托洁净", PbCache.lockCarNo, listPreScale.Count);
+                                    rt.resultInfo += ",无委托结净";
+                                    PbCache.voiceType = 1;
+                                    PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成无委托结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
+                                    PbCache.monitorResultMessage = string.Format("计量完成,车号{0}无委托结净", PbCache.lockCarNo, listPreScale.Count);
 
                                 }
                                 // 只存在一条使用中的委托
@@ -501,7 +517,9 @@ namespace MeterSceneLibrary
                                      * b. 提示司机存在一条使用中的委托,请联系计量大厅进行确认
                                      * c. 自动进行语音求助
                                      */
+                                    PbCache.voiceType = 18;
                                     rt = saveMethod.doError("存在一条使用中的委托,请联系计量大厅进行确认");
+                                    PbCache.LEDResultMessage = "存在一条使用中的委托,请联系计量大厅进行确认";
                                 }
                                 // 只存在一条未使用的委托数据
                                 else if (listPreScale.Count == 1 && listPreScale[0].valueFlag == "1")
@@ -513,7 +531,7 @@ namespace MeterSceneLibrary
                                     EntityBase<PreTrackScale> entityBase = new EntityBase<PreTrackScale>();
                                     mwaf = entityBase.format<MeterWorkCarActualFirst>(listPreScale[0], mwaf);
                                     mwaf.isPreScale = "1";
-
+                                    PbCache.voiceType = 1;
                                     rt = saveMethod.doNet(listPreScale[0], rmX.Data[0], mwaf);
                                     PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
                                 }
@@ -527,13 +545,17 @@ namespace MeterSceneLibrary
                                      */
                                     if (listPreScale[0].predictionType == "5" && listPreScale[1].predictionType == "5" && listPreScale[0].predictionCombination == listPreScale[1].predictionCombination)
                                     {
-                                        // 正常净并生成两条净重数据
+                                        // 正常净并生成两条净重数据
                                         rt = saveMethod.doNetAddTwo(listPreScale, rmX.Data[0], mwaf);
+                                        PbCache.voiceType = 1;
+                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成双委托结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
                                     }
                                     else if (listPreScale[0].matterNo == listPreScale[1].matterNo && (listPreScale[0].receivingUintNo == listPreScale[1].forwardingUnitNo || listPreScale[0].forwardingUnitNo == listPreScale[1].receivingUintNo))
                                     {
-                                        // 正常净并生成两条净重数据
+                                        // 正常净并生成两条净重数据
                                         rt = saveMethod.doNetAddTwo(listPreScale, rmX.Data[0], mwaf);
+                                        PbCache.voiceType = 1;
+                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成双委托结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
                                     }
                                     /*
                                      * 委托关系满足混装逻辑
@@ -541,7 +563,7 @@ namespace MeterSceneLibrary
                                     else if (listPreScale.Count == 2 && !string.IsNullOrEmpty(listPreScale[0].receiverRemark) && !string.IsNullOrEmpty(listPreScale[1].receiverRemark) && listPreScale[0].tempConveyance == listPreScale[1].tempConveyance && !string.IsNullOrEmpty(listPreScale[0].tempConveyance) && !string.IsNullOrEmpty(listPreScale[1].tempConveyance))
                                     {
                                         /*
-                                         * a. 正常净产生一条净重记录
+                                         * a. 正常净产生一条净重记录
                                          * b. 自动生成一条一次毛重计量数据,重量值值为当次计量数据中的毛重
                                          */
                                         MeterWorkCarActualFirst mwca = new MeterWorkCarActualFirst();
@@ -554,16 +576,16 @@ namespace MeterSceneLibrary
                                         //EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
                                         //mwaf = entityBase1.format<MeterWorkCarActualFirst>(listPreScale[0], mwaf);
                                         //mwaf.isPreScale = "1";
-
+                                        PbCache.voiceType = 1;
                                         rt = saveMethod.doNetHZHX(listPreScale[1], mwca, mwaf);
-                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
+                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成混装业务", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
                                         rt.resultInfo += ",混装业务";
                                     }
                                     // 不满足以上逻辑
                                     else
                                     {
                                         /*
-                                         * a. 正常净产生一条净重记录(状态为未发布)
+                                         * a. 正常净产生一条净重记录(状态为未发布)
                                          * b. 提示司机当前存计量数据未匹配委托
                                          * c. 进行大厅报警,请联系计量大厅进行处理
                                          * d. 自动进行语音求助(但是原有的语音求助逻辑是重量归零相应秤点的求助信息也会清空)
@@ -572,7 +594,8 @@ namespace MeterSceneLibrary
                                         rt.isWarn = true;
                                         rt.WarnContent = "validIsPre";
                                         rt.resultInfo += ",存在多个委托,无法自动匹配";
-                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,多委托无法自动匹配请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+                                        PbCache.voiceType = 8;
+                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,多委托请联系大厅", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
                                         PbCache.monitorResultMessage = string.Format("计量完成,车号{0}存在{1}个委托,无法自动匹配", PbCache.lockCarNo, listPreScale.Count);
                                     }
                                 }
@@ -585,7 +608,7 @@ namespace MeterSceneLibrary
                                     // */
                                     //if (1 == 1)
                                     //{
-                                    //    // 正常净并生成两条净重数据
+                                    //    // 正常净并生成两条净重数据
                                     //    rt = saveMethod.doNetAddTwo(listPreScale, rmX.Data[0], mwaf);
                                     //}
                                     ///*
@@ -595,20 +618,20 @@ namespace MeterSceneLibrary
                                     //else if (2 == 2)
                                     //{
                                     //    /*
-                                    //     * a. 正常净产生一条净重记录
+                                    //     * a. 正常净产生一条净重记录
                                     //     * b. 自动生成一条一次毛重计量数据,重量值值为当次计量数据中的毛重
                                     //     */
 
                                     //    // 将当次一次计量数据重量类型改为毛重
                                     //    mwaf.weightType = "0"; // 毛重
-                                    //                           // 净匹配委托
+                                    //                           // 净匹配委托
                                     //    rt = saveMethod.doNetMass(scale, mwaf);
                                     //}
                                     //// 不满足以上逻辑
                                     //else
                                     //{
                                     //    /*
-                                    //     * a. 正常净产生一条净重记录(状态为未发布)
+                                    //     * a. 正常净产生一条净重记录(状态为未发布)
                                     //     * b. 提示司机当前计量数据未匹配委托,请联系计量大厅进行委托匹配
                                     //     * c. 自动进行语音求助(但是原有的语音求助逻辑是重量归零相应秤点的求助信息也会清空)
                                     //     */
@@ -645,13 +668,16 @@ namespace MeterSceneLibrary
                                         EntityBase<PreTrackScale> entityBase = new EntityBase<PreTrackScale>();
                                         mwaf = entityBase.format<MeterWorkCarActualFirst>(pre, mwaf);
                                         mwaf.isPreScale = "1";
+                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
                                     }
+                                    PbCache.voiceType = 1;
                                     rt = saveMethod.doNet(pre, rmX.Data[0], mwaf);
                                     rt.isWarn = true;
                                     rt.WarnContent = "validIsPre";
                                     if (pre == null)
                                     {
-                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,多委托无法自动匹配请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+                                        PbCache.voiceType = 8;
+                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,多委托请联系大厅", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
                                         PbCache.monitorResultMessage = string.Format("计量完成,车号{0}存在{1}个委托,无法自动匹配", PbCache.lockCarNo, listPreScale.Count);
                                         rt.resultInfo += ",存在多个委托,无法自动匹配";
                                     }
@@ -682,7 +708,7 @@ namespace MeterSceneLibrary
                                     EntityBase<PreTrackScale> entityBase = new EntityBase<PreTrackScale>();
                                     mwaf = entityBase.format<MeterWorkCarActualFirst>(pts, mwaf);
                                     mwaf.isPreScale = "1";
-
+                                    PbCache.voiceType = 1;
                                     rt = saveMethod.doNet(pts, oldCarActural, mwaf);
                                     PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
 
@@ -699,13 +725,17 @@ namespace MeterSceneLibrary
                                      */
                                     if (listPreScale[0].predictionType == "5" && listPreScale[1].predictionType == "5" && listPreScale[0].predictionCombination == listPreScale[1].predictionCombination)
                                     {
-                                        // 正常净并生成两条净重数据
+                                        // 正常净并生成两条净重数据
                                         rt = saveMethod.doNetAddTwo(listPreScale, rmX.Data[0], mwaf);
+                                        PbCache.voiceType = 1;
+                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成双委托结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
                                     }
                                     else if (listPreScale[0].matterNo == listPreScale[1].matterNo && (listPreScale[0].receivingUintNo == listPreScale[1].forwardingUnitNo || listPreScale[0].forwardingUnitNo == listPreScale[1].receivingUintNo))
                                     {
-                                        // 正常净并生成两条净重数据
+                                        // 正常净并生成两条净重数据
                                         rt = saveMethod.doNetAddTwo(listPreScale, rmX.Data[0], mwaf);
+                                        PbCache.voiceType = 1;
+                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成双委托结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
                                     }
                                     /*
                                      * 委托关系满足混装混卸逻辑
@@ -713,7 +743,7 @@ namespace MeterSceneLibrary
                                     else if (listPreScale.Count == 2 && !string.IsNullOrEmpty(listPreScale[0].receiverRemark) && !string.IsNullOrEmpty(listPreScale[1].receiverRemark) && listPreScale[0].tempConveyance == listPreScale[1].tempConveyance && !string.IsNullOrEmpty(listPreScale[0].tempConveyance) && !string.IsNullOrEmpty(listPreScale[1].tempConveyance))
                                     {
                                         /*
-                                         * a. 正常净产生一条净重记录
+                                         * a. 正常净产生一条净重记录
                                          * b. 自动生成一条一次毛重计量数据,重量值值为当次计量数据中的毛重
                                          */
                                         MeterWorkCarActualFirst mwca = new MeterWorkCarActualFirst();
@@ -739,13 +769,14 @@ namespace MeterSceneLibrary
 
                                         rt = saveMethod.doNetHZHX(pts, mwca, mwaf);
                                         rt.resultInfo += ",混装业务";
-                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
+                                        PbCache.voiceType = 1;
+                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成混装业务", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
                                     }
                                     // 不满足以上逻辑
                                     else
                                     {
                                         /*
-                                         * a. 正常净产生一条净重记录(状态为未发布)
+                                         * a. 正常净产生一条净重记录(状态为未发布)
                                          * b. 提示司机当前存计量数据未匹配委托
                                          * c. 进行大厅报警,请联系计量大厅进行处理
                                          * d. 自动进行语音求助(但是原有的语音求助逻辑是重量归零相应秤点的求助信息也会清空)
@@ -777,13 +808,13 @@ namespace MeterSceneLibrary
                                         EntityBase<PreTrackScale> entityBase = new EntityBase<PreTrackScale>();
                                         mwaf = entityBase.format<MeterWorkCarActualFirst>(pts, mwaf);
                                         mwaf.isPreScale = "1";
-
+                                        PbCache.voiceType = 1;
                                         rt = saveMethod.doNet(pts, oldCarActural, mwaf);
                                         PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
-                                        PbCache.monitorResultMessage = string.Format("计量完成,在净时仍然存在{1}个委托)", PbCache.lockCarNo, listPreScale.Count-1);
+                                        PbCache.monitorResultMessage = string.Format("计量完成,在净时仍然存在{1}个委托)", PbCache.lockCarNo, listPreScale.Count-1);
 
                                         rt.result = true;
-                                        rt.resultInfo = "称重完成";
+                                        rt.resultInfo = "计量完成";
                                     }
                                 }
                                 else if (listPreScale.Count == 2 && listPreScale[0].valueFlag == "4" && listPreScale[1].valueFlag == "4")
@@ -791,8 +822,9 @@ namespace MeterSceneLibrary
                                     rt = saveMethod.doNet(null, rmX.Data[0], mwaf);
                                     rt.isWarn = true;
                                     rt.WarnContent = "validIsPre";
+                                    PbCache.voiceType = 8;
                                     rt.resultInfo += ",存在多个委托,无法自动匹配";
-                                    PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,多委托无法自动匹配请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+                                    PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,多委托请联系大厅", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
                                     PbCache.monitorResultMessage = string.Format("计量完成,车号{0}存在{1}个委托,无法自动匹配", PbCache.lockCarNo, listPreScale.Count);
                                 }
                                 // 存在多条未使用的委托数据
@@ -817,13 +849,14 @@ namespace MeterSceneLibrary
                                     {
                                         rt.isWarn = true;
                                         rt.WarnContent = "validIsPre";
+                                        PbCache.voiceType = 8;
                                         rt.resultInfo += ",存在多个委托,无法自动匹配";
-                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,多委托无法自动匹配请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,多委托请联系大厅", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
                                         PbCache.monitorResultMessage = string.Format("计量完成,车号{0}存在{1}个委托,无法自动匹配", PbCache.lockCarNo, listPreScale.Count);
                                     }
                                     else
                                     {
-                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
                                     }
                                 }
                             }
@@ -835,6 +868,8 @@ namespace MeterSceneLibrary
                         rt = saveMethod.doError("第一次计量重量【" + rmX.Data[0].meterWeight.Value / 1000 + "T】和第二次计量重量【" + PbCache.lockWgt / 1000 + "T】接近,小于结净最小值【" + diffrentWgt / 1000 + " T】");
                         rt.isWarn = true;
                         rt.WarnContent = "validWgt";
+                        PbCache.voiceType = 4;
+                        PbCache.LEDResultMessage = "计量失败,小于结净最小值,请联系计量大厅";
                     }
                 }
                 else
@@ -843,6 +878,8 @@ namespace MeterSceneLibrary
                     PbCache.isInnerCar = true;
                     rt = saveMethod.doAddFirst(listPreScale[0], mwaf);
                     rt.resultInfo = "存在多条一次计量数据";
+                    PbCache.voiceType = 3;
+                    PbCache.LEDResultMessage = "存在多条一次计量数据";
                     rt.isWarn = true;
                     rt.WarnContent = "validWgt";
                 }
@@ -853,7 +890,7 @@ namespace MeterSceneLibrary
             }
 
             return rt;
-        }
+         }
 
         
     }

+ 6 - 6
MeterSceneLibrary/JISCO/private/SaveMethod.cs

@@ -314,8 +314,8 @@ namespace MeterSceneLibrary.JISCO
             //净重=毛-皮-附加重量
             netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
             netDb.netMode = "1"; //1:正常结净;2:匹配结净
-            netDb.valueFlag = "0"; //0=有效,1=作废
-            netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
+            netDb.valueFlag = "1"; //0=有效,1=作废
+            netDb.uploadFlag = "1"; //0=待审核;1:待上传;2=已上传
             netDb.dataSource = "1";//1 = 智能终端,2 = 本地计量,3 = 应急计量,4 = 手动录入(计量票据录入)
                                    //要判断下当前是否勾选了不验证皮重
 
@@ -332,7 +332,7 @@ namespace MeterSceneLibrary.JISCO
             // 保存结净记录,后续改成统一提交模式  BourneCao
 
             MeterWorkCarActualService actualService = new MeterWorkCarActualService();
-            RESTfulResult<string> rmI = actualService.doAddNetHZHX(actualFirst2, actualFirst, netDb, monitorNote, "0");
+            RESTfulResult<string> rmI = actualService.doAddNetHZHX(actualFirst2, actualFirst2, netDb, monitorNote, "0");
 
             if (rmI.Succeed)
             {
@@ -429,8 +429,8 @@ namespace MeterSceneLibrary.JISCO
             //净重=毛-皮-附加重量
             netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
             netDb.netMode = "1"; //1:正常结净;2:匹配结净
-            netDb.valueFlag = "0"; //0=有效,1=作废
-            netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
+            netDb.valueFlag = "1"; //0=有效,1=作废
+            netDb.uploadFlag = "1"; //0=待审核;1:待上传;2=已上传
             netDb.dataSource = "1";//1 = 智能终端,2 = 本地计量,3 = 应急计量,4 = 手动录入(计量票据录入)
                                    //要判断下当前是否勾选了不验证皮重
 
@@ -921,7 +921,7 @@ namespace MeterSceneLibrary.JISCO
                 rt.resultInfo = "计量完成";
                 PbCache.actualFirstNo = rmI.Data;
                 PbCache.strQRCode = rmI.Message;
-                PbCache.isTareWeight = false;//皮重
+                PbCache.isTareWeight = true;//皮重
             }
             else
             {

+ 5 - 1
TrainVideoDataDispose/App.config

@@ -4,7 +4,8 @@
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
   </startup>
   <appSettings>
-    <add key="ServiceUrl" value="http://127.0.0.1:9004/v1" />
+    <!--<add key="ServiceUrl" value="http://127.0.0.1:9004/v1" />-->
+    <add key="ServiceUrl" value="http://10.104.4.105:9004/v1" />
     <!--<add key="ServiceUrl" value="http://192.168.107.60:8888/icore.icp.winform/pass/jlcar"/>-->
     <!--<add key="ServiceUrl" value="http://192.168.185.29/icore.icp.winform/pass/jlcar"/>-->
     <!--实时库地址-->
@@ -40,6 +41,9 @@
 
     <!--厂内外车配置:001004003(内部),001004002(外部)-->
     <add key="carTypeName" value="内部" />
+  
+    <!--厂内外车配置:001004003(内部),001004002(外部)-->
+    <add key="interval" value="10" />
   </appSettings>
   <system.web>
     <membership defaultProvider="ClientAuthenticationMembershipProvider">

+ 1 - 1
TrainVideoDataDispose/TrainVideoDataDispose.csproj

@@ -43,7 +43,7 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <Prefer32Bit>false</Prefer32Bit>
-    <PlatformTarget>x64</PlatformTarget>
+    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>

+ 180 - 122
TrainVideoDataDispose/text.cs

@@ -12,6 +12,10 @@ using System.Runtime.InteropServices;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
+using System.Xml;
+using Common;
+using System.Configuration;
+using com.hnshituo.core.webapp.vo;
 
 namespace TrainVideoDataDispose
 {
@@ -33,6 +37,7 @@ namespace TrainVideoDataDispose
         public CHCNetSDK.RemoteConfigCallback remoteConfigCallback; 
         //private PlayCtrl.DECCBFUN m_fDisplayFun = null;
         public delegate void MyDebugInfo(string str);
+        private MetetBaseRailwayAiweightService metetBaseRailwayAiweightService = new MetetBaseRailwayAiweightService();
 
         private Label labelLogin;
         public text()
@@ -42,145 +47,198 @@ namespace TrainVideoDataDispose
 
         private void button1_Click(object sender, EventArgs e)
         {
-            bool m_bInitSDK = CHCNetSDK.NET_DVR_Init();
-            string DVRIPAddress = "10.111.67.23"; //设备IP地址或者域名 Device IP
-            Int16 DVRPortNumber = Int16.Parse("8000");//设备服务端口号 Device Port
-            string DVRUserName = "admin";//设备登录用户名 User name to login
-            string DVRPassword = "Admin12345";//设备登录密码 Password to login
-
-            //设备IP地址或者域名
-            byte[] byIP = System.Text.Encoding.Default.GetBytes(DVRIPAddress);
-            pLoginInfo.sDeviceAddress = new byte[129];
-            byIP.CopyTo(pLoginInfo.sDeviceAddress, 0);
-
-            //设备用户名
-            byte[] byUserName = System.Text.Encoding.Default.GetBytes(DVRUserName);
-            pLoginInfo.sUserName = new byte[64];
-            byUserName.CopyTo(pLoginInfo.sUserName, 0);
-
-            //设备密码
-            byte[] byPassword = System.Text.Encoding.Default.GetBytes(DVRPassword);
-            pLoginInfo.sPassword = new byte[64];
-            byPassword.CopyTo(pLoginInfo.sPassword, 0);
-
-            pLoginInfo.wPort = 8000;
-
-            if (LoginCallBack == null)
-            {
-                LoginCallBack = new CHCNetSDK.LOGINRESULTCALLBACK(cbLoginCallBack);//注册回调函数                    
-            }
-            pLoginInfo.cbLoginResult = LoginCallBack;
-            pLoginInfo.bUseAsynLogin = true;
-
-            //登录设备 Login the device
+            #region 海康
+            //bool m_bInitSDK = CHCNetSDK.NET_DVR_Init();
+            //string DVRIPAddress = '10.111.67.23'; //设备IP地址或者域名 Device IP
+            //Int16 DVRPortNumber = Int16.Parse('8000');//设备服务端口号 Device Port
+            //string DVRUserName = 'admin';//设备登录用户名 User name to login
+            //string DVRPassword = 'Admin12345';//设备登录密码 Password to login
+
+            ////设备IP地址或者域名
+            //byte[] byIP = System.Text.Encoding.Default.GetBytes(DVRIPAddress);
+            //pLoginInfo.sDeviceAddress = new byte[129];
+            //byIP.CopyTo(pLoginInfo.sDeviceAddress, 0);
+
+            ////设备用户名
+            //byte[] byUserName = System.Text.Encoding.Default.GetBytes(DVRUserName);
+            //pLoginInfo.sUserName = new byte[64];
+            //byUserName.CopyTo(pLoginInfo.sUserName, 0);
+
+            ////设备密码
+            //byte[] byPassword = System.Text.Encoding.Default.GetBytes(DVRPassword);
+            //pLoginInfo.sPassword = new byte[64];
+            //byPassword.CopyTo(pLoginInfo.sPassword, 0);
+
+            //pLoginInfo.wPort = 8000;
+
+            //if (LoginCallBack == null)
+            //{
+            //    LoginCallBack = new CHCNetSDK.LOGINRESULTCALLBACK(cbLoginCallBack);//注册回调函数                    
+            //}
+            //pLoginInfo.cbLoginResult = LoginCallBack;
+            //pLoginInfo.bUseAsynLogin = true;
+
+            ////登录设备 Login the device
+            ////m_lUserID = CHCNetSDK.NET_DVR_Login_V40(ref pLoginInfo, ref tDeviceInfo);
             //m_lUserID = CHCNetSDK.NET_DVR_Login_V40(ref pLoginInfo, ref tDeviceInfo);
-            m_lUserID = CHCNetSDK.NET_DVR_Login_V40(ref pLoginInfo, ref tDeviceInfo);
-            if (m_lUserID < 0)
-            {
-                uint iLastErr = CHCNetSDK.NET_DVR_GetLastError();
-                string str = "NET_DVR_Login_V30 failed, error code= " + iLastErr; //登录失败,输出错误号 Failed to login and output the error code
-                textinfo.Text = str;
-                return;
-            }
-            else
+            //if (m_lUserID < 0)
+            //{
+            //    uint iLastErr = CHCNetSDK.NET_DVR_GetLastError();
+            //    string str = 'NET_DVR_Login_V30 failed, error code= ' + iLastErr; //登录失败,输出错误号 Failed to login and output the error code
+            //    textinfo.Text = str;
+            //    return;
+            //}
+            //else
+            //{
+            //    //登录成功
+            //    //停止远程配置
+            //    if (m_lGetFaceParamCfgHandle != -1)
+            //    {
+            //        CHCNetSDK.NET_DVR_StopRemoteConfig(m_lGetFaceParamCfgHandle);
+            //    }
+
+            //    //清除表格信息
+            //    //listViewFaceConfig.Items.Clear();
+            //    //LpArr.Clear();
+
+            //    //定义查询信息对象
+            //    CHCNetSDK.NET_DVR_TRAFFIC_DATA_QUERY_COND struCond = new CHCNetSDK.NET_DVR_TRAFFIC_DATA_QUERY_COND();
+            //    struCond.dwSize = (uint)Marshal.SizeOf(struCond);
+            //    //保留
+            //    byte[] byRes = System.Text.Encoding.Default.GetBytes('0');
+            //    struCond.byRes = new byte[254];
+            //    byRes.CopyTo(struCond.byRes, 0);
+            //    //struCond.dwQueryCond
+
+            //    if (remoteConfigCallback == null)
+            //    {
+            //        remoteConfigCallback = new CHCNetSDK.RemoteConfigCallback(cbStateCallback);//注册回调函数                    
+            //    }
+
+            //    int dwSize = Marshal.SizeOf(struCond);
+            //    IntPtr ptrStruCond = Marshal.AllocHGlobal(dwSize);
+            //    Marshal.StructureToPtr(struCond, ptrStruCond, true);
+            //    m_lGetFaceParamCfgHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_TRAFFIC_DATA, ptrStruCond, dwSize, remoteConfigCallback, IntPtr.Zero);
+            //    if (m_lGetFaceParamCfgHandle < 0)
+            //    {
+            //        uint iLastErr = CHCNetSDK.NET_DVR_GetLastError();
+            //        string str = 'NET_DVR_StartRemoteConfig failed, error code= ' + iLastErr; //登录失败,输出错误号 Failed to login and output the error code
+            //        textinfo.Text = str;
+            //        return;
+            //    }
+            //    else
+            //    {
+            //        Marshal.FreeHGlobal(ptrStruCond);
+            //    }
+            //}
+            #endregion
+
+            try
             {
-                //登录成功
-                //停止远程配置
-                if (m_lGetFaceParamCfgHandle != -1)
+                //string strUrl = "http://10.111.67.23/ISAPI/System/deviceInfo";
+                string strUrl = "http://10.111.67.23/ISAPI/Traffic/ContentMgmt/dataOperation";
+                WebClient client = new WebClient();
+
+                int interval = int.Parse(ConfigurationManager.AppSettings["interval"].ToString());
+
+                string startTime = DateTime.Now.ToString("yyyy-MM-dd") + "Y" + DateTime.Now.ToString("HH:mm:ss") + "Z";
+                string endTime = DateTime.Now.AddMinutes(interval).ToString("yyyy-MM-dd") + "Y" + DateTime.Now.AddMinutes(interval).ToString("HH:mm:ss") + "Z";
+                string searchID =  System.Guid.NewGuid().ToString();
+                // 设置用户名和密码
+                client.Credentials = new NetworkCredential("admin", "Admin12345");
+                string requestXmls = string.Format(@"<?xml version:'1.0' encoding='utf-8'?>
+                                        <DataOperation>
+                                            <operationType>search</operationType>
+                                            <searchCond>
+                                                <searchID>{0}</searchID>
+                                                <timeSpanList>
+                                                    <timeSpan>
+                                                        <startTime>{1}</startTime>
+                                                        <endTime>{2}</endTime>
+                                                    </timeSpan>
+                                                </timeSpanList>
+                                                <criteria>
+                                                    <dataType>0</dataType>
+                                                    <channel/>
+                                                    <plateType/>
+                                                    <plateColor/>
+                                                    <direction/>
+                                                    <plate/>
+                                                    <speedMin/>
+                                                    <speedMax/>
+                                                    <vehicleType/>
+                                                    <vehicleColor/>
+                                                    <laneNo/>
+                                                    <surveilType>0</surveilType>
+                                                    <romoteHost/>
+                                                    <analysised>true</analysised>
+                                                    <sendFlag/>
+                                                </criteria>
+                                                <searchResultPosition>0</searchResultPosition>
+                                                <maxResults>999</maxResults>
+                                            </searchCond>
+                                        </DataOperation>", searchID,startTime,endTime);
+                byte[] sendData = Encoding.UTF8.GetBytes(requestXmls);
+                byte[] responseData = client.UploadData(strUrl,"POST", sendData);
+                string strResponseData = Encoding.UTF8.GetString(responseData);
+
+                XmlToDataSet(strResponseData);
+
+                XmlDocument xmlDoc = new XmlDocument();//初始化一个实例
+                xmlDoc.LoadXml(strResponseData);//读取文件
+
+                List<MetetBaseRailwayAiweight> metetBaseRailwayAiweights = new List<MetetBaseRailwayAiweight>();
+                XmlNodeList s = xmlDoc.DocumentElement.GetElementsByTagName("matchElement");
+                foreach (XmlElement node in s)
                 {
-                    CHCNetSDK.NET_DVR_StopRemoteConfig(m_lGetFaceParamCfgHandle);
+                    MetetBaseRailwayAiweight metetBaseRailwayAiweight = new MetetBaseRailwayAiweight();
+                    int stratIndex = node.GetElementsByTagName("plate")[0].InnerText.Length - 7;
+                    metetBaseRailwayAiweight.railwayNo = node.GetElementsByTagName("plate")[0].InnerText.Substring(stratIndex, 7);
+                    metetBaseRailwayAiweight.railwayType = node.GetElementsByTagName("plate")[0].InnerText.Substring(0, stratIndex);
+                    metetBaseRailwayAiweight.meterWeight = node.GetElementsByTagName("selfWeight")[0].InnerText;
+                    metetBaseRailwayAiweight.railwaySpeed = node.GetElementsByTagName("speed")[0].InnerText;
+                    metetBaseRailwayAiweights.Add(metetBaseRailwayAiweight);
                 }
-
-                //清除表格信息
-                //listViewFaceConfig.Items.Clear();
-                //LpArr.Clear();
-
-                //定义查询信息对象
-                CHCNetSDK.NET_DVR_TRAFFIC_DATA_QUERY_COND struCond = new CHCNetSDK.NET_DVR_TRAFFIC_DATA_QUERY_COND();
-                struCond.dwSize = (uint)Marshal.SizeOf(struCond);
-                //保留
-                byte[] byRes = System.Text.Encoding.Default.GetBytes("0");
-                struCond.byRes = new byte[254];
-                byRes.CopyTo(struCond.byRes, 0);
-                //struCond.dwQueryCond
-
-                if (remoteConfigCallback == null)
+                if (metetBaseRailwayAiweights.Count > 0)
                 {
-                    remoteConfigCallback = new CHCNetSDK.RemoteConfigCallback(cbStateCallback);//注册回调函数                    
-                }
-
-                int dwSize = Marshal.SizeOf(struCond);
-                IntPtr ptrStruCond = Marshal.AllocHGlobal(dwSize);
-                Marshal.StructureToPtr(struCond, ptrStruCond, true);
-                m_lGetFaceParamCfgHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_TRAFFIC_DATA, ptrStruCond, dwSize, remoteConfigCallback, IntPtr.Zero);
-                if (m_lGetFaceParamCfgHandle < 0)
-                {
-                    uint iLastErr = CHCNetSDK.NET_DVR_GetLastError();
-                    string str = "NET_DVR_StartRemoteConfig failed, error code= " + iLastErr; //登录失败,输出错误号 Failed to login and output the error code
-                    textinfo.Text = str;
-                    return;
-                }
-                else
-                {
-                    Marshal.FreeHGlobal(ptrStruCond);
+                    RESTfulResult<List<MetetBaseRailwayAiweight>> result  = metetBaseRailwayAiweightService.add(metetBaseRailwayAiweights);
+                    if (result.Succeed)
+                    {
+                        // 输出接收的消息
+                        this.textinfo.Text = "成功";
+                    }
                 }
             }
-
-            
-            return;
-
-        }
-
-        public void cbLoginCallBack(int lUserID, int dwResult, IntPtr lpDeviceInfo, IntPtr pUser)
-        {
-            string strLoginCallBack = "登录设备,lUserID:" + lUserID + ",dwResult:" + dwResult;
-
-            if (dwResult == 0)
-            {
-                uint iErrCode = CHCNetSDK.NET_DVR_GetLastError();
-                strLoginCallBack = strLoginCallBack + ",错误号:" + iErrCode;
-            }
-
-            //下面代码注释掉也会崩溃
-            if (InvokeRequired)
-            {
-                object[] paras = new object[2];
-                paras[0] = strLoginCallBack;
-                paras[1] = lpDeviceInfo;
-                
-            }
-            else
+            catch (Exception ex)
             {
-                //创建该控件的主线程直接更新信息列表 
-               
+                this.textinfo.Text = ex.Message;
             }
 
+            return;
         }
 
-        public void cbStateCallback(uint dwType, IntPtr lpBuffer, uint dwBufLen, IntPtr pUserData)
+        #region Xml To DataSet
+        public static DataSet XmlToDataSet(string xmlString)
         {
-            string strLoginCallBack = "登录设备,lUserID:" + dwType + ",dwResult:" + dwBufLen;
-
-            if (dwType == 0)
-            {
-                uint iErrCode = CHCNetSDK.NET_DVR_GetLastError();
-                strLoginCallBack = strLoginCallBack + ",错误号:" + iErrCode;
-            }
-
-            //下面代码注释掉也会崩溃
-            if (InvokeRequired)
+            XmlDocument xmldoc = new XmlDocument();
+            xmldoc.LoadXml(xmlString);
+            StringReader stream = null;
+            XmlTextReader reader = null;
+            try
             {
-                object[] paras = new object[2];
-                paras[0] = strLoginCallBack;
-                paras[1] = dwType;
-
+                DataSet xmlDS = new DataSet();
+                stream = new StringReader(xmldoc.InnerXml);
+                reader = new XmlTextReader(stream);
+                xmlDS.ReadXml(reader);
+                reader.Close();
+                return xmlDS;
             }
-            else
+            catch (System.Exception ex)
             {
-                //创建该控件的主线程直接更新信息列表 
-
+                reader.Close();
+                throw ex;
             }
-
         }
+        #endregion
     }
 }

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini