Files
ATV_STDLabelAttach/QRValidation/Project/Class/CAmkorSTDBarcode.cs
atvstdla dc66158497 Add QRValidation project to repository
- Added QRValidation vision control system
- Includes CapCleaningControl UI components
- WebSocket-based barcode validation system
- Support for Crevis PLC integration
- Test projects for PLC emulator, motion, IO panel, and Modbus

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-02 11:38:38 +09:00

119 lines
4.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Project.Class
{
public class CAmkorSTDBarcode
{
public string Message { get; private set; }
public Boolean isValid = false;
public string SID { get; private set; }
public string VLOT { get; private set; }
public string RID { get; private set; }
public string MFGDate { get; set; }
public string SUPPLY { get; set; }
public int QTY { get; set; }
public string RAW { get; set; }
public Boolean DateError { get; set; }
public CAmkorSTDBarcode()
{
isValid = false;
}
public CAmkorSTDBarcode(string raw)
{
SetBarcode(raw);
}
public void SetBarcodeDemo()
{
SetBarcode("101410653;AG64B3W;SAMSUNG;20000;AG64B3W0031;19000101;");
}
/// <summary>
/// Returns barcode value with current property values.
/// To check the original barcode value, check the RAW property
/// </summary>
/// <returns></returns>
public string GetBarcode()
{
return string.Format("{0};{1};{2};{3};{4};{5};",
SID, VLOT, SUPPLY, QTY, RID, MFGDate);
}
public void SetBarcode(string raw)
{
isValid = false;
this.Message = string.Empty;
this.RAW = raw;
var buf = raw.Split(';');
if (buf.Length < 5)
{
isValid = false;
Message = "buffer len error : " + raw;
return;
}
decimal vSID = 0;
double vQty = 0;
if (decimal.TryParse(buf[0], out vSID) == false)
{
Message = "SID value is not a number. Amkor STD barcode consists of numbers";
return;
}
this.SID = vSID.ToString();
this.VLOT = buf[1];
this.SUPPLY = buf[2];
if (double.TryParse(buf[3], out vQty) == false) return;
this.QTY = (int)vQty;
this.RID = buf[4];
//DateTime vMFGDate;
MFGDate = buf[5].Trim();
DateError = false;
//buf[5] = buf[5].Replace("-", ""); //날짜표식제거
//if (this.SUPPLY.ToUpper() == "SAMSUNG" && buf[5].Length == 4) //삼성은 년도와 주차로 입력한다 210202
//{
// var y = "20" + buf[5].Substring(0, 2);
// MFGDate = new DateTime(int.Parse(y), 1, 1).ToString("yyyyMMdd"); //주차계산무시한다
// DateError = true;
//}
//else if (this.SUPPLY.ToUpper() == "WT" && buf[5].Length == 4) //삼성은 년도와 주차로 입력한다 210202
//{
// var y = "20" + buf[5].Substring(0, 2);
// MFGDate = new DateTime(int.Parse(y), 1, 1).ToString("yyyyMMdd"); //주차계산무시한다
// DateError = true;
//}
//else if (buf[5].Length == 8) //일반적인날짜데이터이며 YYYYMMDD 형태이다
//{
// buf[5] = buf[5].Substring(0, 4) + "-" + buf[5].Substring(4, 2) + "-" + buf[5].Substring(6, 2);
// if (DateTime.TryParse(buf[5], out vMFGDate) == false) return;
// MFGDate = vMFGDate.ToString("yyyyMMdd");
// DateError = false;
//}
////else if (buf[5].Equals("N/A")) //날짜값에 NA
////{
//// MFGDate = "N/A";
//// DateError = false;
////}
////else if (buf[5].Equals("NA")) //날짜값에 NA
////{
//// MFGDate = "NA";
//// DateError = false;
////}
//else
//{
// MFGDate = buf[5].Trim();
// Message = "Date value Length Error : " + buf[5];
// DateError = false;
// //return;
//}
isValid = true;
}
}
}