BourneCao před 3 roky
rodič
revize
8f91c933cd

+ 4 - 4
CarMeterSystem/App.config

@@ -7,7 +7,7 @@
 		<!--<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.216.143:9004/v1" />-->
-    <!--<add key="ServiceUrl" value="http://192.168.137.136:9004/v1" />-->
+    <!--<add key="ServiceUrl" value="http://10.104.4.139:9004/v1" />-->
     <!--<add key="ServiceUrl" value="http://10.104.0.1: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"/>-->
@@ -28,12 +28,12 @@
 		<!--0使用sftp,1使用vsftp-->
 		<add key="ftpType" value="1" />
 		<!--图片压缩-->
-		<add key="imgWidth" value="1200" />
-		<add key="imgHeight" value="1200" />
+		<add key="imgWidth" value="400" />
+		<add key="imgHeight" value="400" />
 		<!--毛皮差值验证(单位kg)-->
 		<add key="differenceWgt" value="400" />
 		<!--进入测试界面还是正式界面 0测试,1正式,2一码到底测试,3判稳测试工具-->
-		<add key="productType" value="1" />
+		<add key="productType" value="1	" />
 		<!--联达比较重量-->
 		<add key="lianDaWgt" value="200" />
 		<!--联达计量点编号-->

+ 143 - 27
CarMeterSystem/Form1.cs

@@ -9,6 +9,7 @@ using MeterPlugInLibrary;
 using System;
 using System.Collections;
 using System.Collections.Generic;
+using System.Configuration;
 using System.Data;
 using System.Diagnostics;
 using System.Drawing;
@@ -92,16 +93,20 @@ namespace CarMeterSystem
         private BaseDbCls bd = new BaseDbCls();
 
         //扫码修正车号标识
-        private bool codeFlag = false; 
+        private bool codeFlag = false;
 
         private List<ucBusinessType> lu = new List<ucBusinessType>();
 
         private bool isVoiceDownCar = false;//车上人员请下车播放一次
-
-        private bool isShowFrmWelcome = false; //是否显示欢迎界面;在这个测试界面,不显示欢迎界面
+        private bool isShowFrmWelcome = false; //是否显示欢迎界面
 
         private bool isOpened = false;//是否已经打开了扫码计量界面
 
+        private bool noteCode = false;
+
+        string validParkStatuConfig = ConfigurationManager.AppSettings["validParkStatuConfig"].ToString();
+
+        //扫码器
         private SerialPortES sweepCodeClass = new SerialPortES();
 
         private SerialPortES sweepCodeClass2 = new SerialPortES();
@@ -328,6 +333,8 @@ namespace CarMeterSystem
         private int iCountPark = 0;
         private string editCarNo = "";
 
+        private bool isCarSource = false;
+
         private bool isResFlag = true;
         private string RFIDCarNo = "";
         private string isWriteRFID = AppConfigCache.isWriteRFID;
@@ -352,22 +359,19 @@ namespace CarMeterSystem
         frmOneYardToEnd frmOneYardToEnd = new frmOneYardToEnd();
         private int num = 0;
 
-        /// <summary>
-        /// 数据采集
-        /// </summary>
-        /// <param name="o"></param>
-        /// <param name="e"></param>
         private void EventData(object o, DataCollectionArgs e)
         {
             if (!timer1.Enabled)
             {
                 timer1.Enabled = true;
-                l.WriteLog(32, "定时器重启(timer1_Tick:frmMain),车号:" + PbCache.resultCarNo + "||" + (PbCache.collect == null ? "" : PbCache.collect.carno));
+                //l.WriteLog(32, "定时器重启(timer1_Tick:frmMain),车号:" + PbCache.resultCarNo + "||" + (PbCache.collect == null ? "" : PbCache.collect.carno));
             }
             #region
             //num++;
 
             //e.carno = "湘G88888";
+            //e.weight = 23580;
+            //e.weightStatus = 0;
 
             //if (num < 20)
             //{
@@ -399,6 +403,10 @@ namespace CarMeterSystem
             //这里每隔0.5秒执行一次
             try
             {
+                if (PbCache.carNoSource == 0)
+                {
+                    PbCache.carNoSource = 1;
+                }
                 if (e.carno == "nown")
                 {
                     e.carno = "";
@@ -449,6 +457,7 @@ namespace CarMeterSystem
                 {
                     if (PbCache.monitor.isValidScan == "0")
                     {
+                        PbCache.isValidScan = true;
                         if (string.IsNullOrEmpty(sweepCodeClass2.StrCode))
                         {
                             if (string.IsNullOrEmpty(sweepCodeClass.StrCode))
@@ -463,7 +472,8 @@ namespace CarMeterSystem
                             }
                             else
                             {
-                                if (sweepCodeClass.StrCode.Substring(0, 3) == "TWB")
+                                l.WriteLog(0, sweepCodeClass.StrCode);
+                                if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass.StrCode.Substring(0, 3) == "TWB")
                                 {
                                     DecodeQRCodeYMT(sweepCodeClass.StrCode);
                                 }
@@ -475,7 +485,50 @@ namespace CarMeterSystem
                         }
                         else
                         {
-                            if (sweepCodeClass2.StrCode.Substring(0, 3) == "TWB")
+                            l.WriteLog(0, sweepCodeClass.StrCode);
+                            if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass2.StrCode.Substring(0, 3) == "TWB")
+                            {
+                                DecodeQRCodeYMT(sweepCodeClass2.StrCode);
+                            }
+                            else
+                            {
+                                DecodeQRCode(sweepCodeClass2.StrCode);
+                            }
+
+                        }
+                    }
+                    else
+                    {
+                        PbCache.isValidScan = false;
+                        if (string.IsNullOrEmpty(sweepCodeClass2.StrCode))
+                        {
+                            if (string.IsNullOrEmpty(sweepCodeClass.StrCode))
+                            {
+                                if (string.IsNullOrEmpty(PbCache.strCode))
+                                {
+                                    codeFlag = false;
+                                    firstCode = "";
+                                    PbCache.strCode = "";
+                                    //l.WriteLog(12, "主线程扫码值为空时清空;sweepCodeClass.StrCode值为" + sweepCodeClass.StrCode + " ;PbCache.strCode值为:" + PbCache.strCode);
+                                }
+                            }
+                            else
+                            {
+                                l.WriteLog(0, sweepCodeClass.StrCode);
+                                if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass.StrCode.Substring(0, 3) == "TWB")
+                                {
+                                    DecodeQRCodeYMT(sweepCodeClass.StrCode);
+                                }
+                                else
+                                {
+                                    DecodeQRCode(sweepCodeClass.StrCode);
+                                }
+                            }
+                        }
+                        else
+                        {
+                            l.WriteLog(0, sweepCodeClass.StrCode);
+                            if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass2.StrCode.Substring(0, 3) == "TWB")
                             {
                                 DecodeQRCodeYMT(sweepCodeClass2.StrCode);
                             }
@@ -489,6 +542,8 @@ namespace CarMeterSystem
                 }
                 else
                 {
+                    PbCache.isValidScan = true;
+
                     if (string.IsNullOrEmpty(sweepCodeClass2.StrCode))
                     {
                         if (string.IsNullOrEmpty(sweepCodeClass.StrCode))
@@ -503,7 +558,8 @@ namespace CarMeterSystem
                         }
                         else
                         {
-                            if (sweepCodeClass.StrCode.Substring(0, 3) == "TWB")
+                            l.WriteLog(0, sweepCodeClass.StrCode);
+                            if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass.StrCode.Substring(0, 3) == "TWB")
                             {
                                 DecodeQRCodeYMT(sweepCodeClass.StrCode);
                             }
@@ -515,7 +571,8 @@ namespace CarMeterSystem
                     }
                     else
                     {
-                        if (sweepCodeClass2.StrCode.Substring(0, 3) == "TWB")
+                        l.WriteLog(0, sweepCodeClass.StrCode);
+                        if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass2.StrCode.Substring(0, 3) == "TWB")
                         {
                             DecodeQRCodeYMT(sweepCodeClass2.StrCode);
                         }
@@ -580,7 +637,7 @@ namespace CarMeterSystem
                 if (testFlag)
                 {
                     sCarNo = testCarNo;
-                    PbCache.collect.carno = testCarNo;
+                    //PbCache.collect.carno = testCarNo;
                     PbCache.collect.weight = testWgt;
                     PbCache.collect.weightStatus = 0;
                     PbCache.monitorResult.valid_park_status = true;
@@ -588,13 +645,32 @@ namespace CarMeterSystem
                     if (PbCache.collect.weight > e.weight)
                         e.weight = PbCache.collect.weight;
                     PbCache.strCode = testPlanNo;
-                    e.carno = testCarNo;
+                    //e.carno = testCarNo;
                     //PbCache.strQRCode = testCode;
                 }
-                else
+                else if (!PbCache.isLockFrm)
                 {
                     PbCache.collect.weight = e.weight;
-                    PbCache.collect.weightStatus = e.weightStatus; 
+                    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 (!bEditCar && !codeFlag && String.IsNullOrEmpty(RFIDCarNo))
+                    {
+                        PbCache.collect.carno = e.carno;
+                    }
+                    PbCache.collect.videoCarNo1 = e.videoCarNo1;
+                    PbCache.collect.videoCarNo2 = e.videoCarNo2;
+                    PbCache.collect.rfidCarNo = e.RfidNos;
+                    PbCache.collect.carnoAlert = e.carnoAlert;
+                }
+                //界面锁定后,仍然更新判稳状态
+                //BourneCao 20221230
+                else
+                {
+                    PbCache.collect.weightStatus = e.weightStatus;
+                    PbCache.collect.parkStatus = e.parkStatus;
                 }
 
                 if (PbCache.collect != null && PbCache.collect.weightStatus == 0)
@@ -610,7 +686,7 @@ namespace CarMeterSystem
                     if (!string.IsNullOrEmpty(e.carno) && PbCache.resultCarNo != e.carno)
                     {
                         PbCache.resultCarNo = e.carno + "";
-                        l.WriteLog(28, "车号賦值跟蹤:PbCache.resultCarNo" + PbCache.resultCarNo + "||e.carno" + e.carno);
+                        //l.WriteLog(28, "车号賦值跟蹤:PbCache.resultCarNo" + PbCache.resultCarNo + "||e.carno" + e.carno);
                     }
                 }
                 //*/
@@ -622,7 +698,7 @@ namespace CarMeterSystem
                 if (e.weight > 500)
                 {
                     isResFlag = true;
-
+                    isCarSource = true;
                     if (PbCache.dtStartTime == null)
                         PbCache.dtStartTime = DateTime.Now;
                     isLedWrite = true;
@@ -705,6 +781,7 @@ namespace CarMeterSystem
                             {
                                 methods += "CarNoTrustCorrect" + i + ",";
                             }
+                            l.WriteLog(0, "methods:" + methods);
                             editCarNo = modfiy.CarNoCorrect(e.carno, methods.Substring(0, methods.Length - 1));
                             sCarNo = editCarNo;
                             //mwUpdate
@@ -772,9 +849,10 @@ namespace CarMeterSystem
 
                         #region RFID识别车号信息
                         mwUpdate.rfidCar = "";
-                        mwUpdate.photoCar = e.vdioCarNos;
+                        mwUpdate.photoCar = e.videoCarNo1;
+                        mwUpdate.photoCar2 = e.videoCarNo2;
                         mwUpdate.scanCar = "";
-                        if (testFlag)
+                        if (codeFlag)
                         {
                             mwUpdate.scanCar = PbCache.collect.carno;
                         }
@@ -788,6 +866,10 @@ namespace CarMeterSystem
                             { }
                             else
                             {
+                                if (PbCache.carNoSource == 1)
+                                {
+                                    PbCache.carNoSource = 2;
+                                }
                                 mwUpdate.rfidCar = rmTRFIDEventData.Data[0].text;
                                 sCarNo = rmTRFIDEventData.Data[0].text;
                                 RFIDCarNo = rmTRFIDEventData.Data[0].text;
@@ -798,6 +880,7 @@ namespace CarMeterSystem
                         #region 计量员修改的车号信息
                         if (PbCache.monitor != null && !string.IsNullOrEmpty(PbCache.monitor.setCar))
                         {
+                            PbCache.carNoSource = 4;
                             sCarNo = PbCache.monitor.setCar;
                             bEditCar = true;
                             flagCarMonit = true;
@@ -843,13 +926,15 @@ namespace CarMeterSystem
                             }
                             else if (e.weightStatus == 0)
                             {
-                                if (!PbCache.monitorResult.valid_park_status)
+                                if (!PbCache.monitorResult.valid_park_status && validParkStatuConfig == "true")
                                 {
                                     iCountPark++;
-                                    if (iCountPark > 9)
+                                    if (iCountPark > 9 && !string.IsNullOrEmpty(PbCache.collect.carno))
                                     {
+                                        PbCache.ResultMessage = "车辆超出秤台,请调整车位1"; //btnSave_Click
                                         //重量稳定,且对射验证不合格
-                                        vicPlayClass.GetVoicePlay("您的车辆未停到位", e.carno);
+                                        vicPlayClass.GetVoicePlay("车辆超出秤台,请调整车位", e.carno);
+                                        led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, "车辆超出秤台,请调整车位1");
                                         //return;
                                         iCountPark = 0; //2021年7月27日5s播一次,然后重新在播
                                     }
@@ -868,10 +953,23 @@ namespace CarMeterSystem
                                 uc.setControlEnable(true);
                             }
                         }
+
                         if ((sweepCodeClass.StrCode == "" || sweepCodeClass2.StrCode == "") && !codeFlag)
                         {
                             PbCache.collect.carno = sCarNo;
                         }
+
+                        if (codeFlag && !noteCode)
+                        {
+                            noteCode = true;
+                            meterWorkScheduledHelp1.baseSpotNo = PbCache.sportInfo.baseSpotNo;
+                            meterWorkScheduledHelp1.baseSpotName = PbCache.sportInfo.baseSpotName;
+                            meterWorkScheduledHelp1.carNo = string.IsNullOrEmpty(PbCache.collect.carno) ? PbCache.resultCarNo : PbCache.collect.carno;
+                            meterWorkScheduledHelp1.helpContent = "车号:" + sCarNo + "扫码过秤";
+                            meterWorkScheduledHelp1.warmType = "2";
+                            meterWorkScheduledHelp1.warmTypeName = "智能终端报警";
+                            meterWorkScheduledHelpService.add(meterWorkScheduledHelp1);
+                        }
                     }
 
                     PbCache.collect.carno = sCarNo;
@@ -914,7 +1012,7 @@ namespace CarMeterSystem
                     preWgt = 0;
 
                     //不等于空的时候说明写过一次日志了
-                    if (!testFlag)
+                    if (isResFlag)
                     {
                         isResFlag = false;
                         meterWorkScheduledHelp1.baseSpotNo = PbCache.sportInfo.baseSpotNo;
@@ -924,7 +1022,7 @@ namespace CarMeterSystem
                         meterWorkScheduledHelp1.warmType = "5";
                         meterWorkScheduledHelp1.warmTypeName = "计量提示跟踪";
                         meterWorkScheduledHelpService.add(meterWorkScheduledHelp1);
-                        l.WriteLog(28, "车号:" + (string.IsNullOrEmpty(PbCache.collect.carno) ? (string.IsNullOrEmpty(PbCache.resultCarNo) ? "未识别" : PbCache.resultCarNo) : PbCache.collect.carno) + ";重量:" + (PbCache.lockWgt == 0 ? PbCache.resultWgt : PbCache.lockWgt + "") + ";提示信息:" + PbCache.resultMsgAll);
+                        //l.WriteLog(28, "车号:" + (string.IsNullOrEmpty(PbCache.collect.carno) ? (string.IsNullOrEmpty(PbCache.resultCarNo) ? "未识别" : PbCache.resultCarNo) : PbCache.collect.carno) + ";重量:" + (PbCache.lockWgt == 0 ? PbCache.resultWgt : PbCache.lockWgt + "") + ";提示信息:" + PbCache.resultMsgAll);
                     }
                     //不等于空的时候说明写过一次日志了
                     if (!string.IsNullOrEmpty(RFIDCarNo) && isWriteRFID == "1")
@@ -939,6 +1037,20 @@ namespace CarMeterSystem
                         RFIDCarNo = "";
                     }
 
+                    //车号来源记录
+                    if (isCarSource)
+                    {
+                        meterWorkScheduledHelp1.baseSpotNo = PbCache.sportInfo.baseSpotNo;
+                        meterWorkScheduledHelp1.baseSpotName = PbCache.sportInfo.baseSpotName;
+                        meterWorkScheduledHelp1.carNo = string.IsNullOrEmpty(PbCache.collect.carno) ? PbCache.resultCarNo : PbCache.collect.carno;
+                        meterWorkScheduledHelp1.helpContent = PbCache.carNoSource.ToString();
+                        meterWorkScheduledHelp1.warmType = "8";
+                        meterWorkScheduledHelp1.warmTypeName = "车号来源记录";
+                        meterWorkScheduledHelpService.add(meterWorkScheduledHelp1);
+                        isCarSource = false;
+                        PbCache.carNoSource = 0;
+                    }
+
                     PbCache.isOvertimeAlarm = false; //是否超时报警
                     PbCache.strCode = "";
                     PbCache.strState = "";
@@ -969,6 +1081,10 @@ namespace CarMeterSystem
                         }
                     }
 
+
+                    noteCode = false;
+
+
                     meterWorkMonitorEventDataI.pointNo = PbCache.sportInfo.baseSpotNo;
                     meterWorkMonitorEventDataI.validWgt = "1";
                     meterWorkMonitorEventDataI.validCarno = "1";
@@ -997,7 +1113,7 @@ namespace CarMeterSystem
                     meterWorkMonitorEventDataI.isHelp = "0";
                     meterWorkMonitorEventDataI.wgt = e.weight;
 
-                    // 终端机,DVR,MOXA,PLC状态监控
+                    // DVR,MOXA,PLC状态监控
                     // 20220928 by BourneCao
                     bool DVR_Online = PingIp(PbCache.sportInfo.videoIp);
                     meterWorkMonitorEventDataI.dvrState = DVR_Online == true ? "0" : "1";

+ 43 - 0
CarMeterSystem/OptionCls/CameraShotCls.cs

@@ -2,6 +2,7 @@
 using MeterPlugInLibrary;
 using System;
 using System.Collections.Generic;
+using System.Drawing;
 using System.IO;
 using System.Linq;
 using System.Text;
@@ -61,6 +62,9 @@ namespace CarMeterSystem.OptionCls
                     //shot.CapPic(iCnt < 3 ? 0 : 1, PbCache.path + string.Format("\\imgShort\\tempImg\\{0}_{1}_{2}.jpg", PbCache.sportInfo.baseSpotNo, "C" + actualFirstNo, iCnt));
 
                     shot.CapPic(iCnt < 2 ? 0 : 1, PbCache.path + string.Format("\\imgShort\\formalImg\\{0}_{1}_{2}.jpg", PbCache.sportInfo.baseSpotNo, "C" + actualFirstNo, iCnt));
+
+                    ZipFiles(PbCache.path + string.Format("\\imgShort\\formalImg\\{0}_{1}_{2}.jpg", PbCache.sportInfo.baseSpotNo, "C" + actualFirstNo, iCnt));
+                    
                     // 第一次抓拍为仪表重量
                     //if(iCnt == 1)
                     //{
@@ -77,7 +81,46 @@ namespace CarMeterSystem.OptionCls
         }
 
 
+        private void ZipFiles(String fn)
+        {
+            
+            ImageZip iz = new ImageZip();
+
+
+            if (string.IsNullOrEmpty(fn)) return;
+            if (!File.Exists(fn)) return;
+
+            //临时目录图片压缩后存储与正式目录
+            string jpgFile = fn.Replace("tempImg", "temp");
+            Image img = ImageZip.BytesToBitmap(ImageZip.ZipImageByte(fn));
+            if (img != null)
+            {
+                
+                //压缩图片并保存
+                if(img.Width > AppConfigCache.imgWidth && img.Height > AppConfigCache.imgHeight)
+                {
+                    img.Save(jpgFile);
+                    // BourneCao 20221220 使用以下方法继续压缩,比原图还要大
+                    //iz.ResourceImage = img;
+                    //iz.GetReducedImage(AppConfigCache.imgWidth, AppConfigCache.imgHeight).Save(jpgFile);
+                }
+                else
+                {
+                    img.Save(jpgFile);
+                }
+
+                File.Delete(fn);//删除临时目录数据
+            }
+            //else
+            //{
+            //    iz.ResourceImage = img;
+            //    //压缩图片并保存
+            //    iz.GetReducedImage(400, 400).Save(jpgFile);
+
+            //    //File.Move(fn, jpgFile);
+            //}
 
+        }
 
         /// <summary>
         /// 从硬盘录像机 进行截图

+ 76 - 11
CarMeterSystem/frmMain.cs

@@ -439,12 +439,18 @@ namespace CarMeterSystem
                 //l.WriteLog(32, "定时器重启(timer1_Tick:frmMain),车号:" + PbCache.resultCarNo + "||" + (PbCache.collect == null ? "" : PbCache.collect.carno));
             }
             #region
-            //num++;
-
+            num++;
+            //e.weight = 23580;
             //e.carno = "湘G88888";
             //e.weight = 23580;
             //e.weightStatus = 0;
 
+            //if (num > 10)
+            //{
+            //    e.weight = 23580;
+            //    e.weightStatus = 0;
+            //}
+
             //if (num < 20)
             //{
             //    e.weight = 23580;
@@ -474,7 +480,7 @@ namespace CarMeterSystem
 
             //这里每隔0.5秒执行一次
             try
-            {
+                {
                 if (PbCache.carNoSource == 0)
                 {
                     PbCache.carNoSource = 1;
@@ -529,6 +535,49 @@ namespace CarMeterSystem
                 {
                     if (PbCache.monitor.isValidScan == "0")
                     {
+                        PbCache.isValidScan = true;
+                        if (string.IsNullOrEmpty(sweepCodeClass2.StrCode))
+                        {
+                            if (string.IsNullOrEmpty(sweepCodeClass.StrCode))
+                            {
+                                if (string.IsNullOrEmpty(PbCache.strCode))
+                                {
+                                    codeFlag = false;
+                                    firstCode = "";
+                                    PbCache.strCode = "";
+                                    //l.WriteLog(12, "主线程扫码值为空时清空;sweepCodeClass.StrCode值为" + sweepCodeClass.StrCode + " ;PbCache.strCode值为:" + PbCache.strCode);
+                                }
+                            }
+                            else
+                            {
+                                l.WriteLog(0, sweepCodeClass.StrCode);
+                                if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass.StrCode.Substring(0, 3) == "TWB")
+                                {
+                                    DecodeQRCodeYMT(sweepCodeClass.StrCode);
+                                }
+                                else
+                                {
+                                    DecodeQRCode(sweepCodeClass.StrCode);
+                                }
+                            }
+                        }
+                        else
+                        {
+                            l.WriteLog(0, sweepCodeClass.StrCode);
+                            if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass2.StrCode.Substring(0, 3) == "TWB")
+                            {
+                                DecodeQRCodeYMT(sweepCodeClass2.StrCode);
+                            }
+                            else
+                            {
+                                DecodeQRCode(sweepCodeClass2.StrCode);
+                            }
+
+                        }
+                    }
+                    else
+                    {
+                        PbCache.isValidScan = false;
                         if (string.IsNullOrEmpty(sweepCodeClass2.StrCode))
                         {
                             if (string.IsNullOrEmpty(sweepCodeClass.StrCode))
@@ -543,7 +592,8 @@ namespace CarMeterSystem
                             }
                             else
                             {
-                                if (sweepCodeClass.StrCode.Substring(0, 3) == "TWB")
+                                l.WriteLog(0, sweepCodeClass.StrCode);
+                                if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass.StrCode.Substring(0, 3) == "TWB")
                                 {
                                     DecodeQRCodeYMT(sweepCodeClass.StrCode);
                                 }
@@ -555,7 +605,8 @@ namespace CarMeterSystem
                         }
                         else
                         {
-                            if (sweepCodeClass2.StrCode.Substring(0, 3) == "TWB")
+                            l.WriteLog(0, sweepCodeClass.StrCode);
+                            if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass2.StrCode.Substring(0, 3) == "TWB")
                             {
                                 DecodeQRCodeYMT(sweepCodeClass2.StrCode);
                             }
@@ -569,6 +620,8 @@ namespace CarMeterSystem
                 }
                 else
                 {
+                    PbCache.isValidScan = true;
+
                     if (string.IsNullOrEmpty(sweepCodeClass2.StrCode))
                     {
                         if (string.IsNullOrEmpty(sweepCodeClass.StrCode))
@@ -583,7 +636,8 @@ namespace CarMeterSystem
                         }
                         else
                         {
-                            if (sweepCodeClass.StrCode.Substring(0, 3) == "TWB")
+                            l.WriteLog(0, sweepCodeClass.StrCode);
+                            if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass.StrCode.Substring(0, 3) == "TWB")
                             {
                                 DecodeQRCodeYMT(sweepCodeClass.StrCode);
                             }
@@ -595,7 +649,8 @@ namespace CarMeterSystem
                     }
                     else
                     {
-                        if (sweepCodeClass2.StrCode.Substring(0, 3) == "TWB")
+                        l.WriteLog(0, sweepCodeClass.StrCode);
+                        if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass2.StrCode.Substring(0, 3) == "TWB")
                         {
                             DecodeQRCodeYMT(sweepCodeClass2.StrCode);
                         }
@@ -670,6 +725,13 @@ namespace CarMeterSystem
                     PbCache.collect.rfidCarNo = e.RfidNos;
                     PbCache.collect.carnoAlert = e.carnoAlert;
                 }
+                //界面锁定后,仍然更新判稳状态
+                //BourneCao 20221230
+                else
+                {
+                    PbCache.collect.weightStatus = e.weightStatus;
+                    PbCache.collect.parkStatus = e.parkStatus;
+                }
 
                 if (PbCache.collect != null && PbCache.collect.weightStatus == 0)
                 {
@@ -779,6 +841,7 @@ namespace CarMeterSystem
                             {
                                 methods += "CarNoTrustCorrect" + i + ",";
                             }
+                            l.WriteLog(0, "methods:"+methods);
                             editCarNo = modfiy.CarNoCorrect(e.carno, methods.Substring(0, methods.Length - 1));
                             sCarNo = editCarNo;
                             //mwUpdate
@@ -1091,6 +1154,7 @@ namespace CarMeterSystem
                     meterWorkMonitorEventDataI.validPredictionDiff = "1";
                     meterWorkMonitorEventDataI.validLianda = "1";
                     meterWorkMonitorEventDataI.validMatClick = "1";
+                    meterWorkMonitorEventDataI.validArea = "1";
                     meterWorkMonitorEventDataI.setCar = "";
                     meterWorkMonitorEventDataI.isValidScan = "1";
                     meterWorkMonitorEventDataI.rfidCar = "";
@@ -1106,6 +1170,7 @@ namespace CarMeterSystem
                     meterWorkMonitorEventDataI.ledWriter = "";
                     meterWorkMonitorEventDataI.isOverWgt = "";
                     meterWorkMonitorEventDataI.isHelp = "0";
+                    meterWorkMonitorEventDataI.weightStatus = 0;
                     meterWorkMonitorEventDataI.wgt = e.weight;
 
                     // DVR,MOXA,PLC状态监控
@@ -1444,13 +1509,13 @@ namespace CarMeterSystem
             }
             if (rmsSweepCodeClass.Code == "2")
             {
-                vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno);
-                frmOneYardToEnd.setMsgInfo("不是有效车号二维码");
+                //vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno);
+                //frmOneYardToEnd.setMsgInfo("不是有效车号二维码");
             }
             if (rmsSweepCodeClass.Code == "9")
             {
-                vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno);
-                frmOneYardToEnd.setMsgInfo("不是有效车号二维码");
+                //vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno);
+                //frmOneYardToEnd.setMsgInfo("不是有效车号二维码");
             }
             l.WriteLog(12, "测试扫码值" + rmsSweepCodeClass.Data);
         }

+ 124 - 76
CarMeterSystem/frmOneYardToEnd.cs

@@ -148,7 +148,7 @@ namespace CarMeterSystem
         {
             // 启动拍照和视频截图
             PbCache.tempImgId = Guid.NewGuid().ToString();
-            frmVoice.SaveRealData(PbCache.tempImgId);
+            //frmVoice.SaveRealData(PbCache.tempImgId);
 
 
             weighTime = DateTime.Now;
@@ -197,7 +197,8 @@ namespace CarMeterSystem
                     }
                 }
 
-                if (PbCache.collect != null && (PbCache.collect.weightStatus != 0 && localWeightStatus != true))
+                //if (PbCache.collect != null && (PbCache.collect.weightStatus != 0 && localWeightStatus != true))
+                if (PbCache.collect != null && PbCache.collect.weightStatus != 0)
                 {
                     return;
                 }
@@ -261,7 +262,8 @@ namespace CarMeterSystem
                     setMsg(PbCache.ResultMessage);
                     return;
                 }
-                else if ((PbCache.collect.weightStatus == 0 || localWeightStatus == true) && !PbCache.monitorResult.valid_park_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
+                //else if ((PbCache.collect.weightStatus == 0 || localWeightStatus == true) && !PbCache.monitorResult.valid_park_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
+                else if (PbCache.collect.weightStatus == 0 && !PbCache.monitorResult.valid_park_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
                 {
                     //重量稳定,且对射验证不合格
                     vicPlayClass.GetVoicePlay("车辆超出秤台,请调整车位2", PbCache.collect.carno);
@@ -272,7 +274,8 @@ namespace CarMeterSystem
                     setMsg(PbCache.ResultMessage);
                     return;
                 }
-                else if ((PbCache.collect.weightStatus == 0 || localWeightStatus == true) && PbCache.monitorResult.valid_frontInfraredRay_right_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
+                //else if ((PbCache.collect.weightStatus == 0 || localWeightStatus == true) && PbCache.monitorResult.valid_frontInfraredRay_right_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
+                else if (PbCache.collect.weightStatus == 0 && PbCache.monitorResult.valid_frontInfraredRay_right_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
                 {
                     //重量稳定,且光栅不合格
                     vicPlayClass.GetVoicePlay("车辆超出秤台,请调整车位3", PbCache.collect.carno);
@@ -283,7 +286,8 @@ namespace CarMeterSystem
                     setMsg(PbCache.ResultMessage);
                     return;
                 }
-                else if ((PbCache.collect.weightStatus == 0 || localWeightStatus == true) && PbCache.monitorResult.valid_frontInfraredRay_left_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
+                //else if ((PbCache.collect.weightStatus == 0 || localWeightStatus == true) && PbCache.monitorResult.valid_frontInfraredRay_left_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
+                else if (PbCache.collect.weightStatus == 0 && PbCache.monitorResult.valid_frontInfraredRay_left_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
                 {
                     //重量稳定,且光栅不合格
                     vicPlayClass.GetVoicePlay("车辆超出秤台,请调整车位4", PbCache.collect.carno);
@@ -357,6 +361,16 @@ namespace CarMeterSystem
                     return;
                 }
 
+                if (PbCache.isValidScan == false)
+                {
+                    PbCache.isLockFrm = false;
+                    btnSave.Enabled = true;
+                    setMsg("扫码计量,请计量大厅核实");
+                    vicPlayClass.GetVoicePlay("扫码计量,请计量大厅核实", PbCache.lockCarNo);
+                    led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, "扫码计量,请计量大厅核实");
+                    return;
+                }
+
                 if (string.IsNullOrEmpty(PbCache.lockCarNo))
                 {
                     PbCache.isLockFrm = false;
@@ -367,6 +381,8 @@ namespace CarMeterSystem
                     return;
                 }
 
+                
+
                 //RESTfulResult<List<MeterBaseCar>> resCarList1 = carService.doQueryCarList(new MeterBaseCar { carNo = PbCache.lockCarNo, validFlag = "0" });
                 //if (!resCarList1.Succeed || resCarList1.Data == null || resCarList1.Data.Count != 1)
                 //{
@@ -388,11 +404,19 @@ namespace CarMeterSystem
                 //    return;
                 //}
 
+                // 20230213 BourneCao 
+                // 保存前最后一次判断判稳状态和激光状态
+                if (PbCache.collect != null && PbCache.collect.weightStatus != 0 
+                    && !PbCache.monitorResult.valid_frontInfraredRay_left_status 
+                    && !PbCache.monitorResult.valid_frontInfraredRay_right_status)
+                {
+                    return;
+                }
+
                 //txtMsgInfo.Text = "称重保存中......";
-                setMsg("称重保存中......");
+                setMsg("称重保存中......" + PbCache.collect.weightStatus + ";" + PbCache.collect.weight);
                 //FrmMessage frmMessage = FrmMess("是否确认保存当前计量数据!", "继续保存");
 
-
                 try
                 {
                     //是否在黑名单内
@@ -481,12 +505,13 @@ namespace CarMeterSystem
                     lg.WriteLog(34, "车号:" + PbCache.lockCarNo + ";重量:" + PbCache.lockWgt + ";时间:" + DateTime.Now.ToLongTimeString());
 
                     // 启动拍照
-                    
+
                     //lg.WriteLog(35, "启动拍照    车号:" + PbCache.lockCarNo + ";重量:" + PbCache.lockWgt + ";时间:" + DateTime.Now.ToLongTimeString());
                     // 先截取重量仪表截图
-                    frmVoice.CapturePictrue(PbCache.tempImgId + "_temp");
+                    lg.WriteLog(40, PbCache.lockCarNo + "仪表截图:" + DateTime.Now.ToLongTimeString());
+                    frmVoice.CapturePictrue(PbCache.tempImgId + "_tempImg");
                     // 后截取其它摄像头截图
-                    _ = BeginInvoke(new Action(() => { shotImage(PbCache.tempImgId + "_temp"); }));
+                    _ = BeginInvoke(new Action(() => { shotImage(PbCache.tempImgId + "_tempImg"); }));
 
 
 
@@ -703,7 +728,9 @@ namespace CarMeterSystem
                                     try
                                     {
                                         btnSave.Enabled = false;
+                                        lg.WriteLog(40, PbCache.lockCarNo + "外进业务开始:" + DateTime.Now.ToLongTimeString());
                                         strRm = em.GetAndExecuteMethod<rtInfo>("MeterSceneLibrary", "OuterCarJISCO", "MeterMethod", new object[] { new PreTrackScale { } });
+                                        lg.WriteLog(40, PbCache.lockCarNo + "外进业务结束:" + DateTime.Now.ToLongTimeString());
                                         if (!string.IsNullOrEmpty(strRm.ResultMessage))
                                         {
                                             setMsg(strRm.ResultMessage);
@@ -716,10 +743,10 @@ namespace CarMeterSystem
                                             strMsg = strRm.Data.resultInfo;
                                             PbCache.ResultMessage = strRm.Data.resultInfo;
                                         }
-                                        if (!string.IsNullOrEmpty(PbCache.LEDResultMessage))
-                                        {
-                                            led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
-                                        }
+                                        //if (!string.IsNullOrEmpty(PbCache.LEDResultMessage))
+                                        //{
+                                        //    led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
+                                        //}
                                         RESTfulResult<string> rms = monitor.doUpdateWf(new MeterWorkMonitor { pointNo = PbCache.sportInfo.baseSpotNo, ferroalloyResult = "1" });
                                         if (!rms.Succeed)
                                         {
@@ -749,7 +776,9 @@ namespace CarMeterSystem
                                 try
                                 {
                                     btnSave.Enabled = false;
+                                    lg.WriteLog(40, PbCache.lockCarNo + "外进业务开始:" + DateTime.Now.ToLongTimeString());
                                     strRm = em.GetAndExecuteMethod<rtInfo>("MeterSceneLibrary", "OuterCarJISCO", "MeterMethod", new object[] { new PreTrackScale { } });
+                                    lg.WriteLog(40, PbCache.lockCarNo + "外进业务结束:" + DateTime.Now.ToLongTimeString());
                                     if (!string.IsNullOrEmpty(strRm.ResultMessage))
                                     {
                                         setMsg(strRm.ResultMessage);
@@ -762,10 +791,10 @@ namespace CarMeterSystem
                                         strMsg = strRm.Data.resultInfo;
                                         PbCache.ResultMessage = strRm.Data.resultInfo;
                                     }
-                                    if (!string.IsNullOrEmpty(PbCache.LEDResultMessage))
-                                    {
-                                        led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
-                                    }
+                                    //if (!string.IsNullOrEmpty(PbCache.LEDResultMessage))
+                                    //{
+                                    //    led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
+                                    //}
                                     RESTfulResult<string> rms = monitor.doUpdateWf(new MeterWorkMonitor { pointNo = PbCache.sportInfo.baseSpotNo, ferroalloyResult = "1" });
                                     if (!rms.Succeed)
                                     {
@@ -794,6 +823,7 @@ namespace CarMeterSystem
                             if (strRm.Data.isError)
                             {
                                 //如果是报错则直接不执行,并写入信息到界面,同时调用语音播报
+                                lg.WriteLog(40, PbCache.lockCarNo + "业务错误:" + DateTime.Now.ToLongTimeString());
                                 readVoicd();
                                 PbCache.ResultMessage = strRm.Data.resultInfo;
                                 PbCache.monitorResultMessage = strRm.Data.resultInfo;
@@ -811,13 +841,35 @@ namespace CarMeterSystem
 
                             if (strRm.Data.result) //说明:标识当前跑了一个场景成功了;场景完成后则返回,不再进行下一个场景的执行操作;
                             {
+                                successTime = DateTime.Now;
+                                lg.WriteLog(40, PbCache.lockCarNo + "计量完成:" + DateTime.Now.ToLongTimeString());
                                 PbCache.ResultMessage = strRm.Data.resultInfo;
                                 setMsg(PbCache.ResultMessage);
                                 Monitor(strRm.Data);
+
+                                vicPlayClass.GetVoicePlay("计量完成,请确认重量", PbCache.lockCarNo);
+                                //语音提醒部分
+                                //flag =true表示称重成功
+                                readVoicd();
+                                //lg.WriteLog(35, "语音提示    成功标识:" + PbCache.shotSuccess.ToString() + "车号:" + PbCache.lockCarNo + ";重量:" + PbCache.lockWgt + ";时间:" + DateTime.Now.ToLongTimeString());
+
+                                wgt = PbCache.lockWgt;
+                                temporaryResult = PbCache.ResultMessage;
+                                temporaryCarNo = PbCache.collect.carno;
+
+
+                                //提示信息,
+                                //txtMsgInfo.Text = PbCache.ResultMessage;
+                                lblog = string.IsNullOrEmpty(PbCache.ResultMessage) ? strMsg : PbCache.ResultMessage;//偶尔出现ResultMessage为空的情况
+                                PbCache.ResultMessage = lblog;
+                                //queryWeightinfo(preTrack.predictionNo);
+                                DoShowlbLog(PbCache.ResultMessage);
+
                                 if (!string.IsNullOrEmpty(PbCache.LEDResultMessage))
                                 {
                                     led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
                                 }
+                                lg.WriteLog(40, PbCache.lockCarNo + "LED完成:" + DateTime.Now.ToLongTimeString());
                                 isStop = false;
                                 //return;
                             }
@@ -855,7 +907,7 @@ namespace CarMeterSystem
                         }
                     }
                     #endregion
-                    successTime = DateTime.Now;
+                    
                     isStop = false;
                     #region 期限皮显示及保存
 
@@ -885,7 +937,7 @@ namespace CarMeterSystem
                     //    }
                     //}
 
-                    vicPlayClass.GetVoicePlay("计量完成,请确认重量", PbCache.lockCarNo);
+                    
 
                     isMeasureSuccess = true;
 
@@ -910,23 +962,7 @@ namespace CarMeterSystem
                             File.Move(filename, filename.Replace(PbCache.tempImgId + "_temp", PbCache.actualFirstNo));
                         }
                     }
-
-                    //语音提醒部分
-                    //flag =true表示称重成功
-                    readVoicd();
-                    //lg.WriteLog(35, "语音提示    成功标识:" + PbCache.shotSuccess.ToString() + "车号:" + PbCache.lockCarNo + ";重量:" + PbCache.lockWgt + ";时间:" + DateTime.Now.ToLongTimeString());
-
-                    wgt = PbCache.lockWgt;
-                    temporaryResult = PbCache.ResultMessage;
-                    temporaryCarNo = PbCache.collect.carno;
-
-
-                    //提示信息,
-                    //txtMsgInfo.Text = PbCache.ResultMessage;
-                    lblog = string.IsNullOrEmpty(PbCache.ResultMessage) ? strMsg : PbCache.ResultMessage;//偶尔出现ResultMessage为空的情况
-                    PbCache.ResultMessage = lblog;
-                    //queryWeightinfo(preTrack.predictionNo);
-                    DoShowlbLog(PbCache.ResultMessage);
+                    
 
                     //期限皮按钮显示
                     if (flag && !btnTare.Visible)
@@ -1181,6 +1217,8 @@ namespace CarMeterSystem
             }
         }
 
+        
+
         private void btnHelp_Click(object sender, EventArgs e)
         {
             if (PbCache.monitor.isHelp == "0")
@@ -1369,7 +1407,8 @@ namespace CarMeterSystem
                         //2021年5月10日界面显示单位,调整为T
                         ucWeightCarTJXJG1.setWgt(Math.Round((double)PbCache.collect.weight / 1000, 2));
                         // 修改界面过磅状态红/绿图标
-                        ucWeightCarTJXJG1.setStable((PbCache.collect.weightStatus == 0 || localWeightStatus == true) ? true : false);
+                        //ucWeightCarTJXJG1.setStable((PbCache.collect.weightStatus == 0 || localWeightStatus == true) ? true : false);
+                        ucWeightCarTJXJG1.setStable(PbCache.collect.weightStatus == 0  ? true : false);
 
                         #region 远程计量交互代码
                         //lg.WriteLog(99, "PbCache.monitor:" + PbCache.monitor.ToString());
@@ -1496,7 +1535,8 @@ namespace CarMeterSystem
                             return;
                         }
                     }
-                    if ((PbCache.collect.weightStatus == 0 || localWeightStatus == true) && !PbCache.monitorResult.valid_park_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
+                    //if ((PbCache.collect.weightStatus == 0 || localWeightStatus == true) && !PbCache.monitorResult.valid_park_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
+                    if (PbCache.collect.weightStatus == 0 && !PbCache.monitorResult.valid_park_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
                     {
                         //重量稳定,且对射验证不合格
                         if (!isPlayCalibVoice)
@@ -1510,7 +1550,8 @@ namespace CarMeterSystem
                             return;
                         }
                     }
-                    if ((PbCache.collect.weightStatus == 0 || localWeightStatus == true) && PbCache.monitorResult.valid_frontInfraredRay_right_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
+                    //if ((PbCache.collect.weightStatus == 0 || localWeightStatus == true) && PbCache.monitorResult.valid_frontInfraredRay_right_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
+                    if (PbCache.collect.weightStatus == 0 && PbCache.monitorResult.valid_frontInfraredRay_right_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
                     {
                         //重量稳定,且光栅不合格
                         vicPlayClass.GetVoicePlay("车辆超出秤台,请调整车位6", PbCache.collect.carno);
@@ -1521,7 +1562,8 @@ namespace CarMeterSystem
                         setMsg(PbCache.ResultMessage);
                         return;
                     }
-                    if ((PbCache.collect.weightStatus == 0 || localWeightStatus == true) && PbCache.monitorResult.valid_frontInfraredRay_left_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
+                    //if ((PbCache.collect.weightStatus == 0 || localWeightStatus == true) && PbCache.monitorResult.valid_frontInfraredRay_left_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
+                    if (PbCache.collect.weightStatus == 0 && PbCache.monitorResult.valid_frontInfraredRay_left_status && PbCache.monitor.validParkStatus == "1" && validParkStatuConfig == "true" && !string.IsNullOrEmpty(PbCache.collect.carno))
                     {
                         //重量稳定,且光栅不合格
                         vicPlayClass.GetVoicePlay("车辆超出秤台,请调整车位7", PbCache.collect.carno);
@@ -1559,20 +1601,7 @@ namespace CarMeterSystem
 
                     #endregion 红外对射及量程验证及停留超时验证
 
-                    #region
-                    if (PbCache.collect.carno.Contains("挂"))
-                    {
-                        ///重量稳定,且光栅不合格
-                        vicPlayClass.GetVoicePlay("车牌为挂车,禁止计量,请联系计量大厅", PbCache.collect.carno);
-                        PbCache.ResultMessage = "车牌为挂车,禁止计量,请联系计量大厅"; //btnSave_Click
-                        led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, "车牌为挂车,禁止计量,请联系计量大厅");
-                        PbCache.isLockFrm = false;
-                        btnSave.Enabled = true;
-                        setMsg(PbCache.ResultMessage);
-                        return;
-                    }
-                    #endregion
-
+                    
                     #region 查一次是否校秤,若未校秤则不能计量
                     ////*
                     //if (bRelation)
@@ -1652,10 +1681,14 @@ namespace CarMeterSystem
                     #region 第一次查询,有车号,重量稳定,红外验证通过的情况只查一次
 
                     //如果没有查过一次,且扫描到车号信息,且重量稳定
-                    if ((bRailwayActual || sPreCarNo != TrackCarNo || firstCode != PbCache.strCode) && (PbCache.collect.weightStatus == 0 || localWeightStatus == true) && PbCache.monitorResult.valid_park_status)
+                    //if ((bRailwayActual || sPreCarNo != TrackCarNo || firstCode != PbCache.strCode) && (PbCache.collect.weightStatus == 0 || localWeightStatus == true) && PbCache.monitorResult.valid_park_status)
+                    if ((bRailwayActual || sPreCarNo != TrackCarNo || firstCode != PbCache.strCode) && PbCache.collect.weightStatus == 0 && PbCache.monitorResult.valid_park_status)
                     {
                         firstWgt = 0;
                         sPreCarNo = TrackCarNo;
+
+                        
+
                         //判断车辆是厂内车还是厂外车
                         if (string.IsNullOrEmpty(PbCache.collect.carno))
                         {
@@ -1668,6 +1701,16 @@ namespace CarMeterSystem
                             return;
                         }
 
+                        if (PbCache.isValidScan == false)
+                        {
+                            PbCache.isLockFrm = false;
+                            btnSave.Enabled = true;
+                            setMsg("扫码计量,请计量大厅核实");
+                            vicPlayClass.GetVoicePlay("扫码计量,请计量大厅核实", PbCache.lockCarNo);
+                            led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, "扫码计量,请计量大厅核实");
+                            return;
+                        }
+
 
                         resCarListScaleTimer = carService.doQueryCarList(new MeterBaseCar { carNo = PbCache.collect.carno, validFlag = "0" });
                         if (resCarListScaleTimer.Succeed)
@@ -1835,7 +1878,8 @@ namespace CarMeterSystem
 
                     #region 毛皮净赋值;存在一次重量firstWgt的情况下才赋值毛皮净重
 
-                    if ((PbCache.collect.weightStatus == 0 || localWeightStatus == true) && firstWgt > 500)
+                    //if ((PbCache.collect.weightStatus == 0 || localWeightStatus == true) && firstWgt > 500)
+                    if (PbCache.collect.weightStatus == 0 && firstWgt > 500)
                     {
                         if (Math.Abs(firstWgt - PbCache.collect.weight) > AppConfigCache.differenceWgt)
                         {
@@ -1867,8 +1911,10 @@ namespace CarMeterSystem
                     #region 界面未锁定的情况下,如果,有车号,重量稳定了,停车线验证通过,完成了扫码验证
                     //lg.WriteLog(37, string.Format("PbCache.monitor:{0},PbCache.monitor.isTakeOver:{1},bRailwayActual:{2},PbCache.collect.carno:{3},PbCache.collect.weightStatus:{4},ucWeightT1.isGreenWgt:{5},PbCache.isLockFrm:{6},isVoiceDownCar:{7},btnSave.Visible:{8}", PbCache.monitor, PbCache.monitor.isTakeOver, bRailwayActual, PbCache.collect.carno, PbCache.collect.weightStatus, ucWeightT1.isGreenWgt, PbCache.isLockFrm, isVoiceDownCar, btnSave.Visible));
                     //没有远程接管,且已查过一次数据,且界面未锁定的情况下,如果,有车号,重量稳定了,停车线验证通过,完成了扫码验证的情况下,则按钮可用
+                    //if (PbCache.monitor != null && PbCache.monitor.isTakeOver == "0" && !bRailwayActual && !string.IsNullOrEmpty(PbCache.collect.carno)
+                    //    && (PbCache.collect.weightStatus == 0 || localWeightStatus == true) && ucWeightT1.isGreenWgt)
                     if (PbCache.monitor != null && PbCache.monitor.isTakeOver == "0" && !bRailwayActual && !string.IsNullOrEmpty(PbCache.collect.carno)
-                        && (PbCache.collect.weightStatus == 0 || localWeightStatus == true) && ucWeightT1.isGreenWgt)
+                        && PbCache.collect.weightStatus == 0 && ucWeightT1.isGreenWgt)
                     {
                         if (!PbCache.isLockFrm)
                         {
@@ -1889,21 +1935,21 @@ namespace CarMeterSystem
                                 else
                                 {
                                     // 2.1 如果双摄像头识别类型为 0:都识别且一致   1:只有一个识别,则正常赋值
-                                    if (PbCache.collect.carnoAlert == "0" || PbCache.collect.carnoAlert == "1" || PbCache.collect.carnoAlert == null)
-                                    {
+                                    //if (PbCache.collect.carnoAlert == "0" || PbCache.collect.carnoAlert == "1" || PbCache.collect.carnoAlert == null)
+                                    //{
                                         setMsgInfo(btnSave, "true", "2");
-                                    }
-                                    // 2.2 如果 2:都识别但不一致   3:都不识别,则不保存
-                                    else
-                                    {
-                                        PbCache.isLockFrm = false;
-                                        //btnSave.Enabled = true;
-                                        setMsgInfo(btnSave, "false", "2");
-                                        setMsg("车号未识别,请扫码计量" + "");
-                                        vicPlayClass.GetVoicePlay("车号为空,请联系处理", PbCache.lockCarNo);
-                                        led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, "车号未识别,请扫码计量");
-                                        return;
-                                    }
+                                    //}
+                                    //// 2.2 如果 2:都识别但不一致   3:都不识别,则不保存
+                                    //else
+                                    //{
+                                    //    PbCache.isLockFrm = false;
+                                    //    //btnSave.Enabled = true;
+                                    //    setMsgInfo(btnSave, "false", "2");
+                                    //    setMsg("车号未识别,请扫码计量" + "");
+                                    //    vicPlayClass.GetVoicePlay("车号为空,请联系处理", PbCache.lockCarNo);
+                                    //    led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, "车号未识别,请扫码计量");
+                                    //    return;
+                                    //}
                                 }
                             }
                             if (!isVoiceDownCar)
@@ -1921,11 +1967,12 @@ namespace CarMeterSystem
                             {
                                 showButtonTime = DateTime.Now;
                                 //lg.WriteLog(25, PbCache.lockCarNo + "Sleep前点击保存按钮");
-                                Thread.Sleep(3000);
+                                Thread.Sleep(1000);
                                 //lg.WriteLog(25, PbCache.lockCarNo + "Sleep后点击保存按钮");
                                 if (PbCache.collect.weight > 500)
                                 {
                                     //this.btnSave.PerformClick();//rxh deleted
+                                    lg.WriteLog(40, PbCache.lockCarNo + "开始保存:"+ DateTime.Now.ToLongTimeString());
                                     setMsgInfo(btnSave, "true", "7");//rxh add
                                 }
                                 //lg.WriteLog(25, PbCache.lockCarNo + "PerformClick后保存按钮");
@@ -2483,7 +2530,8 @@ namespace CarMeterSystem
                     setMsg(PbCache.ResultMessage);
                     return;
                 }
-                else if ((PbCache.collect.weightStatus == 0 || localWeightStatus == true) && !PbCache.monitorResult.valid_park_status)
+                //else if ((PbCache.collect.weightStatus == 0 || localWeightStatus == true) && !PbCache.monitorResult.valid_park_status)
+                else if (PbCache.collect.weightStatus == 0 && !PbCache.monitorResult.valid_park_status)
                 {
                     //重量稳定,且对射验证不合格
                     vicPlayClass.GetVoicePlay("您的车辆未停到位", PbCache.collect.carno);
@@ -2746,10 +2794,10 @@ namespace CarMeterSystem
             {
                 // 20221110 By BourneCao
                 // 停止保存视频
-                frmVoice.StopRealData();
+                //frmVoice.StopRealData();
 
                 // 20220930 By BourneCao
-                // 清本地判稳参数
+                // 清本地判稳参数
                 localWeightStatus = false;
                 stableWeightList = null;
 

+ 6 - 2
Common/cacheCls/PbCache.cs

@@ -412,6 +412,10 @@ namespace Common
 
         // 是否有重量,扫码有效
         public static string strState = "";
-    #endregion
-}
+
+        // 允许扫码
+        // true:扫码有效;false:扫码无效
+        public static bool isValidScan = true;
+        #endregion
+    }
 }

+ 3 - 0
Common/log/Log.cs

@@ -167,6 +167,9 @@ namespace Common
                     case 39:
                         strLogName = "图片保存日志_";
                         break;
+                    case 40:
+                        strLogName = "计量效率日志_";
+                        break;
                     default: 
                         strLogName = "计量终端_"; 
                         break;

+ 35 - 1
MeterPlugInLibrary/图片处理/ImageCurlControl.cs

@@ -1,6 +1,7 @@
 using System;
 using System.Collections;
 using System.Collections.Generic;
+using System.Drawing;
 using System.Globalization;
 using System.IO;
 using System.Linq;
@@ -61,7 +62,7 @@ namespace MeterPlugInLibrary
                 {
                     string sPath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "imgShort\\";
                     i = 1;
-                    string picPath = Path.Combine(sPath, "tempImg");
+                    string picPath = Path.Combine(sPath, "formalImg");
                     i = 2;
                     ArrayList UnZipedFiles = GetFiles(picPath, ".jpg");//tmp!
                     i = 3;
@@ -91,6 +92,39 @@ namespace MeterPlugInLibrary
 
         }
 
+        private void ZipFiles(ArrayList UnzipedFiles)
+        {
+            ImageZip iz = new ImageZip();
+
+            if (UnzipedFiles == null || UnzipedFiles.Count == 0) return;
+            foreach (string fn in UnzipedFiles)
+            {
+                if (string.IsNullOrEmpty(fn)) continue;
+                if (!File.Exists(fn)) continue;
+
+                //临时目录图片压缩后存储与正式目录
+                string jpgFile = fn.Replace("tempImg", "formalImg");
+                Image img = ImageZip.BytesToBitmap(ImageZip.ZipImageByte(fn));
+                if (img != null)
+                {
+                    //iz.ResourceImage = img;
+                    //压缩图片并保存
+                    //iz.GetReducedImage(AppConfigCache.imgWidth, AppConfigCache.imgHeight).Save(jpgFile);
+
+                    img.Save(jpgFile);
+                    File.Delete(fn);//删除临时目录数据
+                }
+                else
+                {
+                    iz.ResourceImage = img;
+                    //压缩图片并保存
+                    iz.GetReducedImage(400, 400).Save(jpgFile);
+
+                    //File.Move(fn, jpgFile);
+                }
+            }
+        }
+
         public ArrayList GetFiles(string _dirPath, string extensionName)
         {
             ArrayList files = new ArrayList();

+ 1 - 1
MeterPlugInLibrary/图片处理/ImageZip.cs

@@ -226,7 +226,7 @@ namespace MeterPlugInLibrary
                     __encoder = System.Drawing.Imaging.Encoder.Quality;
                     __encoderParameters = new EncoderParameters(1);
 
-                    long dLevel = 40L;
+                    long dLevel = 30L;
                     long Len = Dest_Size;
                     /*
                     do

+ 3 - 2
MeterPlugInLibrary/实时库数据采集/DataCollectionControl.cs

@@ -128,10 +128,11 @@ namespace MeterPlugInLibrary
                                 arg.carnoAlert = "0";
                             }
                             //  c.A车号识别,B车号识别,且识别不一致,停止计量,标记只有车号不一致识别
+                            //  c.A车号识别,B车号识别,且识别不一致,以枪机为准。张存斌、李亚军批准 By BourneCao 20221214
                             else if (carNo1 != "" && carNo2 != "" && carNo1 != carNo2)
                             {
-                                arg.carno = "";
-                                arg.carnoAlert = "2";
+                                arg.carno = carNo2;
+                                arg.carnoAlert = "1";
                             }
                             // d.都不识别
                             else

+ 1 - 0
MeterPlugInLibrary/语音播报/VoicePlay.cs

@@ -4,6 +4,7 @@ using System.Collections.Generic;
 using System.IO;
 using System.Linq;
 using System.Text;
+using System.Threading;
 using System.Threading.Tasks;
 
 namespace MeterPlugInLibrary

+ 1 - 1
MeterSceneLibrary/JISCO/OuterCarJISCO.cs

@@ -614,7 +614,7 @@ namespace MeterSceneLibrary
                                     rt = saveMethod.doNet(null, rmX.Data[0], mwaf);
                                     rt.resultInfo += ",存在一条使用中的委托,请联系计量大厅进行确认";
                                     PbCache.voiceType = 18;
-                                    PbCache.LEDResultMessage = "存在一条使用中的委托,请联系计量大厅进行确认";
+                                    PbCache.LEDResultMessage = "存在一条使用中的委托''''',请联系计量大厅进行确认";
                                     PbCache.monitorResultMessage = string.Format("车号:{0},存在一条使用中的委托,请联系计量大厅进行确认", PbCache.lockCarNo);
                                     return rt;
                                 }