406 lines
12 KiB
C#
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
|
|
}
|
|
} |