|
|
|
@ -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') + "]");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|