Commit 635719e6 几米阳光

扫码修改

1 个父辈 4b7db646
......@@ -198,23 +198,22 @@ namespace OnlineStore.DeviceLibrary
byte dataLength = rdata[lengthIndex];
int allLength = lengthIndex + 1 + dataLength;
if (rdata.Length > allLength)
{
//LogUtil.info(clientipe.ToString() + "收到数据(需要分包):" + str);
int currStartIndex = 0;
for (int i = 0; i < 100; i++)
if (rdata.Length > allLength)
{
try
{
//LogUtil.info(clientipe.ToString() + "收到数据(需要分包):" + str);
for (int i = 0; i < 100; i++)
{
if (rdata.Length < currStartIndex + lengthIndex)
{
LogUtil.error(clientipe.ToString() + "收到数据:" + str + "分包出错 [" + currStartIndex + "]");
}
dataLength = rdata[currStartIndex + lengthIndex];
allLength = lengthIndex + 1 + dataLength ;
allLength = lengthIndex + 1 + dataLength;
byte[] thisData = new byte[allLength];
Array.Copy(rdata, currStartIndex, thisData, 0, allLength);
......@@ -229,19 +228,18 @@ namespace OnlineStore.DeviceLibrary
}
currStartIndex = currStartIndex + allLength;
}
}
catch (Exception ex)
{
LogUtil.error(clientipe.ToString() + "收到数据:" + str + "分包出错 [" + currStartIndex + "]:" + ex.ToString());
}
}
}
else
{
LogUtil.debug(LOGGER, clientipe.ToString() + "收到数据(无需分包):" + str);
ushort id = BitConverter.ToUInt16(rdata, 0);
byte function = rdata[7];
DataProcess(clientipe.ToString(),id,function,rdata);
DataProcess(clientipe.ToString(), id, function, rdata);
}
}
}
......@@ -249,7 +247,10 @@ namespace OnlineStore.DeviceLibrary
private void DataProcess(string clientIp, ushort id, byte function, byte[] rdata)
{
byte[] data;
if (rdata.Length <= 9)
{
return;
}
if ((function >= fctWriteSingleCoil) && (function != fctReadWriteMultipleRegister))
{
data = new byte[2];
......
......@@ -1083,9 +1083,9 @@ namespace OnlineStore.DeviceLibrary
if (StoreMove.MoveType.Equals(StoreMoveType.None) && alarmType.Equals(StoreAlarmType.None))
{
IO_VALUE checkIO = KNDIOValue(IO_Type.TrayCheck_Door);
int height = GetHeight();
//判断料门口是否有料
if ((checkIO.Equals(IO_VALUE.HIGH)) && GetHeight() > 0 && KNDIOValue(IO_Type.TrayCheck_Fixture).Equals(IO_VALUE.LOW))
if ((checkIO.Equals(IO_VALUE.HIGH)) && height > 0 && KNDIOValue(IO_Type.TrayCheck_Fixture).Equals(IO_VALUE.LOW))
{
if (IsScanCode)
{
......@@ -1100,7 +1100,7 @@ namespace OnlineStore.DeviceLibrary
isWaitScan = false;
IsScanCode = true;
LogUtil.info(StoreName + "检测到寸料盘,开始扫码");
LogUtil.info(StoreName + "检测到"+ height + "寸料盘,开始扫码");
GetCameraCode();
}
}
......@@ -1459,7 +1459,7 @@ namespace OnlineStore.DeviceLibrary
#region Halcon扫码枪代码
public bool IsTestCamera = false;
private System.Timers.Timer scanTimer = null;
//private System.Timers.Timer scanTimer = null;
public void GetCameraCode()
{
if (IsTestCamera && IsInScan())
......@@ -1467,15 +1467,16 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info("上次扫码还未执行完毕,请稍后!");
return;
}
if (scanTimer == null)
{
scanTimer = new System.Timers.Timer();
scanTimer.Interval = 10;
scanTimer.AutoReset = false;
scanTimer.Enabled = false;
scanTimer.Elapsed += scanTimer_Elapsed;
}
scanTimer.Enabled = true;
//if (scanTimer == null)
//{
// scanTimer = new System.Timers.Timer();
// scanTimer.Interval = 10;
// scanTimer.AutoReset = false;
// scanTimer.Enabled = false;
// scanTimer.Elapsed += scanTimer_Elapsed;
//}
//scanTimer.Enabled = true;
Task.Factory.StartNew(delegate { scanTimer_Elapsed(null, null); });
}
private string spiltStr = "##";
......@@ -1484,7 +1485,7 @@ namespace OnlineStore.DeviceLibrary
int height = GetHeight();
DateTime date = DateTime.Now;
scanTimer.Enabled = false;
//scanTimer.Enabled = false;
KNDIOMove(IO_Type.CameraLight_Power, IO_VALUE.HIGH);
string outMsg = "";
string message = "";
......
......@@ -49,7 +49,7 @@ namespace OnlineStore.DeviceLibrary
string[] names = CodeLibrary.HIKCamera.Instance.CameraName;
hikNameList.AddRange(names);
foreach(string str in names)
foreach (string str in names)
{
LogUtil.info("加载到HIK相机:" + str.Trim());
}
......@@ -68,32 +68,69 @@ namespace OnlineStore.DeviceLibrary
}
}
public static void CloseCamera()
{
BaslerCamera.Instance.Close();
HIKCamera.Instance.Close();
}
public static Bitmap GetCamerImage(string cameraName)
{
Bitmap bitm = null;
try
{
if (balserNameList.Contains(cameraName))
{
BaslerCamera.Instance.Open(cameraName);
bool result = BaslerCamera.Instance.IsOpen;
if (!result)
{
result = BaslerCamera.Instance.Open(cameraName);
LogUtil.info("打开相机:" + cameraName + "(" + result + ")");
}
if (result)
{
BaslerCamera.Instance.GrabOne();
bitm = BaslerCamera.Instance.Image;
BaslerCamera.Instance.Close();
//BaslerCamera.Instance.Close();
}
else
{
LogUtil.error("相机【" + cameraName + "】打开失败:" + BaslerCamera.Instance.ErrInfo);
}
}
else if(hikNameList.Contains(cameraName))
else if (hikNameList.Contains(cameraName))
{
bool result = HIKCamera.Instance.IsOpen;
if (!result)
{
result = HIKCamera.Instance.Open(cameraName);
LogUtil.info("打开相机:" + cameraName + "(" + result + ")");
}
if (result)
{
HIKCamera.Instance.Open(cameraName);
HIKCamera.Instance.GrabOne();
bitm = HIKCamera.Instance.Image;
HIKCamera.Instance.Close();
//HIKCamera.Instance.Close();
}
else
{
LogUtil.error("相机【" + cameraName + "】打开失败:" + HIKCamera.Instance.ErrInfo);
}
}
else
{
LogUtil.info("未找到摄像机【"+cameraName+"】无法获取图片");
LogUtil.info("未找到相机【" + cameraName + "】无法获取图片");
}
}
catch (Exception ex)
{
LogUtil.error("从相机【" + cameraName + "】获取图片出错:" + ex.ToString());
}
return bitm;
}
[HandleProcessCorruptedStateExceptions]
public static List<string> CameraScan( )
public static List<string> CameraScan()
{
List<string> codeList = new List<string>();
List<CodeInfo> allCodeList = new List<CodeInfo>();
......@@ -102,14 +139,19 @@ namespace OnlineStore.DeviceLibrary
{
foreach (string cameraName in cameraNameList)
{
Bitmap bitmap = GetCamerImage(cameraName);
using (Bitmap bitmap = GetCamerImage(cameraName))
{
if (bitmap == null)
{
LogUtil.info(" 摄像机【" + cameraName + "】获取图片失败");
LogUtil.error(" 摄像机【" + cameraName + "】获取图片失败,关闭相机");
CloseCamera();
continue;
}
else
{
LogUtil.debug(" 摄像机【" + cameraName + "】获取图片完成");
System.Threading.Thread.Sleep(1);
HObject ho_Image = HDCodeHelper.Bitmap2HObjectBpp24(bitmap);
LogUtil.debug(" 摄像机【" + cameraName + "】转换图片完成,开始扫码");
List<CodeInfo> cc = new List<CodeInfo>();
foreach (string codeType in codeTypeList)
{
......@@ -122,10 +164,10 @@ namespace OnlineStore.DeviceLibrary
{
cc = HDCodeHelper.DecodeCode(ho_Image, 1, GetCodeParamFilePath(codeType), codeType);
}
//LogUtil.info(" 摄像机【" + cameraName + "】【"+ codeType + "】扫码完成");
}
allCodeList.AddRange(cc);
}
bitmap.Dispose();
}
}
catch (AccessViolationException e)
......@@ -137,7 +179,7 @@ namespace OnlineStore.DeviceLibrary
{
LogUtil.error("扫码出错:" + ex.ToString());
}
foreach(CodeInfo info in allCodeList)
foreach (CodeInfo info in allCodeList)
{
codeList.Add(info.CodeStr);
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!