chore: 初始化合力驱动桥MES采集程序

This commit is contained in:
yexingqiang
2026-05-29 13:50:18 +08:00
commit 866412ccf3
1371 changed files with 182049 additions and 0 deletions

View File

@@ -0,0 +1,325 @@
using System;
using System.Collections;
using System.Runtime.InteropServices;
using System.Drawing;
using System.ComponentModel;
using System.Windows.Forms;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Data;
using System.Net;
using System.IO;
using System.IO.Ports;
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace SyUpLoad
{
partial class PartLoad
{
/// <summary>
/// 从DataReceived扫描枪发送条码到处理程序
/// BarCode(string barCode)
/// </summary>
/// <param name="barCode"></param>
public delegate void BarCodeInvoke(string barCode);
/// <summary>
/// BarCode(string barCode)
/// 从DataReceived扫描枪发送条码到处理程序
/// </summary>
BarCodeInvoke barCodeInvoke;
/// <summary>
/// 当前扫描枪类型
/// 1:手持2固定
/// </summary>
string ScannerType_Current = "1";
//手持扫描枪
private System.IO.Ports.SerialPort serialPort1 = new SerialPort();
/// <summary>
/// 初始化COM通讯口
/// </summary>
public void SetCOM()
{
try
{
//首选扫描枪
barCodeInvoke = new BarCodeInvoke(BarCode);
SetCOM1();
}
catch (Exception err)
{
// ApplicationLog.WriteLog(err, err.Message);
}
}
/// <summary>
/// 初始化COM通讯口
/// </summary>
public void SetCOM1()
{
try
{
//if (ApplicationConfig.PortName.Length < 3)
//{
// return;
//}
serialPort1.PortName = PortName; //端口号
serialPort1.BaudRate = BaudRate; //比特率默认为9600
serialPort1.Parity = Parity.None;//奇偶校验
serialPort1.StopBits = StopBits.One;//停止位
serialPort1.ReadTimeout = ReadTimeout; //读超时即在1000内未读到数据就引起超时异常
serialPort1.DtrEnable = true;
serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
OpenSerialPort();
}
catch (Exception err)
{
//ApplicationLog.WriteLog(err, err.Message);
}
finally
{
}
}
/// <summary>
/// 关闭扫描枪
/// </summary>
private void OpenSerialPortAll()
{
SetCOM1();
}
/// <summary>
/// 打开扫描枪
/// </summary>
private bool OpenSerialPort()
{
try
{
//if (ApplicationConfig.PortName.Length < 4)
//{
// return true;
//}
if (serialPort1 == null) return true;
if (!serialPort1.IsOpen)
{
serialPort1.Open();
SerialPort_Closing = false;
}
return true;
}
catch (Exception err)
{
//ApplicationLog.WriteLog(err, err.Message);
return false;
}
}
/// <summary>
/// 关闭扫描枪
/// </summary>
private bool CloseSerialPort()
{
try
{
//if (ApplicationConfig.PortName.Length < 4)
//{
// return true;
//}
if (serialPort1 == null) return true;
//根据当前串口对象,来判断操作
if (serialPort1.IsOpen)
{
SerialPort_Closing = true;
while (SerialPort_Listening) Application.DoEvents();
serialPort1.Close();
}
return true;
}
catch (Exception err)
{
//ApplicationLog.WriteLog(err, "CloseSerialPort");
return false;
}
}
/// <summary>
/// 关闭扫描枪
/// </summary>
private void CloseSerialPortAll()
{
CloseSerialPort();
}
/// <summary>
/// 是否没有执行完invoke相关操作
/// </summary>
private bool SerialPort_Listening = false;
/// <summary>
/// 是否正在关闭串口执行Application.DoEvents
/// </summary>
private bool SerialPort_Closing = false;
/// <summary>
/// 处理手持扫描枪
/// 对于总线缸盖上线工位扫描枪是固定扫描枪。F102
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//byte[] readBuf;
//int HowTime = ApplicationConfig.HowTime;
//int ByteTime = ApplicationConfig.ByteTime;
string barCode;
//获取或设置一个值,该值在串行通信过程中启用数据终端就绪 (DTR) 信号。
//如果为 true则启用数据终端就绪 (DTR);否则为 false。默认为 false。
bool DtrEnable = serialPort1.DtrEnable;
//如果已将数据设置就绪信号发送到该端口,则为 true否则为 false。
bool DsrHolding = serialPort1.DsrHolding;
//如果端口处于中断状态,则为 true否则为 false。
bool BreakState = serialPort1.BreakState; ;
if (SerialPort_Closing) return;
//如果正在关闭,忽略操作,直接返回, 尽快的完成串口监听线程的一次循环
try
{
//设置标记说明我已经开始处理数据一会儿要使用系统UI的。
SerialPort_Listening = true;
//20110225 zhangji
//获取扫描枪信息时加延时,否则可能无法完全读取扫描的信息
Thread.Sleep(200);
int n = serialPort1.BytesToRead;
byte[] buf = new byte[n];
//声明一个临时数组存储当前来的串口数据
serialPort1.Read(buf, 0, n);
n = n - ScannerTrim;
barCode = Encoding.UTF8.GetString(buf, 0, n);
BeginInvoke(barCodeInvoke, new Object[] { barCode });
}
catch (Exception err)
{
barCode = "";
//ApplicationLog.WriteLog(err, err.Message);
}
finally
{
//清空扫描枪缓冲区
serialPort1.DiscardInBuffer();
SerialPort_Listening = false;//我用完了ui可以关闭串口了。
//最后用完了先关闭串口,然后再打开串口
CloseSerialPort();
OpenSerialPort();
}
}
/// <summary>
/// 字符数组转字符串16进制
/// </summary>
/// <param name="InBytes"> 二进制字节</param>
/// <returns>类似"01 02 0F"</returns>
public static string ByteToString(byte[] InBytes)
{
string StringOut = "";
foreach (byte InByte in InBytes)
{
StringOut = StringOut + String.Format("{0:X2}", InByte) + " ";
}
return StringOut.Trim();
}
/// <summary>
/// strhex 转字节数组
/// </summary>
/// <param name="InString">类似"01 02 0F" 用空格分开的 </param>
/// <returns></returns>
public static byte[] StringToByte_Int(string InString)
{
string[] ByteStrings;
ByteStrings = InString.Split("|".ToCharArray());
byte[] ByteOut;
ByteOut = new byte[ByteStrings.Length];
try
{
for (int i = 0; i <= ByteStrings.Length - 1; i++)
{
ByteOut[i] = byte.Parse(ByteStrings[i]);
}
}
catch (Exception err)
{
//ApplicationLog.WriteLog(err, err.Message);
}
return ByteOut;
}
/// <summary>
/// strhex 转字节数组
/// </summary>
/// <param name="InString">类似"01 02 0F" 用空格分开的 </param>
/// <returns></returns>
public static byte[] StringToByte(string InString)
{
string[] ByteStrings;
ByteStrings = InString.Split(" ".ToCharArray());
byte[] ByteOut;
ByteOut = new byte[ByteStrings.Length];
for (int i = 0; i <= ByteStrings.Length - 1; i++)
{
ByteOut[i] = byte.Parse(ByteStrings[i], System.Globalization.NumberStyles.HexNumber);
}
return ByteOut;
}
/// <summary>
/// strhex 转字节数组
/// </summary>
/// <param name="InString">类似"01 02 0F" 中间无空格</param>
/// <returns></returns>
public static byte[] StringToByte_2(string InString)
{
byte[] ByteOut;
InString = InString.Replace(" ", "");
try
{
string[] ByteStrings = new string[InString.Length / 2];
int j = 0;
for (int i = 0; i < ByteStrings.Length; i++)
{
ByteStrings[i] = InString.Substring(j, 2);
j += 2;
}
ByteOut = new byte[ByteStrings.Length];
for (int i = 0; i <= ByteStrings.Length - 1; i++)
{
ByteOut[i] = byte.Parse(ByteStrings[i], System.Globalization.NumberStyles.HexNumber);
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return ByteOut;
}
/// <summary>
/// 字符串 转16进制字符串
/// </summary>
/// <param name="InString">unico</param>
/// <returns>类似“01 0f”</returns>
public static string Str_To_0X(string InString)
{
return ByteToString(UnicodeEncoding.Default.GetBytes(InString));
}
}
}

View File

@@ -0,0 +1,57 @@
using System;
using System.Collections;
using System.Runtime.InteropServices;
using System.Drawing;
using System.ComponentModel;
using System.Windows.Forms;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Data;
using System.Net;
using System.IO;
using System.IO.Ports;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Configuration;
namespace SyUpLoad
{
/// <summary>
/// 扫描枪
/// </summary>
partial class PartLoad
{
string PortName = ConfigurationManager.AppSettings["PortName"];
int ReadTimeout = Convert.ToInt32( ConfigurationManager.AppSettings["ReadTimeout"]);
int BaudRate = Convert.ToInt32(ConfigurationManager.AppSettings["BaudRate"]);
int ScannerTrim = Convert.ToInt32(ConfigurationManager.AppSettings["ScannerTrim"]);
/// <summary>
/// 处理条码信息
/// </summary>
/// <param name="barCode"></param>
private void BarCode(string barCode)
{
try
{
barCode = barCode.Replace("\r\n", "");
textBox_barcode.Text = barCode;
button_barcode_Click(null, null);
//string sendStr = "BarCode|Bar|" + ApplicationConfig.OpName + "|" + barCode;
//发送UDP到MES通讯服务器
//ApplicationLog.WriteLog("11111111111111");
//asySendMessage(sendStr);
}
catch (Exception err)
{
// ApplicationLog.WriteLog(err, "BarCode");
}
}
}
}