From 53ad1d57db83e571b4d013c5d02dc82b5782326d Mon Sep 17 00:00:00 2001
From: duhe <226547893@qq.com>
Date: 星期三, 26 六月 2024 14:48:21 +0800
Subject: [PATCH] 桌面端-称重入库:增加称重接口

---
 WarM/条码打印/Kf_WeighToBarCode.cs |  306 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 305 insertions(+), 1 deletions(-)

diff --git "a/WarM/\346\235\241\347\240\201\346\211\223\345\215\260/Kf_WeighToBarCode.cs" "b/WarM/\346\235\241\347\240\201\346\211\223\345\215\260/Kf_WeighToBarCode.cs"
index 42fd702..854f918 100644
--- "a/WarM/\346\235\241\347\240\201\346\211\223\345\215\260/Kf_WeighToBarCode.cs"
+++ "b/WarM/\346\235\241\347\240\201\346\211\223\345\215\260/Kf_WeighToBarCode.cs"
@@ -11,6 +11,8 @@
 using System.Threading;
 using System.IO;
 using Pub_Class;
+using System.IO.Ports;
+using System.Linq;
 
 namespace WarM
 {
@@ -62,6 +64,9 @@
             grdMain.DataSource = null;
             grdSub.DataSource = null;
             chkHDYFlag.Checked = true;
+
+            //璇诲彇 鎵撳紑涓插彛鐨勯厤缃俊鎭�
+            readParams();
         }
 
         //绐椾綋鍔犺浇
@@ -383,7 +388,13 @@
 
         private void tc_Click(object sender, EventArgs e)
         {
-            this.Close();
+            //閫�鍑烘椂鍏抽棴涓插彛
+            if (ComDevice != null)
+            {
+                CloseCom();
+            }
+
+            this.Close();   
         }
 
         #endregion
@@ -1035,8 +1046,301 @@
 
 
 
+        #region 璇诲彇璁惧绉伴噸淇℃伅
 
 
 
+        private static string repeatData = string.Empty;
+        private SerialPort ComDevice = null;
+
+        private int HGetWeight = 0;
+        private string Message = "";
+
+        private int timeIndex = 0;
+
+        private string value_COM = "";              //COM
+        private string value_BaudRate = "9600";     //姣旂壒鐜�
+        private string value_StopBits = "1";        //鍋滄浣�
+        private string value_Parity = "0";          //鏍¢獙浣�
+        private string value_DataBits = "8";        //鏁版嵁浣�
+
+        #region 鎵撳紑涓插彛鎸夐挳瑙﹀彂浜嬩欢
+        private void button_OpenCom_Click(object sender, EventArgs e)
+        {
+            value_COM = textBox_COM.Text;
+            OpenCom();
+        }
+        #endregion
+
+        #region 鎵撳紑涓插彛
+        public void OpenCom()
+        {
+            //鍒濆鍖栦覆鍙�
+            ComDevice = new SerialPort();
+            ComDevice.DataReceived += new SerialDataReceivedEventHandler(Com_DataReceived);//缁戝畾浜嬩欢
+            string[] PortNames = SerialPort.GetPortNames();
+
+            if (!ComDevice.IsOpen)
+            {
+                try
+                {
+                    ComDevice.PortName = value_COM;
+                    ComDevice.BaudRate = int.Parse(value_BaudRate);
+                    switch (value_Parity)
+                    {
+                        case "0":
+                            ComDevice.Parity = Parity.None;
+                            break;
+                        case "1":
+                            ComDevice.Parity = Parity.Odd;
+                            break;
+                        case "2":
+                            ComDevice.Parity = Parity.Even;
+                            break;
+                        case "3":
+                            ComDevice.Parity = Parity.Mark;
+                            break;
+                        case "4":
+                            ComDevice.Parity = Parity.Space;
+                            break;
+                        default:
+                            break;
+                    }
+
+                    ComDevice.DataBits = int.Parse(value_DataBits);
+                    switch (value_StopBits)
+                    {
+                        case "0":
+                            ComDevice.StopBits = StopBits.None;
+                            break;
+                        case "1":
+                            ComDevice.StopBits = StopBits.One;
+                            break;
+                        case "2":
+                            ComDevice.StopBits = StopBits.Two;
+                            break;
+                        case "1.5":
+                            ComDevice.StopBits = StopBits.OnePointFive;
+                            break;
+                        default:
+                            break;
+                    }
+
+                    ComDevice.Open();
+
+                    MessageBox.Show("涓插彛鎵撳紑鎴愬姛锛�");
+
+                    //淇濆瓨涓插彛鐨勯厤缃俊鎭�
+                    saveParams();
+                }
+                catch (Exception ex)
+                {
+                    MessageBox.Show("鎵撳紑涓插彛澶辫触锛�" + ex.Message, "閿欒", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                    return;
+                }
+            }
+            else
+            {
+
+            }
+        }
+        #endregion
+
+        #region 鍏抽棴涓插彛
+        public void CloseCom()
+        {
+            if (!ComDevice.IsOpen)
+            {
+                MessageBox.Show("涓插彛鍏抽棴澶辫触锛佸綋鍓嶄覆鍙f湭鎵撳紑锛�");
+            }
+            else
+            {
+                try
+                {
+                    Thread.Sleep(100);
+                    ComDevice.Close();
+
+                    MessageBox.Show("涓插彛鍏抽棴鎴愬姛锛�");
+                }
+                catch (Exception ex)
+                {
+                    MessageBox.Show(ex.Message, "閿欒", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                    return;
+                }
+            }
+        }
+        #endregion
+
+        #region 鎺ユ敹鏁版嵁
+        private void Com_DataReceived(object sender, SerialDataReceivedEventArgs e)
+        {
+            if (HGetWeight == 1)
+            {
+                byte[] ReDatas = new byte[ComDevice.BytesToRead];
+                ComDevice.Read(ReDatas, 0, ReDatas.Length);//璇诲彇鏁版嵁
+                this.AddData(ReDatas);//杈撳嚭鏁版嵁
+            }
+        }
+        #endregion
+
+        #region 澶勭悊鎺ユ敹鍒扮殑鏁版嵁
+        public void AddData(byte[] data)
+        {
+            StringBuilder sb = new StringBuilder();
+            sb.Append(Encoding.ASCII.GetString(data));
+
+            var str = sb.ToString();
+            str = str.Replace("w", "").Replace("n", "").Replace("kg\r\n", ";");
+
+
+            if (str != repeatData)
+            {
+                repeatData = str;
+                string[] strArray = str.Split(';');
+
+                for (int i = 0; i < strArray.Length; i++)
+                {
+                    if (double.TryParse(strArray[i], out double ret))//鍒ゆ柇鏄惁鏄暟瀛�
+                    {
+
+                        Message += double.Parse(strArray[i]) + ";";
+                    }
+                }
+            }
+        }
+        #endregion
+
+        #region 鑾峰彇鏁扮粍涓嚭鐜伴鐜囨渶楂樼殑鏁版嵁
+        private string getMostStr(string message)
+        {
+            string[] strArray = message.Split(';');
+            // 浣跨敤LINQ鏌ヨ鍑虹幇娆℃暟鏈�澶氱殑鍏冪礌
+            var maxElement = strArray.GroupBy(x => x)
+                                  .OrderByDescending(g => g.Count())
+                                  .First()
+                                  .Key;
+
+
+            return maxElement;
+        }
+        #endregion
+
+        #region 璁℃椂鍣ㄨЕ鍙戜簨浠讹紝鐢ㄤ簬鑾峰彇鏃堕棿闂撮殧鍐呮帴鏀跺埌鐨勬暟鎹�
+        private void timer2_Tick(object sender, EventArgs e)
+        {
+            if (timeIndex == 0)
+            {
+                timeIndex = 1;
+            }
+            else
+            {
+                timer2.Enabled = false;
+
+                string str = getMostStr(Message);
+
+                txtHWeightQyt.Text = str;
+
+
+                Message = "";
+                timeIndex = 0;
+                HGetWeight = 0;
+            }
+        }
+        #endregion
+
+        #region 绉伴噸鎸夐挳瑙﹀彂浜嬩欢
+        private void button_getHWeight_Click(object sender, EventArgs e)
+        {
+            HGetWeight = 1;
+            timer2.Enabled = true;
+        }
+        #endregion
+
+
+        #region 淇濆瓨閰嶇疆淇℃伅
+        //鍐欏叆閰嶇疆鍙傛暟
+        private void saveParams()
+        {
+            //鍒ゆ柇鏂囦欢鏄惁瀛樺湪   
+            if (!File.Exists(Application.StartupPath + "//Kf_WeightToBarCodeParams.txt"))
+            {
+                FileStream fs1 = new FileStream(Application.StartupPath + "//Kf_WeightToBarCodeParams.txt", FileMode.Create, FileAccess.Write);//鍒涘缓鍐欏叆鏂囦欢    
+                StreamWriter sw = new StreamWriter(fs1);
+                sw.WriteLine(value_COM);//寮�濮嬪啓鍏ュ��   
+                sw.WriteLine(value_BaudRate);
+
+                sw.WriteLine(value_StopBits);
+
+                sw.WriteLine(value_Parity);
+                sw.WriteLine(value_DataBits);
+                sw.Close();
+                fs1.Close();
+            }
+            else
+            {
+                FileStream fs1 = new FileStream(Application.StartupPath + "//Kf_WeightToBarCodeParams.txt", FileMode.Create, FileAccess.Write);//鍒涘缓鍐欏叆鏂囦欢    
+                StreamWriter sw = new StreamWriter(fs1);
+                sw.WriteLine(value_COM);//寮�濮嬪啓鍏ュ��   
+                sw.WriteLine(value_BaudRate);
+
+                sw.WriteLine(value_StopBits);
+
+                sw.WriteLine(value_Parity);
+                sw.WriteLine(value_DataBits);
+                sw.Close();
+                fs1.Close();
+            }
+        }
+        #endregion
+
+        #region 璇诲彇閰嶇疆淇℃伅
+        //璇诲彇閰嶇疆鏂囦欢
+        private void readParams()
+        {
+            //鍏抽棴涓插彛
+            //CloseCom();
+
+            if (File.Exists(Application.StartupPath + "//Kf_WeightToBarCodeParams.txt"))
+            {
+                //璇诲彇鏂囦欢鍊煎苟鏄剧ず鍒扮獥浣�    
+                FileStream fs = new FileStream(Application.StartupPath + "//Kf_WeightToBarCodeParams.txt", FileMode.Open, FileAccess.ReadWrite);
+                StreamReader sr = new StreamReader(fs);
+                string line = sr.ReadLine();
+                int curLine = 0;
+                while (line != null)
+                {
+                    if (++curLine == 1)
+                    {
+                        value_COM = line;
+                        textBox_COM.Text = value_COM;
+                    }
+                    else if (curLine == 2)
+                    {
+                        value_BaudRate = line;
+                    }
+                    else if (curLine == 3)
+                    {
+                        value_StopBits = line;
+                    }
+                    else if (curLine == 4)
+                    {
+                        value_Parity = line;
+                    }
+                    else if (curLine == 5)
+                    {
+                        value_DataBits = line;
+                    }
+                    else
+                    {
+
+                    }
+                    line = sr.ReadLine();
+                }
+                sr.Close();
+                fs.Close();
+            }
+        }
+        #endregion
+        #endregion
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1