add-成品下线69码校验,扫码枪扫码器69码扫描

dev
liuwf 11 months ago
parent 2534922fce
commit af2f481190

@ -406,6 +406,16 @@
SAP计划员100=成品;200=箱体;300=门体)
</summary>
</member>
<member name="P:Admin.Core.Model.BaseMaterialInfo.ProductCode">
<summary>
69码成品下线校验使用
</summary>
</member>
<member name="P:Admin.Core.Model.BaseMaterialInfo.ProductName">
<summary>
69码对应的商品名称
</summary>
</member>
<member name="T:Admin.Core.Model.Model_New.BaseOrderInfo">
<summary>
SAP订单信息

@ -110,5 +110,17 @@ namespace Admin.Core.Model
/// </summary>
[SugarColumn(ColumnName = "DISPO")]
public string Dispo { get; set; }
/// <summary>
/// 69码成品下线校验使用
/// </summary>
[SugarColumn(ColumnName = "PRODUCT_CODE")]
public string ProductCode { get; set; }
/// <summary>
/// 69码对应的商品名称
/// </summary>
[SugarColumn(ColumnName = "PRODUCT_NAME")]
public string ProductName { get; set; }
}
}

@ -29,12 +29,19 @@ namespace Aucma.Core.ProductOffLine.Business
#region 单例实现
private static readonly GunBusiness lazy = new GunBusiness();
#region 变量定义
//成品码
private static string ProductCode = string.Empty;
// 69码
private static string Code69 = string.Empty;
#endregion
/// <summary>
/// 扫码委托
/// </summary>
/// <param name="materialCodeStr"></param>
/// <param name="ip"></param>
public delegate void RefreshMaterialCodeStr(string materialCodeStr, string ip);
public delegate void RefreshMaterialCodeStr(string ProductCode, string Code69, string ip);
public static event RefreshMaterialCodeStr RefreshMaterialCodeStrEvent;
public static GunBusiness Instance
@ -93,13 +100,26 @@ namespace Aucma.Core.ProductOffLine.Business
StringBuilder sb = new StringBuilder();
string str = Encoding.ASCII.GetString(receiveBytes).Replace("\r\n", "");
string ip = DirectionToIP();
if (!string.IsNullOrEmpty(ip))
if(str.Length == 20)
{
RefreshMaterialCodeStrEvent?.Invoke(str,ip);
int direction = -1;
appConfig.GunDirection = direction.ToString();
ProductCode = str;
}else if(str.Length == 13)
{
Code69 = str;
}
// 业务处理
if(!string.IsNullOrEmpty(ProductCode) && !string.IsNullOrEmpty(Code69))
{
string ip = DirectionToIP();
if (!string.IsNullOrEmpty(ip))
{
RefreshMaterialCodeStrEvent?.Invoke(ProductCode,Code69, ip);
int direction = -1;
appConfig.GunDirection = direction.ToString();
}
// 清空
ProductCode = string.Empty;
Code69 = string.Empty;
}
sb.Clear();
}

@ -43,7 +43,7 @@ namespace Aucma.Core.ProductOffLine.Business
/// </summary>
/// <param name="materialCodeStr"></param>
/// <param name="ip"></param>
public delegate void RefreshMaterialCodeStr(string materialCodeStr, string ip);
public delegate void RefreshMaterialCodeStr(string ProductCode,string Code69, string ip);
public static event RefreshMaterialCodeStr RefreshMaterialCodeStrEvent;
/// <summary>
@ -65,58 +65,52 @@ namespace Aucma.Core.ProductOffLine.Business
public static void ShellImageCallbackFunc(IntPtr pData, IntPtr pstFrameInfoEx2, IntPtr pUser)
{
string Code69 = string.Empty;
string ProductCode = string.Empty;
var stFrameInfo = (MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2)Marshal.PtrToStructure(pstFrameInfoEx2, typeof(MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2));
MvCodeReader.MV_CODEREADER_RESULT_BCR_EX2 stBcrResult = (MvCodeReader.MV_CODEREADER_RESULT_BCR_EX2)Marshal.PtrToStructure(stFrameInfo.UnparsedBcrList.pstCodeListEx2, typeof(MvCodeReader.MV_CODEREADER_RESULT_BCR_EX2));
// Console.WriteLine("CodeNum[" + Convert.ToString(stBcrResult.nCodeNum) + "]");
if (stBcrResult.nCodeNum == 0)
//更新扫码器存活时间
ShellLiveTime = DateTime.Now;
if (stBcrResult.nCodeNum <2)
{
Console.WriteLine(DateTime.Now + ":外侧--->No Read 处理");
log.Info(DateTime.Now + ":外侧--->No Read 处理");
//更新扫码器存活时间
ShellLiveTime = DateTime.Now;
}
for (Int32 i = 0; i < stBcrResult.nCodeNum; i++)
else
{
bool bIsValidUTF8 = IsTextUTF8(stBcrResult.stBcrInfoEx2[i].chCode);
if (bIsValidUTF8)
{
string strCode = Encoding.UTF8.GetString(stBcrResult.stBcrInfoEx2[i].chCode);
Console.WriteLine(DateTime.Now + ":Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
}
else
for (Int32 i = 0; i < stBcrResult.nCodeNum; i++)
{
string strCode = Encoding.GetEncoding("GB2312").GetString(stBcrResult.stBcrInfoEx2[i].chCode);
Console.WriteLine(DateTime.Now + ":外侧扫码器==>Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
log.Info(DateTime.Now + ":外侧扫码器==>Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
// RefreshMaterialCodeStrEvent?.Invoke(strCode.Trim().TrimEnd('\0'), ShellScannerIp);
if (strCode.Trim().TrimEnd('\0').Length == 20)
{
//更新扫码器存活时间
ShellLiveTime = DateTime.Now;
RefreshMaterialCodeStrEvent?.Invoke(strCode.Trim().TrimEnd('\0'), ShellScannerIp);
// 业务处理
}
else
bool bIsValidUTF8 = IsTextUTF8(stBcrResult.stBcrInfoEx2[i].chCode);
if (!bIsValidUTF8)
{
// 更新存活时间
LinerLiveTime = DateTime.Now;
Console.WriteLine(DateTime.Now + ":外侧扫码器==>条码:" + strCode.Trim().TrimEnd('\0') + "长度不为20当做No Read 处理");
log.Info(DateTime.Now + ":外侧扫码器==>条码:" + strCode.Trim().TrimEnd('\0') + "长度不为20当做No Read 处理");
}
string strCode = Encoding.GetEncoding("GB2312").GetString(stBcrResult.stBcrInfoEx2[i].chCode);
Console.WriteLine(DateTime.Now + ":外侧扫码器==>Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
log.Info(DateTime.Now + ":外侧扫码器==>Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
if (strCode.Trim().TrimEnd('\0').Length == 20)
{
ProductCode = strCode;
// RefreshMaterialCodeStrEvent?.Invoke(strCode.Trim().TrimEnd('\0'), ShellScannerIp);
// 业务处理
}
if (strCode.Trim().TrimEnd('\0').Length == 13)
{
Code69 = strCode;
// RefreshMaterialCodeStrEvent?.Invoke(strCode.Trim().TrimEnd('\0'), ShellScannerIp);
// 业务处理
}
}
}
Console.WriteLine("69:" + Code69);
Console.WriteLine("成品:" + ProductCode);
RefreshMaterialCodeStrEvent?.Invoke(ProductCode,Code69, ShellScannerIp);
}
MvCodeReader.MV_CODEREADER_OCR_INFO_LIST stOcrInfo = (MvCodeReader.MV_CODEREADER_OCR_INFO_LIST)Marshal.PtrToStructure(stFrameInfo.UnparsedOcrList.pstOcrList, typeof(MvCodeReader.MV_CODEREADER_OCR_INFO_LIST));
for (int i = 0; i < stOcrInfo.nOCRAllNum; i++)
{
string strOcrCharCode = Encoding.UTF8.GetString(stOcrInfo.stOcrRowInfo[i].chOcr);
// Console.WriteLine("Get OcrInfo:" + "ocrNum[" + i.ToString() + "], ocrLen[" + Convert.ToString(stOcrInfo.stOcrRowInfo[i].nOcrLen) + "], ocrChar[" + strOcrCharCode.Trim().TrimEnd('\0') + "]");
}
}
@ -125,55 +119,46 @@ namespace Aucma.Core.ProductOffLine.Business
var stFrameInfo = (MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2)Marshal.PtrToStructure(pstFrameInfoEx2, typeof(MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2));
MvCodeReader.MV_CODEREADER_RESULT_BCR_EX2 stBcrResult = (MvCodeReader.MV_CODEREADER_RESULT_BCR_EX2)Marshal.PtrToStructure(stFrameInfo.UnparsedBcrList.pstCodeListEx2, typeof(MvCodeReader.MV_CODEREADER_RESULT_BCR_EX2));
string Code69 = string.Empty;
string ProductCode = string.Empty;
//更新扫码器存活时间
LinerLiveTime = DateTime.Now;
// Console.WriteLine("CodeNum[" + Convert.ToString(stBcrResult.nCodeNum) + "]");
if (stBcrResult.nCodeNum == 0)
if (stBcrResult.nCodeNum < 2)
{
Console.WriteLine(DateTime.Now+":内侧--->No Read 处理");
Console.WriteLine(DateTime.Now + ":内侧--->No Read 处理");
log.Info(DateTime.Now + ":内侧--->No Read 处理");
// 更新存活时间
LinerLiveTime = DateTime.Now;
}
for (Int32 i = 0; i < stBcrResult.nCodeNum; i++)
else
{
bool bIsValidUTF8 = IsTextUTF8(stBcrResult.stBcrInfoEx2[i].chCode);
if (bIsValidUTF8)
{
string strCode = Encoding.UTF8.GetString(stBcrResult.stBcrInfoEx2[i].chCode);
Console.WriteLine(DateTime.Now + ":Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
}
else
for (Int32 i = 0; i < stBcrResult.nCodeNum; i++)
{
string strCode = Encoding.GetEncoding("GB2312").GetString(stBcrResult.stBcrInfoEx2[i].chCode);
Console.WriteLine(DateTime.Now + ":内侧扫码器==>Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
log.Info(DateTime.Now + ":内侧扫码器==>Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
// RefreshMaterialCodeStrEvent?.Invoke(strCode.Trim().TrimEnd('\0'), LinerScannerIp);
if (strCode.Trim().TrimEnd('\0').Length == 20)
{
// 更新存活时间
LinerLiveTime = DateTime.Now;
// 业务处理
RefreshMaterialCodeStrEvent?.Invoke(strCode.Trim().TrimEnd('\0'), LinerScannerIp);
}
else
bool bIsValidUTF8 = IsTextUTF8(stBcrResult.stBcrInfoEx2[i].chCode);
if (!bIsValidUTF8)
{
// 更新存活时间
LinerLiveTime = DateTime.Now;
Console.WriteLine(DateTime.Now + "内侧扫码器==>条码:" + strCode.Trim().TrimEnd('\0') + "长度不为20当做No Read 处理");
log.Info(DateTime.Now + "内侧扫码器==>条码:" + strCode.Trim().TrimEnd('\0') + "长度不为20当做No Read 处理");
string strCode = Encoding.GetEncoding("GB2312").GetString(stBcrResult.stBcrInfoEx2[i].chCode);
Console.WriteLine(DateTime.Now + ":内侧扫码器==>Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
log.Info(DateTime.Now + ":内侧扫码器==>Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
// RefreshMaterialCodeStrEvent?.Invoke(strCode.Trim().TrimEnd('\0'), LinerScannerIp);
if (strCode.Trim().TrimEnd('\0').Length == 20)
{
ProductCode = strCode;
}
if (strCode.Trim().TrimEnd('\0').Length == 13)
{
Code69 = strCode;
}
}
}
Console.WriteLine("69:" + Code69);
Console.WriteLine("成品:" + ProductCode);
RefreshMaterialCodeStrEvent?.Invoke(ProductCode,Code69, LinerScannerIp);
}
MvCodeReader.MV_CODEREADER_OCR_INFO_LIST stOcrInfo = (MvCodeReader.MV_CODEREADER_OCR_INFO_LIST)Marshal.PtrToStructure(stFrameInfo.UnparsedOcrList.pstOcrList, typeof(MvCodeReader.MV_CODEREADER_OCR_INFO_LIST));
Console.WriteLine("ocrAllNum[" + Convert.ToString(stOcrInfo.nOCRAllNum) + "]");
for (int i = 0; i < stOcrInfo.nOCRAllNum; i++)
{
string strOcrCharCode = Encoding.UTF8.GetString(stOcrInfo.stOcrRowInfo[i].chOcr);
Console.WriteLine("Get OcrInfo:" + "ocrNum[" + i.ToString() + "], ocrLen[" + Convert.ToString(stOcrInfo.stOcrRowInfo[i].nOcrLen) + "], ocrChar[" + strOcrCharCode.Trim().TrimEnd('\0') + "]");
}
}

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save