Explorar o código

winfrom提交

duyong %!s(int64=3) %!d(string=hai) anos
pai
achega
0f5f46ee23

+ 35 - 41
CarMeterSystem/frmMain.cs

@@ -182,6 +182,7 @@ namespace CarMeterSystem
 
                         imageCurlControl.Start(); //图片上传线程
                         sweepCodeClass.StartThreadSweep(); //扫码线程
+                        sweepCodeCpoyClass.StartThreadSweep(); //扫码线程
                     }
                     else
                     {
@@ -413,6 +414,7 @@ namespace CarMeterSystem
                 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))
@@ -454,57 +456,48 @@ 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(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))
+                        codeFlag = true;
+                        frmOneYardToEnd frmOneYardToEnd = new frmOneYardToEnd();
+                        Hashtable hashTable = new Hashtable();
+                        hashTable.Add("message", sweepCodeClass.StrCode);
+                        rmsSweepCodeClass = mwcfs.DecryptionForWfTest(hashTable);
+                        if (rmsSweepCodeClass.Code == "0")
                         {
-                            if (string.IsNullOrEmpty(PbCache.strCode))
-                            {
-                                codeFlag = false;
-                                firstCode = "";
-                                PbCache.strCode = "";
-                                l.WriteLog(12, "主线程扫码值为空时清空;sweepCodeClass.StrCode值为" + sweepCodeClass.StrCode + " ;PbCache.strCode值为:" + PbCache.strCode);
-                            }
+                            PbCache.collect.carno = rmsSweepCodeClass.Data;
+                            PbCache.strCode = rmsSweepCodeClass.Data;
                         }
-                        else
+                        if (rmsSweepCodeClass.Code == "1")
                         {
-                            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);
+                            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);
                     }
                 }
                 else
@@ -1188,6 +1181,7 @@ namespace CarMeterSystem
             collection.Stop();
             imageCurlControl.Stop();
             sweepCodeClass.CloseThread();
+            sweepCodeCpoyClass.CloseThread();
             timer1.Stop();
             timer1.Dispose();
         }

+ 3 - 0
Common/log/Log.cs

@@ -146,6 +146,9 @@ namespace Common
                     case 33:
                         strLogName = "停留超时";
                         break;
+                    case 99:
+                        strLogName = "双扫码";
+                        break;
                     default: 
                         strLogName = "计量终端_"; 
                         break;

+ 1 - 0
MeterPlugInLibrary/MeterPlugInLibrary.csproj

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

+ 75 - 0
MeterPlugInLibrary/扫码枪/ScanningCopy.cs

@@ -0,0 +1,75 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MeterPlugInLibrary
+{
+    public class ScanningCopy
+    {
+        /// <summary>
+        /// 设置设备类型
+        /// </summary>
+        [DllImport("GeitBarCodeReader.dll", EntryPoint = "SetDeviceType", CharSet = CharSet.Ansi)]
+        public static extern int SetDeviceType(int iType);
+
+        /// <summary>
+        /// 打开扫码枪串口
+        /// </summary>
+        [DllImport("GeitBarCodeReader.dll", EntryPoint = "OpenDevice", CharSet = CharSet.Ansi)]
+        public static extern int OpenDevice(int iPort, string szComParam);
+
+        /// <summary>
+        /// 关闭扫码枪串口
+        /// </summary>
+        [DllImport("GeitBarCodeReader.dll", EntryPoint = "CloseDevice", CharSet = CharSet.Ansi)]
+        public static extern int CloseDevice();
+
+        /// <summary>
+        /// 获取扫码枪状态
+        /// </summary>
+        [DllImport("GeitBarCodeReader.dll", EntryPoint = "GetStatus", CharSet = CharSet.Ansi)]
+        public static extern int GetStatus();
+
+        /// <summary>
+        /// 复位
+        /// </summary>
+        [DllImport("GeitBarCodeReader.dll", EntryPoint = "Reset", CharSet = CharSet.Ansi)]
+        public static extern int Reset();
+
+        /// <summary>
+        /// 同步读条码信息
+        /// </summary>
+        [DllImport("GeitBarCodeReader.dll", EntryPoint = "ReadData", CharSet = CharSet.Ansi)]
+        public static extern int ReadData(ref byte szData, int iTimeout);
+
+        /// <summary>
+        /// 开始异步读数据
+        /// </summary>
+        [DllImport("GeitBarCodeReader.dll", EntryPoint = "BeginReadASYN", CharSet = CharSet.Ansi)]
+        public static extern int BeginReadASYN();
+
+        //**************************************************************
+        /// <summary>
+        /// 停止异步读数据
+        /// </summary>
+        [DllImport("GeitBarCodeReader.dll", EntryPoint = "CancelReadASYN", CharSet = CharSet.Ansi)]
+        public static extern int CancelReadASYN();
+
+        /// <summary>
+        /// 读取条码数据异步
+        /// </summary>
+        [DllImport("GeitBarCodeReader.dll", EntryPoint = "ReadDataASYN", CharSet = CharSet.Ansi)]
+        public static extern int ReadDataASYN(ref byte szData);
+        //**************************************************************
+
+        /// <summary>
+        /// 获取中文错误信息
+        /// </summary>
+        [DllImport("GeitBarCodeReader.dll", EntryPoint = "GetErrInfo", CharSet = CharSet.Ansi)]
+        public static extern int GetErrInfo(ref string szErrorInfo);
+
+    }
+}

+ 5 - 2
MeterPlugInLibrary/扫码枪/SweepCode.cs

@@ -110,10 +110,10 @@ namespace MeterPlugInLibrary
         public string GetSweepCodeInfo(int intSleep, int iPort, string strComParam)
         {
             try
-            {
-                Close();
+            { 
                 string strSweepCode = "";
                 int i = Scanning.SetDeviceType(3);//设备类型
+
                 if (i != 0)
                 {
                     isError = true;
@@ -121,6 +121,8 @@ namespace MeterPlugInLibrary
                     return "设备类型异常";
                 }
 
+                Close();
+
                 i = Scanning.OpenDevice(iPort, strComParam);//打开扫描枪
                 if (i != 0)
                 {
@@ -162,6 +164,7 @@ namespace MeterPlugInLibrary
         {
             WriteLog("扫码关闭!");
             Scanning.CloseDevice();//关闭扫描枪
+            Thread.Sleep(100);
         }
 
         private void WriteLog(string str)

+ 11 - 11
MeterPlugInLibrary/扫码枪/SweepCodeCpoy.cs

@@ -26,11 +26,11 @@ namespace MeterPlugInLibrary
             set { strState = value; }
         }
         private object obj = new object();
-        private Thread mThread = null;
+        private Thread mThreadCpoy = null;
         public void StartThreadSweep()
         {
-            mThread = new Thread(new ThreadStart(ThreadSweepInfo));
-            mThread.Start();
+            mThreadCpoy = new Thread(new ThreadStart(ThreadSweepInfo));
+            mThreadCpoy.Start();
         }
 
         /// <summary>
@@ -87,9 +87,9 @@ namespace MeterPlugInLibrary
         {
             try
             {
-                if (mThread != null)
+                if (mThreadCpoy != null)
                 {
-                    mThread.Abort();
+                    mThreadCpoy.Abort();
                     Close();
                 }
                 return true;
@@ -113,7 +113,7 @@ namespace MeterPlugInLibrary
             {
                 Close();
                 string strSweepCode = "";
-                int i = Scanning.SetDeviceType(3);//设备类型
+                int i = ScanningCopy.SetDeviceType(3);//设备类型
                 if (i != 0)
                 {
                     isError = true;
@@ -121,7 +121,7 @@ namespace MeterPlugInLibrary
                     return "设备类型异常";
                 }
 
-                i = Scanning.OpenDevice(iPort, strComParam);//打开扫描枪
+                i = ScanningCopy.OpenDevice(iPort, strComParam);//打开扫描枪
                 if (i != 0)
                 {
                     isError = true;
@@ -130,7 +130,7 @@ namespace MeterPlugInLibrary
                 }
 
                 byte[] szData = new byte[256];
-                i = Scanning.ReadData(ref szData[0], intSleep);//同步读条码信息
+                i = ScanningCopy.ReadData(ref szData[0], intSleep);//同步读条码信息
 
                 string strGet = System.Text.Encoding.Default.GetString(szData, 0, szData.Length); //将字节数组转换为字符串
                 if (!string.IsNullOrEmpty(strGet))
@@ -143,7 +143,7 @@ namespace MeterPlugInLibrary
                 //strSweepCode = strSweepCode.Split('|')[0];
                 if (!string.IsNullOrEmpty(strSweepCode))
                     WriteLog("二维码编号:【" + strSweepCode + "】");
-                i = Scanning.CloseDevice();//关闭扫描枪
+                i = ScanningCopy.CloseDevice();//关闭扫描枪
                 return strSweepCode;
             }
             catch (Exception exp)
@@ -161,7 +161,7 @@ namespace MeterPlugInLibrary
         public void Close()
         {
             WriteLog("扫码关闭!");
-            Scanning.CloseDevice();//关闭扫描枪
+            ScanningCopy.CloseDevice();//关闭扫描枪
         }
 
         private void WriteLog(string str)
@@ -178,7 +178,7 @@ namespace MeterPlugInLibrary
             {
                 Directory.CreateDirectory(strPathFile);
             }
-            System.IO.TextWriter tw = new System.IO.StreamWriter(strPathFile + "\\扫码设备_" + strDate + ".log", true);
+            System.IO.TextWriter tw = new System.IO.StreamWriter(strPathFile + "\\扫码设备Copy_" + strDate + ".log", true);
 
             tw.WriteLine(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
             tw.WriteLine(str);