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