Files
PR_PRM_GUI/LFP_Manager_PRM/Forms/fmxInventoryConfig2.cs
2026-02-11 10:10:43 +09:00

406 lines
12 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using LFP_Manager.DataStructure;
using LFP_Manager.Function;
using LFP_Manager.Controls;
using LFP_Manager.Utils;
namespace LFP_Manager.Forms
{
public partial class fmxInventoryConfig2 : DevExpress.XtraEditors.XtraForm
{
#region VARIABLES
private bool fBarCode = false;
private bool ctrlKey = false;
private CommConfig Config;
private int SystemId = 0;
private int CmdResult = 0;
private int CellDivUnit = 0;
private DeviceSystemData SystemData;
private DeviceInforation wInvDate;
private string oldMdSn;
public event InvDataUpdateEvent OnUpdate = null;
public event InvDateCmdEvent OnCommand = null;
#endregion
#region CONSTRUCTORS
public fmxInventoryConfig2()
{
InitializeComponent();
}
public fmxInventoryConfig2(CommConfig aConfig, int sId, ref DeviceSystemData aSystemData, int aCellDivUnit)
{
InitializeComponent();
oldMdSn = "";
Config = aConfig;
SystemId = sId;
SystemData = aSystemData;
SystemData.mNo = SystemId;
CellDivUnit = aCellDivUnit;
tmrDisplay.Enabled = true;
tmrCmd.Enabled = true;
KeyPreview = true;
KeyDown += new KeyEventHandler(teBarCode_KeyDown);
KeyPress += new KeyPressEventHandler(teBarCode_KeyPress);
}
#endregion
void InitData()
{
wInvDate = new DeviceInforation
{
module_sn = new byte[32]
};
}
#region TIMER ENVENT
private void tmrDisplay_Tick(object sender, EventArgs e)
{
DisplayValue();
OnUpdate?.Invoke(this);
}
#endregion
#region PUBLIC FUCTIONS
public void UpdateData(ref DeviceSystemData aSystemData)
{
SystemData = aSystemData;
}
#endregion
#region PROCESSING DATA
private bool CheckMdSerialNo(string mSN)
{
bool result = false;
csDbUtils.MdDbCreate(Config, mSN);
DataTable dtMdData = new DataTable();
DataTable dtMdMatch = new DataTable();
DataTable dtErrorLog = new DataTable();
//string sql = String.Format("SELECT * FROM TInventoryData WHERE pcb_sn = {0}", bSN);
string sql = String.Format("SELECT * FROM TInventoryData");
dtMdData = csDbUtils.GetDataTableBySelect(Config, mSN, sql, "TInventoryData");
if (dtMdData != null)
{
if (dtMdData.Rows.Count > 1)
{
DataRow[] arrRows = null;
arrRows = dtMdData.Select(String.Format("module_sn = '{0}'", mSN));
if (arrRows.Length > 0) { result = true; }
}
}
return result;
}
private void CmdMDateWrite()
{
UInt32 mTimeStamp = csUtils.CalcKKTimeStamp(DateTime.Now);
wInvDate.ManufactureDate = mTimeStamp;
OnCommand?.Invoke(SystemId, 999, 1, ref wInvDate);
}
private void CheckResult()
{
byte[] a = Encoding.UTF8.GetBytes(nMdNo.Text);
byte[] b = SystemData.Information.pcb_sn;
try
{
csDbUtils.MdLogDataInsert(ref Config, nMdNo.Text, ref SystemData, DateTime.Now, CellDivUnit);
csDbUtils.MdSnDataInsert(Config, SystemData, nMdNo.Text);
oldMdSn = nMdNo.Text;
//MessageBox.Show(String.Format("Module data insert complete - [{0}]", nMdNo.Text)
// , "Information"
// , MessageBoxButtons.OK
// , MessageBoxIcon.Information
// );
lbResult.Text = String.Format("PASS: {0}", String.Format("Module data insert complete - [{0}]", nMdNo.Text));
lbResult.ForeColor = Color.Blue;
}
catch (Exception ex)
{
throw new Exception(String.Format("Module data insert fail - [{0}] \r\n{1}", nMdNo.Text, ex.Message));
//MessageBox.Show(String.Format("Module data insert fail - [{0}] \r\n{1}", nMdNo.Text, ex.Message)
// , "Warning"
// , MessageBoxButtons.OK
// , MessageBoxIcon.Warning
// );
}
}
private bool SelectModuleSN(string mSN)
{
bool result = false;
//string sql = String.Format("SELECT * FROM TInventoryData WHERE pcb_sn = {0}", bSN);
string sql = String.Format("SELECT * FROM TModuleValue");
DataTable dtMdData = csDbUtils.GetDataTableBySelect(Config, mSN, sql, "TModuleValue");
if (dtMdData != null)
{
if (dtMdData.Rows.Count > 0)
{
mnView.DataSource = dtMdData;
//DataRow[] arrRows = null;
//arrRows = dtMdData.Select(String.Format("module_sn = '{0}'", mSN));
//if (arrRows.Length > 0) { result = true; }
}
gbDvResult.Text = string.Format("Module Number List ({0})", dtMdData.Rows.Count);
}
return result;
}
#endregion
#region BUTTON EVENT
private void btnInvWrite_Click(object sender, EventArgs e)
{
string result = "";
try
{
if (nMdNo.Text.Length == 24)
{
csDbUtils.MdDbCreate(Config, nMdNo.Text);
if ((SystemData.Information.pcb_sn == null) || (SystemData.Information.pcb_sn == null) || (SystemData.Information.pcb_sn[0] == 0))
{
result = "No BMS Serial Number - Please check CAN communication";
return;
}
if (CheckMdSerialNo(nMdNo.Text) == false)
{
CheckResult();
//byte[] mSN = Encoding.UTF8.GetBytes(nMdNo.Text);
//if (wInvDate.module_sn == null) wInvDate.module_sn = new byte[32];
//for (int i = 0; i < wInvDate.module_sn.Length; i++)
//{
// wInvDate.module_sn[i] = 0;
//}
//for (int i = 0; i < mSN.Length; i++)
//{
// wInvDate.module_sn[i] = mSN[i];
//}
//CmdMDateWrite();
//CmdResult = 1;
}
else
{
result = "Already used Module serial number";
}
}
}
catch (Exception ex)
{
result = ex.Message;
}
finally
{
if (result != "")
{
//_ = MessageBox.Show(string.Format("{0} - [{1}]", result, nMdNo.Text)
// , "Warning"
// , MessageBoxButtons.OK
// , MessageBoxIcon.Warning
// );
lbResult.Text = String.Format("Fail: {0}", result);
lbResult.ForeColor = Color.Red;
csLog.SystemErrorLog(Config, result, DateTime.Now, Application.ExecutablePath);
}
oldMdSn = nMdNo.Text;
nMdNo.Text = "";
}
}
#endregion
#region DISPLAY DATA
private void DisplayValue()
{
// Device PCB S/N
byte[] tmpPcbNo = new byte[SystemData.Information.pcb_sn.Length + 1];
for (int i = 0; i < SystemData.Information.pcb_sn.Length; i++)
{
tmpPcbNo[i] = SystemData.Information.pcb_sn[i];
}
tmpPcbNo[SystemData.Information.pcb_sn.Length] = 0;
string strPcbSerial = Encoding.Default.GetString(tmpPcbNo).Trim('\0');
lbPcbSerial.Text = String.Format("BMS S/N: {0}", strPcbSerial);
// Device Module S/N
byte[] tmpMdNo = new byte[SystemData.Information.module_sn.Length + 1];
for (int i = 0; i < SystemData.Information.module_sn.Length; i++)
{
tmpMdNo[i] = SystemData.Information.module_sn[i];
}
tmpMdNo[SystemData.Information.module_sn.Length] = 0;
string strMdSerial = Encoding.Default.GetString(tmpMdNo).Trim('\0');
lbMdSerial.Text = String.Format("Module S/N: {0}", strMdSerial);
}
#endregion
#region GLOBAL KEYBOARD HOOK
private void fmxInventoryConfig2_Load(object sender, EventArgs e)
{
}
private void teBarCode_KeyPress(object sender, KeyPressEventArgs e)
{
if (fBarCode == false)
{
if (e.KeyChar == 0x0D)
{
fBarCode = true;
btnInvWrite_Click(sender, e);
//checkBarCode1(nMdNo.Text);
}
else if (e.KeyChar == 22)
{
//ctrlKey = true;
IDataObject ido = Clipboard.GetDataObject();
if (ido.GetDataPresent(typeof(string)))
{
nMdNo.Text = (string)ido.GetData(typeof(string));
}
}
else if (e.KeyChar > 0x20)
{
if (e.KeyChar == 'v')
{
if (ctrlKey)
{
IDataObject ido = Clipboard.GetDataObject();
if (ido.GetDataPresent(typeof(string)))
{
nMdNo.Text = (string)ido.GetData(typeof(string));
}
}
}
else
{
nMdNo.Text += e.KeyChar;
}
}
}
}
private void teBarCode_KeyDown(object sender, KeyEventArgs e)
{
if (fBarCode)
{
nMdNo.Text = "";
fBarCode = false;
}
}
public void checkBarCode1(string code)
{
if (CheckMdSerialNo(code))
{
}
else
{
}
//if (dt.Rows.Count > 0)
//{
// DataRow aRow = dt.Rows[0];
// MakeCellInformation(aRow);
// MakeCellAssyNo(aRow);
//}
//else
//{
// MakeBarCodeForm("The data could" + Environment.NewLine + "not be found." + Environment.NewLine + "(无数据)", 1);
//}
}
private void MakeBarCodeForm(string result, int flag)
{
lbResult.Text = result;
switch (flag)
{
case 0:
lbResult.ForeColor = Color.Blue;
break;
case 1:
lbResult.ForeColor = Color.Red;
break;
}
}
#endregion
#region BUTTON EVENT
private void btnClose_Click(object sender, EventArgs e)
{
Close();
}
private void btnRefresh_Click(object sender, EventArgs e)
{
try
{
string lotNo;
if (oldMdSn == "")
{
lotNo = "01PPBCNA013006CAW0000019";
}
else
{
lotNo = oldMdSn;
}
SelectModuleSN(lotNo);
mnView.AutoResizeColumns();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
private void btnExportExcel_Click(object sender, EventArgs e)
{
//
}
#endregion
}
}