Browse Source

添加堆垛机扫码校验

master
志铭 吕 2 months ago
parent
commit
f05c6984fe
  1. 2
      ControlMonitorClient/FrmUpdateStatus.cs
  2. 2
      OPCClient/CCommonOPCClient.cs
  3. 4
      OPCClient/CSendDeviceOrder.cs
  4. 17
      WcfControlMonitorLib/CCallService.cs
  5. 27
      WcfControlMonitorLib/CControl.cs
  6. 48
      WcfControlMonitorLib/CGetState.cs
  7. 7706
      WcfControlMonitorLib/SControlMonitor(1).cs
  8. 45
      WcfControlMonitorLib/SControlMonitor.cs

2
ControlMonitorClient/FrmUpdateStatus.cs

@ -42,7 +42,7 @@ namespace wcfControlMonitorClient
private void TSMrefresh_Click()
{
this.interfaceGridView.DataSource = dbo.ExceSQL("select CONTROL_APPLY_ID,CONTROL_ID,CONTROL_APPLY_TYPE,STOCK_BARCODE,APPLY_TASK_STATUS,CREATE_TIME,CONTROL_APPLY_PARAMETER,CONTROL_APPLY_REMARK from IO_CONTROL_APPLY where " + _manstatus).Tables[0].DefaultView;
this.interfaceGridView.DataSource = dbo.ExceSQL("select CONTROL_APPLY_ID,CONTROL_ID,CONTROL_APPLY_TYPE,STOCK_BARCODE,APPLY_TASK_STATUS,CREATE_TIME,CONTROL_APPLY_PARAMETER,CONTROL_APPLY_REMARK from IO_CONTROL_APPLY_HIS order by CREATE_TIME desc).Tables[0].DefaultView;");
this.interfaceGridView.Columns["CONTROL_APPLY_ID"].HeaderText = "ID号";
this.interfaceGridView.Columns["CONTROL_ID"].HeaderText = "WMS任务号";
this.interfaceGridView.Columns["CONTROL_APPLY_TYPE"].HeaderText = "处理类型";

2
OPCClient/CCommonOPCClient.cs

@ -144,7 +144,7 @@ namespace OPCClient
/// <summary>
/// 建立PLC连接的ID,例如:"S7:[S7 connection_1]"
/// 或者"S7:[@LOCALSERVER]"
/// </summary>
/// </summary>
public static string PlcConnectionID
{
get { return CCommonOPCClient._PLCconnectionID; }

4
OPCClient/CSendDeviceOrder.cs

@ -683,8 +683,10 @@ namespace OPCClient
itemvalues[8].Append(Order.ToString());
itemnames[9].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",i");
itemvalues[9].Append(MessageIndex.ToString());
//#region 堆垛机上条码 lzm20250407
//itemnames[10].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 20)).Append(",i");
//itemvalues[10].Append(MessageIndex.ToString());
//itemvalues[10].Append(barcode.ToString());
//#endregion
#region
//CCommonOPCClient.Hostname = CommonClassLib.AppSettings.GetValue("HostName");//20090922 devinfo.RemoteIP;
//CCommonOPCClient.ProgID = CommonClassLib.AppSettings.GetValue("OPCProgID");

17
WcfControlMonitorLib/CCallService.cs

@ -20,6 +20,7 @@ using System.IO;
using System.Xml.Serialization;
using Newtonsoft.Json;
using System.Threading.Tasks;
using System.Timers;
namespace WcfControlMonitorLib
@ -1146,6 +1147,9 @@ namespace WcfControlMonitorLib
}
catch (Exception ex)
{
resp_data.code = 1;
resp_data.msg=ex.Message;
result.sResult = false;
result.message = ex.Message;
return result;
@ -1471,6 +1475,8 @@ namespace WcfControlMonitorLib
{
StringBuilder sql =new StringBuilder();
StringBuilder sql2 = new StringBuilder();
StringBuilder sql3 = new StringBuilder();
StringBuilder sql4 = new StringBuilder();
DataView dv = new DataView(); DataView dvl = new DataView();
string dtime = DateTime.Now.ToString("u");
dtime = dtime.Substring(0, dtime.Length - 1);
@ -1491,14 +1497,20 @@ namespace WcfControlMonitorLib
}
else
{
{
//暂定通讯失败和接口返回失败都直接回退
sql2.Clear();
sql2.Append("select F_EndDevice from T_Base_Route WHERE F_StartDevice =").Append(dataInRequest[i]["DEVICE_CODE"]).Append(" and F_RouteKind=4");//查询回退任务的终点位置
DataView dataBackTask = dbo.ExceSQL(sql2.ToString()).Tables[0].DefaultView;
IO_CONTROL iO_CONTROL = new IO_CONTROL(dataInRequest[i]["DEVICE_CODE"].ToString(), dataBackTask[0]["F_EndDevice"].ToString(), dataInRequest[i]["STOCK_BARCODE"].ToString());
iO_CONTROL.Insert_IOCONTROL();//暂不考虑插入失败的情况 写入IO入库任务
// sql3.Clear();
#region 添加LCS返回异常日志显示在客户端
string sql5 = string.Format("insert into IO_CONTROL_APPLY_HIS(CONTROL_APPLY_ID,CONTROL_ID,CONTROL_APPLY_TYPE,WAREHOUSE_CODE,DEVICE_CODE,STOCK_BARCODE,APPLY_TASK_STATUS,CREATE_TIME,CONTROL_APPLY_PARAMETER,CONTROL_APPLY_PARA01,CONTROL_APPLY_PARA02,CONTROL_APPLY_REMARK) values ({0},{1},'{2}','{3}','{4}','{5}',{6},'{7}','{8}','{9}','{10}','{11}')",
dataInRequest[i]["CONTROL_APPLY_ID"], dataInRequest[i]["CONTROL_ID"], dataInRequest[i]["CONTROL_APPLY_TYPE"], dataInRequest[i]["WAREHOUSE_CODE"], dataInRequest[i]["DEVICE_CODE"],
dataInRequest[i]["STOCK_BARCODE"], dataInRequest[i]["APPLY_TASK_STATUS"], dataInRequest[i]["CREATE_TIME"], resp_data.msg.Substring(0, 200), dataInRequest[i]["CONTROL_APPLY_PARA01"], dataInRequest[i]["CONTROL_APPLY_PARA02"], dataInRequest[i]["CONTROL_APPLY_REMARK"],"");
dbo.ExceSQL(sql5.ToString());
#endregion
CommonClassLib.CCarryConvert.WriteDarkCasket("CallService", "inboundApply", "开始调用wms服务失败:", $"返回报错{resp_data.data}:{resp_data.msg}");
}
//删除IOControlApply的扫码请求
@ -1510,6 +1522,7 @@ namespace WcfControlMonitorLib
}
catch (Exception ex)
{
_CCallServiceError = ex.StackTrace + ex.Message;
CommonClassLib.CCarryConvert.WriteDarkCasket("CallService", "inboundApply", "调用WMS接口失败", "19999", $"{ex.Message}");
}

27
WcfControlMonitorLib/CControl.cs

@ -1,4 +1,4 @@
using System.Runtime.InteropServices;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.Text;
@ -2098,7 +2098,7 @@ namespace WcfControlMonitorLib
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
}
}
if (CONTROLTASKTYPE == 2 &&StartDevice == 13008 && EndDevice != 12051)
else if (CONTROLTASKTYPE == 2 &&StartDevice == 13008 && EndDevice != 12051)
{
// 增加一个设备号 12000,电气上报状态到state字节 0,1
Model.MDevice devOutMode = Model.CGetInfo.GetDeviceInfo(15001);
@ -2108,6 +2108,29 @@ namespace WcfControlMonitorLib
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
}
}
if (CONTROLTASKTYPE == 2 && EndDevice == 120004 && StartDevice != 14004)//回退任务不检测
{
// 增加一个设备号 12000,电气上报状态到state字节 0,1
Model.MDevice devOutMode = Model.CGetInfo.GetDeviceInfo(15002);
if (devOutMode.RunState == 1) // 入库模式 1(运行):入库 2 出库(完成)
{
AheadDetectUnallow.Append("12004入库模式!");
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
}
}
else if (CONTROLTASKTYPE == 2 && StartDevice == 14004 && EndDevice != 12004)
{
// 增加一个设备号 12000,电气上报状态到state字节 0,1
Model.MDevice devOutMode = Model.CGetInfo.GetDeviceInfo(15002);
if (devOutMode.RunState == 2) // 入库模式 1(运行):入库 2 出库(完成)
{
AheadDetectUnallow.Append("12004出库模式!");
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
}
}
#endregion
#region lzm20250225 注释其他项目
//20101011

48
WcfControlMonitorLib/CGetState.cs

@ -794,53 +794,7 @@ namespace WcfControlMonitorLib
}
#region 民航二所 调用wms接口 上报状态——任务完成/删除(共3处)(如果存在该任务其他状态,则删掉)
//if (ControlType != 5 && ControlType != 6)
//{
// int status = 0;
// if (ClearZero == Model.CGeneralFunction.TASKDELETE)
// {
// status = 900;
// }
// else
// {
// if (errrcode == 970)//送货重后出库完成
// {
// status = 970;
// }
// else
// {
// status = 999;
// }
// }
// string dTime1 = DateTime.Now.ToString("u");
// dtime = dTime1.Substring(0, dTime1.Length - 1);
// object[] ob = new object[8] { fid, status, 0, barcode, status, dtime, "", 1.ToString() };
// try
// {
// sql.Clear();
// sql.Append("select * from io_control_apply where CONTROL_ID = ").Append(fid);
// if (dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count > 0)
// {
// sql.Clear();
// sql.Append(" delete from io_control_apply where CONTROL_ID = ").Append(fid);
// dbo.ExceSQL(sql.ToString());
// }
// dboM.ExecuteSql(string.Format("INSERT INTO IO_CONTROL_APPLY(CONTROL_ID,CONTROL_APPLY_TYPE,DEVICE_CODE, STOCK_BARCODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_REMARK,WAREHOUSE_CODE)VALUES ({0},'{1}','{2}','{3}','{4}','{5}','{6}','{7}')", ob));
// CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "向管理上报任务状态:", fid.ToString(), ",状态:" + status.ToString() + ",条码:" + barcode.ToString().ToUpper() + ",申请类型:" + status.ToString());
// }
// catch (Exception ex)
// {
// RefreshMonitorEventArgs rmea = new RefreshMonitorEventArgs("tsStatus", "向管理上报任务状态:" + ex.StackTrace + ex.Message);
// OnRefreshMonitor(rmea);
// CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "向管理上报任务状态:出错", fid.ToString(), ",状态:" + status.ToString() + ",条码:" + barcode.ToString().ToUpper() + ",申请类型:" + status.ToString());
// }
//}
#endregion
}
else if (mti == 4)

7706
WcfControlMonitorLib/SControlMonitor(1).cs

File diff suppressed because it is too large

45
WcfControlMonitorLib/SControlMonitor.cs

@ -6609,6 +6609,49 @@ namespace WcfControlMonitorLib
#endregion
break;
case "40":
//lishuo 湖西6垛机条码比对 此处记录条码,命令发送时进行条码报完成
if ((barcode.ToString() == incompleteBarcode.ToString()) || (string.IsNullOrEmpty(barcode.ToString().Replace("\0", ""))))
{
barcode.Clear();
barcode.Append(incompleteBarcode.ToString());
}
//获取堆垛机设备信息
var device= Model.CGetInfo.GetDeviceInfo(dcode);
dvbc = dboMan.ExceSQL(string.Format("SELECT 条码 FROM V_Monitor_Task WHERE 设备指令索引={0})", device.TaskNo)).Tables[0].DefaultView;//从视图表获取任务条码
if (dvbc.Count > 0)
{
if (dvbc[0]["条码"].ToString() == barcode.ToString())//条码和扫码结果一致正常回复
{
witemnames[0].Append(Model.CGeneralFunction.DBGet).Append(".").Append(Convert.ToString(devinfo.Dbw2Address + 0)).Append(",b");//20130510
wv[0].Clear();
wv[0].Append("2");
sdo = CommModeCreate.CreateSendDeviceOrder(devidx);
sdo.WriteDBData(witemnames, wv, devinfo.S7Connection);
}
else
{//条码和扫码结果不一致,暂定回复99
witemnames[0].Append(Model.CGeneralFunction.DBGet).Append(".").Append(Convert.ToString(devinfo.Dbw2Address + 0)).Append(",b");//20130510
wv[0].Clear();
wv[0].Append("99");
sdo = CommModeCreate.CreateSendDeviceOrder(devidx);
sdo.WriteDBData(witemnames, wv, devinfo.S7Connection);
}
}
else//无对应任务 暂定正常回复
{
witemnames[0].Append(Model.CGeneralFunction.DBGet).Append(".").Append(Convert.ToString(devinfo.Dbw2Address + 0)).Append(",b");//20130510
wv[0].Clear();
wv[0].Append("2");
sdo = CommModeCreate.CreateSendDeviceOrder(devidx);
sdo.WriteDBData(witemnames, wv, devinfo.S7Connection);
}
b
// CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "写条码应答", devidx.ToString(), "写标志2**源条码:" + barcode.ToString().ToUpper());
break;
default:
//无类型,条码比对或者记录条码
@ -8101,6 +8144,8 @@ namespace WcfControlMonitorLib
}
break;
case 50:
devinfo.SplitByte_0 = (devicestates[tempdb2addr + 0] & 1) == 1 ? 1 : 0;
Model.CGetInfo.SetDeviceMessage(devinfo);

Loading…
Cancel
Save