Jelajahi Sumber

扫码器代码修改

BourneCao 3 tahun lalu
induk
melakukan
b8c8eb9ff1

+ 6 - 0
CarMeterSystem/App.config

@@ -52,6 +52,12 @@
 
     <add key="isSendZNLC" value="1" />
     <add key="isWriteRFID" value="1" />
+  
+		<!--扫码枪参数-->
+		<!--工控机下秤二维码-->
+    <add key="comPara" value="" />
+		<!--司机窗口不下秤二维码-->
+    <add key="comPara2" value="COM3,9600,None,8,1" />
 	</appSettings>
 	<system.web>
 		<membership defaultProvider="ClientAuthenticationMembershipProvider">

+ 65 - 88
CarMeterSystem/Form1.cs

@@ -15,6 +15,7 @@ using System.Drawing;
 using System.IO;
 using System.Linq;
 using System.Windows.Forms;
+using SystemOffLine;
 
 namespace CarMeterSystem
 {
@@ -52,12 +53,6 @@ namespace CarMeterSystem
         //语音播报
         private VoicePlay vicPlayClass = new VoicePlay();
 
-        //扫码枪1
-        private SweepCode sweepCodeClass = new SweepCode();
-
-        //扫码枪2
-        private SweepCodeCpoy sweepCodeCpoyClass = new SweepCodeCpoy();
-
         private LED_Control led_controler = null;
 
         //验证校秤数据
@@ -88,6 +83,10 @@ namespace CarMeterSystem
 
         private bool isOpened = false;//是否已经打开了扫码计量界面
 
+        private SerialPortES sweepCodeClass = new SerialPortES();
+
+        private SerialPortES sweepCodeClass2 = new SerialPortES();
+
         private void Form1_Load(object sender, EventArgs e)
         {
             //*
@@ -185,11 +184,15 @@ namespace CarMeterSystem
                         collection.Start(PbCache.sportInfo.baseSpotNo, PbCache.sportInfo.baseSpotName);
 
                         imageCurlControl.Start(); //图片采集线程
-                        sweepCodeClass.StartThreadSweep(); //扫码线程
-                        sweepCodeCpoyClass.StartThreadSweep(); //扫码线程
-                        ////***********************暂时注释掉*****************************************************
-                        ////sweepCodeClass.StartThreadSweep();
-                        ////**************************************************************************************
+                        //新扫码线程
+                        if (AppConfigCache._comPara?.Split(new char[] { ',' })?.Length == 5)
+                        {
+                            sweepCodeClass.StartThreadSweep(AppConfigCache._comPara); //扫码线程
+                        }
+                        if (AppConfigCache._comPara2?.Split(new char[] { ',' })?.Length == 5)
+                        {
+                            sweepCodeClass2.StartThreadSweep(AppConfigCache._comPara2); //扫码线程
+                        }
                     }
                     else
                     {
@@ -331,93 +334,33 @@ namespace CarMeterSystem
 
                 #region 扫码信息
 
+                if (!string.IsNullOrEmpty(sweepCodeClass2.StrCode))
+                {
+                    Console.WriteLine("code:"+sweepCodeClass2.StrCode);
 
-                sweepCodeClass.StrState = e.weightStatus + ""; //重量状态信息;当StrState= 0时,获取扫码信息,StrState= 2时将扫码信息置位“”空;其他状态不处理
-                sweepCodeCpoyClass.StrState = e.weightStatus + ""; //重量状态信息;当StrState= 0时,获取扫码信息,StrState= 2时将扫码信息置位“”空;其他状态不处理
-                l.WriteLog(12, sweepCodeClass.ToString());
-                l.WriteLog(12, sweepCodeCpoyClass.ToString());
-
+                }
 
-                if (string.IsNullOrEmpty(sweepCodeCpoyClass.StrCode))
+                // 司机扫码为空,取工控机二维码
+                if (string.IsNullOrEmpty(sweepCodeClass2.StrCode))
                 {
-                    if (string.IsNullOrEmpty(PbCache.strCode))
+                    if (string.IsNullOrEmpty(sweepCodeClass.StrCode))
                     {
-                        codeFlag = false;
-                        firstCode = "";
-                        PbCache.strCode = "";
-                        l.WriteLog(12, "主线程扫码值为空时清空;sweepCodeCpoyClass.StrCode值为" + sweepCodeCpoyClass.StrCode + " ;PbCache.strCode值为:" + PbCache.strCode);
+                        if (string.IsNullOrEmpty(PbCache.strCode))
+                        {
+                            codeFlag = false;
+                            firstCode = "";
+                            PbCache.strCode = "";
+                            l.WriteLog(12, "主线程扫码值为空时清空;sweepCodeClass.StrCode值为" + sweepCodeClass.StrCode + " ;PbCache.strCode值为:" + PbCache.strCode);
+                        }
                     }
                     else
                     {
-                        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
-                        {
-                            codeFlag = true;
-                            frmOneYardToEnd frmOneYardToEnd = new frmOneYardToEnd();
-                            Hashtable hashTable = new Hashtable();
-                            hashTable.Add("message", sweepCodeClass.StrCode);
-                            rmsSweepCodeClass = mwcfs.DecryptionForWfTest(hashTable);
-                            if (rmsSweepCodeClass.Code == "0")
-                            {
-                                PbCache.collect.carno = rmsSweepCodeClass.Data;
-                                PbCache.strCode = rmsSweepCodeClass.Data;
-                            }
-                            if (rmsSweepCodeClass.Code == "1")
-                            {
-                                vicPlayClass.GetVoicePlay("车号二维码已过期", PbCache.collect.carno);
-                                frmOneYardToEnd.setMsgInfo("车号二维码已过期");
-                            }
-                            if (rmsSweepCodeClass.Code == "2")
-                            {
-                                vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno);
-                                frmOneYardToEnd.setMsgInfo("不是有效车号二维码");
-                            }
-                            if (rmsSweepCodeClass.Code == "9")
-                            {
-                                vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno);
-                                frmOneYardToEnd.setMsgInfo("不是有效车号二维码");
-                            }
-                            l.WriteLog(12, "测试扫码值" + rmsSweepCodeClass.Data);
-                        }
+                        DecodeQRCode(sweepCodeClass.StrCode);
                     }
                 }
                 else
                 {
-                    codeFlag = true;
-                    frmOneYardToEnd frmOneYardToEnd = new frmOneYardToEnd();
-                    Hashtable hashTable = new Hashtable();
-                    hashTable.Add("message", sweepCodeCpoyClass.StrCode);
-                    rmsSweepCodeClass = mwcfs.DecryptionForWfTest(hashTable);
-                    if (rmsSweepCodeClass.Code == "0")
-                    {
-                        PbCache.collect.carno = rmsSweepCodeClass.Data;
-                        PbCache.strCode = rmsSweepCodeClass.Data;
-                    }
-                    if (rmsSweepCodeClass.Code == "1")
-                    {
-                        vicPlayClass.GetVoicePlay("车号二维码已过期", PbCache.collect.carno);
-                        frmOneYardToEnd.setMsgInfo("车号二维码已过期");
-                    }
-                    if (rmsSweepCodeClass.Code == "2")
-                    {
-                        vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno);
-                        frmOneYardToEnd.setMsgInfo("不是有效车号二维码");
-                    }
-                    if (rmsSweepCodeClass.Code == "9")
-                    {
-                        vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno);
-                        frmOneYardToEnd.setMsgInfo("不是有效车号二维码");
-                    }
-                    l.WriteLog(12, "测试扫码值" + rmsSweepCodeClass.Data);
+                    DecodeQRCode(sweepCodeClass2.StrCode);
                 }
                 
                 #endregion
@@ -435,6 +378,7 @@ namespace CarMeterSystem
                         //秤上没有车时,每隔10分钟获取一次基础数据
                         if (e.weight < 500)
                         {
+                            
                             editCarNo = "";
                             preCarNo = "";
                             if (bd.setBaseDb())
@@ -545,6 +489,7 @@ namespace CarMeterSystem
                     if (PbCache.dtStartTime == null)
                         PbCache.dtStartTime = DateTime.Now;
                     isLedWrite = true;
+                    PbCache.strState = "0";
 
                     #region 查一次是否校秤,若未校秤则不能计量
                     /*
@@ -644,6 +589,7 @@ namespace CarMeterSystem
                             sCarNo = PbCache.monitor.setCar;
                             codeFlag = false;
                             sweepCodeClass.StrCode = "";
+                            sweepCodeClass2.StrCode = "";
                         }
                         #endregion
 
@@ -730,7 +676,7 @@ namespace CarMeterSystem
                                 uc.setControlEnable(true);
                             }
                         }
-                        if (sweepCodeClass.StrCode == "" && !codeFlag)
+                        if ((sweepCodeClass.StrCode == "" || sweepCodeClass2.StrCode == "") && !codeFlag)
                         {
                             PbCache.collect.carno = sCarNo;
                         }
@@ -855,6 +801,36 @@ namespace CarMeterSystem
             }
         }
 
+        private void DecodeQRCode(string strCode)
+        {
+            codeFlag = true;
+            frmOneYardToEnd frmOneYardToEnd = new frmOneYardToEnd();
+            Hashtable hashTable = new Hashtable();
+            hashTable.Add("message", strCode);
+            rmsSweepCodeClass = mwcfs.DecryptionForWfTest(hashTable);
+            if (rmsSweepCodeClass.Code == "0")
+            {
+                PbCache.collect.carno = rmsSweepCodeClass.Data;
+                PbCache.strCode = rmsSweepCodeClass.Data;
+            }
+            if (rmsSweepCodeClass.Code == "1")
+            {
+                vicPlayClass.GetVoicePlay("车号二维码已过期", PbCache.collect.carno);
+                frmOneYardToEnd.setMsgInfo("车号二维码已过期");
+            }
+            if (rmsSweepCodeClass.Code == "2")
+            {
+                vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno);
+                frmOneYardToEnd.setMsgInfo("不是有效车号二维码");
+            }
+            if (rmsSweepCodeClass.Code == "9")
+            {
+                vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno);
+                frmOneYardToEnd.setMsgInfo("不是有效车号二维码");
+            }
+            l.WriteLog(12, "测试扫码值" + rmsSweepCodeClass.Data);
+        }
+
         private delegate void ShowBtnTare(bool flag);//定义委托  期限皮重按钮
 
         private int testWgt = 1000;
@@ -1428,6 +1404,7 @@ namespace CarMeterSystem
             collection.Stop();
             imageCurlControl.Stop();
             sweepCodeClass.CloseThread();
+            sweepCodeClass2.CloseThread();
             timer1.Stop();
             timer1.Dispose();
         }

+ 55 - 72
CarMeterSystem/frmMain.cs

@@ -14,6 +14,7 @@ using System.Diagnostics;
 using System.Drawing;
 using System.Linq;
 using System.Windows.Forms;
+using SystemOffLine;
 
 namespace CarMeterSystem
 {
@@ -56,12 +57,6 @@ namespace CarMeterSystem
         //语音播报
         private VoicePlay vicPlayClass = new VoicePlay();
 
-        //扫码枪1
-        private SweepCode sweepCodeClass = new SweepCode();
-
-        //扫码枪2
-        private SweepCodeCpoy sweepCodeCpoyClass = new SweepCodeCpoy();
-
         private LED_Control led_controler = null;
 
         //监控表操作
@@ -92,6 +87,11 @@ namespace CarMeterSystem
 
         private bool isOpened = false;//是否已经打开了扫码计量界面
 
+        //扫码器
+        private SerialPortES sweepCodeClass = new SerialPortES();
+
+        private SerialPortES sweepCodeClass2 = new SerialPortES();
+
         private void frmMain_Load(object sender, EventArgs e)
         {
             //*
@@ -181,8 +181,15 @@ namespace CarMeterSystem
                         collection.Start(PbCache.sportInfo.baseSpotNo, PbCache.sportInfo.baseSpotName);
 
                         imageCurlControl.Start(); //图片上传线程
-                        sweepCodeClass.StartThreadSweep(); //扫码线程
-                        sweepCodeCpoyClass.StartThreadSweep(); //扫码线程
+                        //新扫码线程
+                        if (AppConfigCache._comPara?.Split(new char[] { ',' })?.Length == 5)
+                        {
+                            sweepCodeClass.StartThreadSweep(AppConfigCache._comPara); //扫码线程
+                        }
+                        if (AppConfigCache._comPara2?.Split(new char[] { ',' })?.Length == 5)
+                        {
+                            sweepCodeClass2.StartThreadSweep(AppConfigCache._comPara2); //扫码线程
+                        }
                     }
                     else
                     {
@@ -410,13 +417,6 @@ namespace CarMeterSystem
                     e.carno = "";
                 }
                 #region 扫码信息
-                sweepCodeClass.StrState = e.weightStatus + ""; //重量状态信息;当StrState= 0时,获取扫码信息,StrState= 2时将扫码信息置位“”空;其他状态不处理
-                sweepCodeCpoyClass.StrState = e.weightStatus + ""; //重量状态信息;当StrState= 0时,获取扫码信息,StrState= 2时将扫码信息置位“”空;其他状态不处理
-                l.WriteLog(12, sweepCodeClass.ToString());
-                l.WriteLog(12, sweepCodeCpoyClass.ToString());
-                l.WriteLog(12, sweepCodeCpoyClass.StrCode.ToString());
-
-
                 //if (string.IsNullOrEmpty(sweepCodeClass.StrCode))
                 //{
                 //    if (string.IsNullOrEmpty(PbCache.strCode))
@@ -456,9 +456,9 @@ namespace CarMeterSystem
                 //    }
                 //    l.WriteLog(12, "测试扫码值" + rmsSweepCodeClass.Data);
                 //}
-                l.WriteLog(99, "sweepCodeCpoyClass:"+sweepCodeCpoyClass.StrCode);
-                l.WriteLog(99, "sweepCodeClass:" + sweepCodeClass.StrCode);
-                if (string.IsNullOrEmpty(sweepCodeCpoyClass.StrCode))
+
+                // 司机扫码为空,取工控机二维码
+                if (string.IsNullOrEmpty(sweepCodeClass2.StrCode))
                 {
                     if (string.IsNullOrEmpty(sweepCodeClass.StrCode))
                     {
@@ -472,62 +472,12 @@ namespace CarMeterSystem
                     }
                     else
                     {
-                        codeFlag = true;
-                        frmOneYardToEnd frmOneYardToEnd = new frmOneYardToEnd();
-                        Hashtable hashTable = new Hashtable();
-                        hashTable.Add("message", sweepCodeClass.StrCode);
-                        rmsSweepCodeClass = mwcfs.DecryptionForWfTest(hashTable);
-                        if (rmsSweepCodeClass.Code == "0")
-                        {
-                            PbCache.collect.carno = rmsSweepCodeClass.Data;
-                            PbCache.strCode = rmsSweepCodeClass.Data;
-                        }
-                        if (rmsSweepCodeClass.Code == "1")
-                        {
-                            vicPlayClass.GetVoicePlay("车号二维码已过期", PbCache.collect.carno);
-                            frmOneYardToEnd.setMsgInfo("车号二维码已过期");
-                        }
-                        if (rmsSweepCodeClass.Code == "2")
-                        {
-                            vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno);
-                            frmOneYardToEnd.setMsgInfo("不是有效车号二维码");
-                        }
-                        if (rmsSweepCodeClass.Code == "9")
-                        {
-                            vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno);
-                            frmOneYardToEnd.setMsgInfo("不是有效车号二维码");
-                        }
-                        l.WriteLog(12, "测试扫码值" + rmsSweepCodeClass.Data);
+                        DecodeQRCode(sweepCodeClass.StrCode);
                     }
                 }
                 else
                 {
-                    codeFlag = true;
-                    frmOneYardToEnd frmOneYardToEnd = new frmOneYardToEnd();
-                    Hashtable hashTable = new Hashtable();
-                    hashTable.Add("message", sweepCodeCpoyClass.StrCode);
-                    rmsSweepCodeClass = mwcfs.DecryptionForWfTest(hashTable);
-                    if (rmsSweepCodeClass.Code == "0")
-                    {
-                        PbCache.collect.carno = rmsSweepCodeClass.Data;
-                        PbCache.strCode = rmsSweepCodeClass.Data;
-                    }
-                    if (rmsSweepCodeClass.Code == "1")
-                    {
-                        vicPlayClass.GetVoicePlay("车号二维码已过期", PbCache.collect.carno);
-                        frmOneYardToEnd.setMsgInfo("车号二维码已过期");
-                    }
-                    if (rmsSweepCodeClass.Code == "2")
-                    {
-                        vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno);
-                        frmOneYardToEnd.setMsgInfo("不是有效车号二维码");
-                    }
-                    if (rmsSweepCodeClass.Code == "9")
-                    {
-                        vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno);
-                        frmOneYardToEnd.setMsgInfo("不是有效车号二维码");
-                    }
-                    l.WriteLog(12, "测试扫码值" + rmsSweepCodeClass.Data);
+                    DecodeQRCode(sweepCodeClass2.StrCode);
                 }
                 #endregion
 
@@ -615,6 +565,7 @@ namespace CarMeterSystem
                     if (PbCache.dtStartTime == null)
                         PbCache.dtStartTime = DateTime.Now;
                     isLedWrite = true;
+                    PbCache.strState = "0";
 
                     #region 车上人员请下车
                     try
@@ -790,6 +741,7 @@ namespace CarMeterSystem
                             flagCarMonit = true;
                             codeFlag = false;
                             sweepCodeClass.StrCode = "";
+                            sweepCodeClass2.StrCode = "";
                         }
                         #endregion
 
@@ -854,7 +806,7 @@ namespace CarMeterSystem
                                 uc.setControlEnable(true);
                             }
                         }
-                        if (sweepCodeClass.StrCode == "" && !codeFlag)
+                        if ((sweepCodeClass.StrCode == "" || sweepCodeClass2.StrCode == "") && !codeFlag)
                         {
                             PbCache.collect.carno = sCarNo;
                         }
@@ -1181,7 +1133,7 @@ namespace CarMeterSystem
             collection.Stop();
             imageCurlControl.Stop();
             sweepCodeClass.CloseThread();
-            sweepCodeCpoyClass.CloseThread();
+            sweepCodeClass2.CloseThread();
             timer1.Stop();
             timer1.Dispose();
         }
@@ -1237,5 +1189,36 @@ namespace CarMeterSystem
             }
             return false;
         }
+
+
+        private void DecodeQRCode(string strCode)
+        {
+            codeFlag = true;
+            frmOneYardToEnd frmOneYardToEnd = new frmOneYardToEnd();
+            Hashtable hashTable = new Hashtable();
+            hashTable.Add("message", strCode);
+            rmsSweepCodeClass = mwcfs.DecryptionForWfTest(hashTable);
+            if (rmsSweepCodeClass.Code == "0")
+            {
+                PbCache.collect.carno = rmsSweepCodeClass.Data;
+                PbCache.strCode = rmsSweepCodeClass.Data;
+            }
+            if (rmsSweepCodeClass.Code == "1")
+            {
+                vicPlayClass.GetVoicePlay("车号二维码已过期", PbCache.collect.carno);
+                frmOneYardToEnd.setMsgInfo("车号二维码已过期");
+            }
+            if (rmsSweepCodeClass.Code == "2")
+            {
+                vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno);
+                frmOneYardToEnd.setMsgInfo("不是有效车号二维码");
+            }
+            if (rmsSweepCodeClass.Code == "9")
+            {
+                vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno);
+                frmOneYardToEnd.setMsgInfo("不是有效车号二维码");
+            }
+            l.WriteLog(12, "测试扫码值" + rmsSweepCodeClass.Data);
+        }
     }
 }

+ 1 - 0
CarMeterSystem/frmOneYardToEnd.cs

@@ -954,6 +954,7 @@ namespace CarMeterSystem
                     }
                     if (PbCache.collect.weight < 500)
                     {
+                        PbCache.strState = "";
                         //不显示重量
                         ucWeightCarTJXJG1.setWgtBackColor(false);
                         isCalibration = true;

+ 10 - 0
Common/cacheCls/AppConfigCache.cs

@@ -92,5 +92,15 @@ namespace Common
         /// </summary>
         public static readonly string carTypeName = ConfigurationManager.AppSettings["carTypeName"].ToString().Trim();
 
+        /// <summary>
+        /// 0测试,1正式
+        /// </summary>
+        public static readonly string _comPara = ConfigurationManager.AppSettings["comPara"].ToString().Trim();
+
+        /// <summary>
+        /// 0测试,1正式
+        /// </summary>
+        public static readonly string _comPara2 = ConfigurationManager.AppSettings["comPara2"].ToString().Trim();
+
     }
 }

+ 17 - 1
Common/cacheCls/PbCache.cs

@@ -356,5 +356,21 @@ namespace Common
         /// 是否一次数据
         /// </summary>
         public static bool isActual { get; set; }
-    }
+
+
+        #region 扫码器相关
+        /// <summary>
+        /// 扫码器是否正常
+        /// </summary>
+        public static bool ScanCodeError { get; set; }
+
+        /// <summary>
+        /// 扫码器错误信息
+        /// </summary>
+        public static string ScanCodeErrorMessage { get; set; }
+
+        // 是否有重量,扫码有效
+        public static string strState = "";
+    #endregion
+}
 }

+ 1 - 1
MeterPlugInLibrary/MeterPlugInLibrary.csproj

@@ -66,7 +66,7 @@
     <Compile Include="实时库数据采集\StorageDataCollectionControl.cs" />
     <Compile Include="实时库数据采集\StaticDataCollectionControl.cs" />
     <Compile Include="扫码枪\ScanningCopy.cs" />
-    <Compile Include="扫码枪\SweepCodeCpoy.cs" />
+    <Compile Include="扫码枪\SerialPortES.cs" />
     <Compile Include="海康摄像头截图\CHCNetSDK.cs" />
     <Compile Include="打印机\Print.cs" />
     <Compile Include="扫码枪\Scanning.cs" />

+ 103 - 49
MeterPlugInLibrary/扫码枪/SweepCodeCpoy.cs → MeterPlugInLibrary/扫码枪/SerialPortES.cs

@@ -1,19 +1,20 @@
-using System;
+using Common;
+using System;
 using System.Collections.Generic;
 using System.IO;
+using System.IO.Ports;
 using System.Linq;
 using System.Text;
 using System.Threading;
-using System.Threading.Tasks;
-using Common;
+using System.Windows.Forms;
 
-namespace MeterPlugInLibrary
+namespace SystemOffLine
 {
-    public class SweepCodeCpoy
+    public class SerialPortES
     {
+        SerialPort serialPort1;
+        bool blThreadFlag = false;
         private string strCode = "";//扫码信息
-
-        private bool isError = false;//扫码信息
         public string StrCode
         {
             get { return strCode; }
@@ -26,11 +27,62 @@ namespace MeterPlugInLibrary
             set { strState = value; }
         }
         private object obj = new object();
-        private Thread mThreadCpoy = null;
-        public void StartThreadSweep()
+        private Thread mThread = null;
+
+        /// <summary>
+        /// comPara是配置文件中的comPara
+        /// </summary>
+        /// <param name="comPara"></param>
+        public void StartThreadSweep(string comPara)
         {
-            mThreadCpoy = new Thread(new ThreadStart(ThreadSweepInfo));
-            mThreadCpoy.Start();
+            #region 串口采集配置
+            string[] strParams = comPara.Split(new char[] { ',' });
+            Parity parity = Parity.None;
+
+            if (strParams[2].ToUpper() == "ODD")
+            {
+                parity = Parity.Odd;
+            }
+            if (strParams[2].ToUpper() == "EVEN")
+            {
+                parity = Parity.Even;
+            }
+
+            StopBits stopBits = StopBits.None;
+            if (strParams[4] == "1")
+            {
+                stopBits = StopBits.One;
+            }
+            if (strParams[4] == "1.5")
+            {
+                stopBits = StopBits.OnePointFive;
+            }
+            if (strParams[4] == "2")
+            {
+                stopBits = StopBits.Two;
+            }
+            serialPort1 = new SerialPort(strParams[0], Int32.Parse(strParams[1]),parity, Int32.Parse(strParams[3]), stopBits);
+
+            while (!serialPort1.IsOpen)
+            {
+                try
+                {
+                    serialPort1.Open();
+                }
+                catch (Exception err)
+                {
+                    serialPort1.Close();
+                    
+                    WriteLog($"打开串口失败,正重试{err.Message}");
+                    //MessageBox.Show("打开串口失败,串口可能被占用,请联系计量大厅");
+                    return;
+                }
+                System.Threading.Thread.Sleep(500);
+            }
+            #endregion
+            blThreadFlag = true;
+            mThread = new Thread(new ThreadStart(ThreadSweepInfo));
+            mThread.Start();
         }
 
         /// <summary>
@@ -41,41 +93,47 @@ namespace MeterPlugInLibrary
         {
             try
             {
-                while (true)
+                while (blThreadFlag)
                 {
                     lock (obj)
                     {
-                        string sCode = "";
-                        Thread.Sleep(500);
-                        //WriteLog("开始扫码线程:重量状态为:" + strState);
-                        if (strState.Equals("0"))
+                        Thread.Sleep(100);
+                        string strtmp = "";
+                        if (serialPort1.BytesToRead > 0)
                         {
-                            sCode = GetSweepCodeInfo(15, 3, "9600,N,8,1");
-                            WriteLog("扫码返回:" + sCode + "是否错误:" + isError);
-                            if (!string.IsNullOrEmpty(sCode) && !isError) 
-                            {
-                                strCode = sCode;
-                                string lb = "进入扫码";
-                                WriteLog(lb + ",读到的二维码扫码信息:" + strCode);
-                            }
-                            else
+                            strtmp = serialPort1.ReadExisting();
+                        }
+                        strtmp = strtmp.Split(new char[] { '\r' })[0];
+                        if (PbCache.strState.Equals("0") || PbCache.strState.Equals("1"))
+                        {
+                            if (strtmp != "") strCode = strtmp;
+                        }
+                        else
+                        {
+                            strCode = "";
+                        }
+
+                        /*
+                        if (strState.Equals("0") || strState.Equals("1")) 
+                        {
+                            string strtmp = "";
+                            if (serialPort1.BytesToRead > 0)
                             {
-                                WriteLog("扫码信息报错,:" + strCode);
-                                strCode = "";
+                                strtmp = serialPort1.ReadExisting();
                             }
-                            //Thread.Sleep(20 * 1000);//15秒执行一次
+                            strtmp = strtmp.Split(new char[] { '\r' })[0];
+                            if (strtmp != "") strCode = strtmp;
                         }
                         else if (strState.Equals("2"))
                         {
                             strCode = "";
                         }
+                        //*/
                     }
                 }
             }
             catch (Exception exp)
             {
-                Close();
-                strCode = "";
                 WriteLog("扫码信息读取异常!" + exp.Message);
             }
         }
@@ -87,11 +145,8 @@ namespace MeterPlugInLibrary
         {
             try
             {
-                if (mThreadCpoy != null)
-                {
-                    mThreadCpoy.Abort();
-                    Close();
-                }
+                blThreadFlag = false;
+                Close();
                 return true;
             }
             catch
@@ -100,6 +155,8 @@ namespace MeterPlugInLibrary
             }
         }
 
+        #region
+        /*
         /// <summary>
         /// 二维码/条形码 信息获取
         /// </summary>
@@ -111,57 +168,54 @@ namespace MeterPlugInLibrary
         {
             try
             {
-                Close();
                 string strSweepCode = "";
-                int i = ScanningCopy.SetDeviceType(3);//设备类型
+                int i = Scanning.SetDeviceType(3);//设备类型
                 if (i != 0)
                 {
-                    isError = true;
                     WriteLog("设备类型异常");
                     return "设备类型异常";
                 }
 
-                i = ScanningCopy.OpenDevice(iPort, strComParam);//打开扫描枪
+                i = Scanning.OpenDevice(iPort, strComParam);//打开扫描枪
                 if (i != 0)
                 {
-                    isError = true;
                     WriteLog("打开扫描枪异常");
-                    return "打开扫描枪异常";//打开扫描枪异常
+                    return "";//打开扫描枪异常
                 }
 
                 byte[] szData = new byte[256];
-                i = ScanningCopy.ReadData(ref szData[0], intSleep);//同步读条码信息
+                i = Scanning.ReadData(ref szData[0], intSleep);//同步读条码信息
 
                 string strGet = System.Text.Encoding.Default.GetString(szData, 0, szData.Length); //将字节数组转换为字符串
                 if (!string.IsNullOrEmpty(strGet))
                 {
                     byte[] buffer = Encoding.UTF8.GetBytes(strGet);
                     strGet = Encoding.GetEncoding("utf-8").GetString(buffer);
-                    //WriteLog("二维码信息(转换中文操作):" + strGet);
+                    WriteLog("二维码信息(转换中文操作):" + strGet);
                 }
                 strSweepCode = strGet.Trim().Substring(0, 120).Replace("\r", "").Replace("\n", "").Replace(" ", "").Replace("\0", "");//得到二维码编号
                 //strSweepCode = strSweepCode.Split('|')[0];
                 if (!string.IsNullOrEmpty(strSweepCode))
                     WriteLog("二维码编号:【" + strSweepCode + "】");
-                i = ScanningCopy.CloseDevice();//关闭扫描枪
+                i = Scanning.CloseDevice();//关闭扫描枪
                 return strSweepCode;
             }
             catch (Exception exp)
             {
-                Close();
-                isError = true;
                 WriteLog("扫码异常!" + exp.Message);
                 return "";
             }
         }
-      
+        //*/
+        #endregion
+
         /// <summary>
         /// 关闭扫描枪
         /// </summary>
         public void Close()
         {
             WriteLog("扫码关闭!");
-            ScanningCopy.CloseDevice();//关闭扫描枪
+            if (serialPort1.IsOpen) serialPort1.Close();
         }
 
         private void WriteLog(string str)
@@ -178,7 +232,7 @@ namespace MeterPlugInLibrary
             {
                 Directory.CreateDirectory(strPathFile);
             }
-            System.IO.TextWriter tw = new System.IO.StreamWriter(strPathFile + "\\扫码设备Copy_" + strDate + ".log", true);
+            System.IO.TextWriter tw = new System.IO.StreamWriter(strPathFile + "\\扫码设备_" + strDate + ".log", true);
 
             tw.WriteLine(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
             tw.WriteLine(str);