123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792 |
- using MainForm.ClassFile.XiaomiAPI;
- using Sunny.UI.Win32;
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Diagnostics;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using static MainForm.ClassFile.XiaomiAPI.XiaomiMqttClient_Extend;
- namespace MainForm.FaForm
- {
- public partial class Form_MESTest : Form
- {
- #region 变量
- public event AlarmMessageHandler MessageEvent;
- #endregion 变量
- #region 窗体事件
- public Form_MESTest()
- {
- InitializeComponent();
- }
- private void Form_MESTest_Load(object sender, EventArgs e)
- {
- cmbSNType.SelectedIndex = 0;
- cmbProResult.SelectedIndex = 0;
- }
- #endregion 窗体事件
- #region 进站相关
- /// <summary>
- /// 进站
- /// </summary>
- private async void btnStationIn_Click(object sender, EventArgs e)
- {
- try
- {
- string sn = txtSN.Text.Trim();
- if (string.IsNullOrEmpty(sn))
- {
- MessageBox.Show("SN号不可为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
- return;
- }
- string snType = cmbSNType.Text.Trim();
- switch (snType)
- {
- case "产品SN":
- (int, string) result = StationInFunc_ProductSN(sn);
- ShowLog(result.Item2);
- break;
- case "载具SN":
- case "弹夹SN":
- MessageBox.Show("暂不支持的进站方式");
- break;
- default:
- break;
- }
- }
- catch (Exception ex)
- {
- string str = ex.StackTrace;
- MessageBox.Show("进站异常!异常位置:" + str.Substring(str.LastIndexOf("\\") + 1, str.Length - str.LastIndexOf("\\") - 1) + ";异常信息:" + ex.Message.ToString());
- }
- }
- /// <summary>
- /// 进站 - 产品SN
- /// </summary>
- /// <param name="sn">产品SN</param>
- /// <returns></returns>
- private (int, string) StationInFunc_ProductSN(string sn)
- {
- string stationStr = cmbStationName.Text.Trim();
- #region 校验
- string vehicleCode = txtVehicleCode.Text.Trim(); // 载具码
- string vehicleCodeNum = txtVehicleCodeNum.Text.Trim(); // 载具穴号
- string bulletclipCode = txtBulletclipCode.Text.Trim(); // 弹夹码
- string bulletclipCodeNum = txtBulletclipCodeNum.Text.Trim(); // 弹夹穴号
- List<TestItem> item = new List<TestItem>();
- item.Add(new TestItem()
- {
- Parameter_name = "产品结果",
- Parameter_value = cmbProResult.Text.Trim(),
- });
- if (string.IsNullOrEmpty(vehicleCode))
- item.Add(new TestItem()
- {
- Parameter_name = "载具码",
- Parameter_value = vehicleCode,
- });
- if (string.IsNullOrEmpty(vehicleCodeNum))
- item.Add(new TestItem()
- {
- Parameter_name = "载具穴号",
- Parameter_value = vehicleCodeNum,
- });
- if (string.IsNullOrEmpty(bulletclipCode))
- item.Add(new TestItem()
- {
- Parameter_name = "弹夹码",
- Parameter_value = bulletclipCode,
- });
- if (string.IsNullOrEmpty(bulletclipCodeNum))
- item.Add(new TestItem()
- {
- Parameter_name = "弹夹穴号",
- Parameter_value = bulletclipCodeNum,
- });
- #endregion 校验
- int mesResult = Form_Main.formHome.SaveStationInData(stationStr, GlobalContext.WorkOrderCode, GlobalContext.Mtltmrk, sn, item, out string errorMsg);
- switch (mesResult)
- {
- case 1:
- return (1, "[1]成功;" + errorMsg);
- case 5:
- return (5, "[5]MES报警;" + errorMsg);
- case 6:
- return (6, "[6]上位机报警;" + errorMsg);
- default:
- return (999, "[999]未知结果;" + errorMsg);
- }
- }
- #endregion 进站相关
- #region 出站相关
- /// <summary>
- /// 出站
- /// </summary>
- private async void btnStationOut_Click(object sender, EventArgs e)
- {
- try
- {
- string sn = txtSN.Text.Trim();
- if (string.IsNullOrEmpty(sn))
- {
- MessageBox.Show("SN号不可为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
- return;
- }
- string snType = cmbSNType.Text.Trim();
- switch (snType)
- {
- case "产品SN":
- (int, string) result = StationOutFunc_ProductSN(sn);
- ShowLog(result.Item2);
- break;
- case "载具SN":
- case "弹夹SN":
- MessageBox.Show("暂不支持的出站方式");
- break;
- default:
- break;
- }
- }
- catch (Exception ex)
- {
- string str = ex.StackTrace;
- MessageBox.Show("进站异常!异常位置:" + str.Substring(str.LastIndexOf("\\") + 1, str.Length - str.LastIndexOf("\\") - 1) + ";异常信息:" + ex.Message.ToString());
- }
- }
- /// <summary>
- /// 出站 - 产品SN
- /// </summary>
- /// <param name="sn">产品SN</param>
- /// <returns></returns>
- private (int, string) StationOutFunc_ProductSN(string sn)
- {
- string stationStr = cmbStationName.Text.Trim();
- #region 校验
- string vehicleCode = txtVehicleCode.Text.Trim(); // 载具码
- string vehicleCodeNum = txtVehicleCodeNum.Text.Trim(); // 载具穴号
- string bulletclipCode = txtBulletclipCode.Text.Trim(); // 弹夹码
- string bulletclipCodeNum = txtBulletclipCodeNum.Text.Trim(); // 弹夹穴号
- List<TestItem> item = new List<TestItem>();
- item.Add(new TestItem()
- {
- Parameter_name = "产品结果",
- Parameter_value = cmbProResult.Text.Trim(),
- });
- if (string.IsNullOrEmpty(vehicleCode))
- item.Add(new TestItem()
- {
- Parameter_name = "载具码",
- Parameter_value = vehicleCode,
- });
- if (string.IsNullOrEmpty(vehicleCodeNum))
- item.Add(new TestItem()
- {
- Parameter_name = "载具穴号",
- Parameter_value = vehicleCodeNum,
- });
- if (string.IsNullOrEmpty(bulletclipCode))
- item.Add(new TestItem()
- {
- Parameter_name = "弹夹码",
- Parameter_value = bulletclipCode,
- });
- if (string.IsNullOrEmpty(bulletclipCodeNum))
- item.Add(new TestItem()
- {
- Parameter_name = "弹夹穴号",
- Parameter_value = bulletclipCodeNum,
- });
- #endregion 校验
- string workorder_code = GlobalContext.WorkOrderCode; // 工单号
- string mtltmrk = GlobalContext.Mtltmrk; // 型号
- bool pass = cmbProResult.Text == "OK";
- string zj = vehicleCode;
- string zjxh = vehicleCodeNum;
- if (!string.IsNullOrEmpty(bulletclipCode) && !string.IsNullOrEmpty(bulletclipCodeNum))
- {
- zj = bulletclipCode;
- zjxh = bulletclipCodeNum;
- }
- string equipmentCode = "";
- string processItem = "";
- //[S1]Tray盘上料装备
- //[S2]FCT
- //[S3]值板机
- //[S4_1]载具下线装备
- //[S4_3]提升机1
- //[S4_4]提升机2
- //[S4_5]载具上线装备
- //[S5]Tray盘下料装备
- switch (stationStr)
- {
- case "[S1]Tray盘上料装备":
- equipmentCode = GlobalContext.LineCode + "-[S1]";
- processItem = "Tray盘上料装备";
- break;
- case "[S2]FCT":
- equipmentCode = GlobalContext.LineCode + "-[S2]";
- processItem = "FCT";
- break;
- case "[S3]值板机":
- equipmentCode = GlobalContext.LineCode + "-[S3]";
- processItem = "值板机";
- break;
- case "[S4_1]载具下线装备":
- equipmentCode = GlobalContext.LineCode + "-[S4_1]";
- processItem = "载具下线装备";
- break;
- case "[S4_3]提升机1":
- equipmentCode = GlobalContext.LineCode + "-[S4_3]";
- processItem = "提升机1";
- break;
- case "[S4_4]提升机2":
- equipmentCode = GlobalContext.LineCode + "-[S4_4]";
- processItem = "提升机2";
- break;
- case "[S4_5]载具上线装备":
- equipmentCode = GlobalContext.LineCode + "-[S4_5]";
- processItem = "载具上线装备";
- break;
- case "[S5]Tray盘下料装备":
- equipmentCode = GlobalContext.LineCode + "-[S5]";
- processItem = "Tray盘下料装备";
- break;
- }
- //int mesResult = 0;
- int mesResult = Form_Main.formHome.SaveProcessDataByDB(stationStr, item, equipmentCode, processItem
- , workorder_code, mtltmrk, sn, pass, zj, zjxh);
- switch (mesResult)
- {
- case 1:
- return (1, "[1]成功");
- case 5:
- return (5, "[5]MES报警");
- case 6:
- return (6, "[6]上位机报警");
- default:
- return (999, "[999]未知结果");
- }
- }
- #endregion 出站相关
- #region Iot手动上传 Tap
- /// <summary>
- /// 上传按钮_Iot
- /// </summary>
- private async void btnSend_Iot_Click(object sender, EventArgs e)
- {
- try
- {
- await Task.Run(() =>
- {
- string stationStr = cmbStationName_Iot.Text.Trim(); // 工站名称
- string mesStation = "";
- switch (stationStr)
- {
- //[S1]Tray盘上料装备
- //[S2]FCT
- //[S3]值板机
- //[S4_1]载具下线装备
- //[S4_5]载具上线装备
- //[S5]Tray盘下料装备
- case "[OP10]壳体清洁上料":
- mesStation = GlobalContext.S1_station;
- break;
- case "[OP20]上盖板上料装备":
- mesStation = GlobalContext.S2_station;
- break;
- case "[OP30]点散热胶装备_Left":
- mesStation = GlobalContext.s3_1_station;
- break;
- case "[OP30]点散热胶装备_Right":
- mesStation = GlobalContext.s3_2_station;
- break;
- case "[OP40]胶线检测":
- mesStation = GlobalContext.s4_station;
- break;
- case "[OP50]ADD板上料组装装备":
- mesStation = GlobalContext.s5_station;
- break;
- case "[OP60]组上盖板":
- mesStation = GlobalContext.s6_station;
- break;
- case "[OP70]上盖板锁螺丝_Left":
- mesStation = GlobalContext.s7_1_station;
- break;
- case "[OP70]上盖板锁螺丝_Right":
- mesStation = GlobalContext.s7_2_station;
- break;
- case "[OP80]NG下料":
- mesStation = GlobalContext.s8_station;
- break;
- case "[OP90]半成品下料":
- mesStation = GlobalContext.s8_station;
- break;
- }
- string iotSendType = cmbSendType_Iot.Text.Trim();
- switch (iotSendType)
- {
- //设备状态
- //故障日志
- //节拍日志
- //操作记录
- case "设备状态":
- (int, string) resultDeviceState = SendIotDeviceStateFun(mesStation);
- ShowLog_Iot($"[{resultDeviceState.Item1}]" + resultDeviceState.Item2);
- break;
- case "故障日志":
- (int, string) resultFaultLog = SendIotFaultLogFun(mesStation);
- ShowLog_Iot($"[{resultFaultLog.Item1}]" + resultFaultLog.Item2);
- break;
- case "节拍日志":
- (int, string) resultInputBegin = SendIotInputBeginFun(mesStation);
- ShowLog_Iot($"[{resultInputBegin.Item1}]" + resultInputBegin.Item2);
- break;
- case "操作记录":
- (int, string) resultOperateLog = SendIotOperateLogFun(mesStation);
- ShowLog_Iot($"[{resultOperateLog.Item1}]" + resultOperateLog.Item2);
- break;
- case "过站数据":
- (int, string) resultPassStation = SendIotPassStationFun(mesStation);
- ShowLog_Iot($"[{resultPassStation.Item1}]" + resultPassStation.Item2);
- break;
- default:
- break;
- }
- });
- }
- catch (Exception ex)
- {
- string str = ex.StackTrace;
- MessageBox.Show("进站异常!异常位置:" + str.Substring(str.LastIndexOf("\\") + 1, str.Length - str.LastIndexOf("\\") - 1) + ";异常信息:" + ex.Message.ToString());
- }
- }
- /// <summary>
- /// 上传设备状态_Iot
- /// </summary>
- /// <param name="mesStation">mes工站名称</param>
- /// <returns></returns>
- private (int, string) SendIotDeviceStateFun(string mesStation)
- {
- string xmDeviceState = cmbXiaomiDeviceState.Text.Trim(); // 设备状态
- if (string.IsNullOrEmpty(xmDeviceState))
- return (999, "‘状态类型’不可为空!");
- DeviceStateDataRequest request = new DeviceStateDataRequest();
- request.station = mesStation; // ⼯位
- request.state = xmDeviceState; // 设备状态
- request.time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); // 状态切换时的时间 2022-06-01 14:27:57.283
- if (xmDeviceState == "Fault" || xmDeviceState == "Alarm")
- {
- string faultCode = txtFaultCode.Text.Trim();
- if (string.IsNullOrEmpty(faultCode))
- return (999, "‘故障编码’不可为空!");
- request.fault_code = faultCode; // 对应的故障编码
- request.fault_tm = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); // 故障发⽣时间
- }
- // 上传
- (int, string) iotResult = XiaomiMqttClient_Extend.Write_DeviceStateData(request);
- return iotResult;
- }
- /// <summary>
- /// 上传故障日志_Iot
- /// </summary>
- /// <param name="mesStation">mes工站名称</param>
- /// <returns></returns>
- private (int, string) SendIotFaultLogFun(string mesStation)
- {
- string xmFaultName = txtFaultName.Text.Trim(); // 故障名称
- string xmFaultCode2 = txtFaultCode2.Text.Trim(); // 故障编码
- string xmFaultCmpnt = txtFaultCmpnt.Text.Trim(); // 故障部件
- string xmFaultDesc = txtFaultDesc.Text.Trim(); // 故障描述
- if (string.IsNullOrEmpty(xmFaultName))
- return (999, "‘故障名称’不可为空!");
- else if (string.IsNullOrEmpty(xmFaultCode2))
- return (999, "‘故障编码’不可为空!");
- else if (string.IsNullOrEmpty(xmFaultCmpnt))
- return (999, "‘故障部件’不可为空!");
- else if (string.IsNullOrEmpty(xmFaultDesc))
- return (999, "‘故障描述’不可为空!");
- FaultLogRequest request = new FaultLogRequest();
- request.station = mesStation; // ⼯位
- request.fault_name = xmFaultName; // 故障名称(同数据字典中的事件名称)
- request.fault_code = xmFaultCode2; // 故障编码(A,B,C,D,E)
- request.fault_cmpnt = xmFaultCmpnt; // 故障部件
- request.fault_desc = xmFaultDesc; // 故障描述
- request.fault_tm = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); // 故障发⽣时间 2022-06-01 14:27:57.283
- // 上传
- //(int, string) iotResult = XiaomiMqttClient_Extend.Write_FaultLog(request);
- (int, string) iotResult = (0, "");
- return iotResult;
- }
- /// <summary>
- /// 上传节拍日志_Iot
- /// </summary>
- /// <param name="mesStation">mes工站名称</param>
- /// <returns></returns>
- private (int, string) SendIotInputBeginFun(string mesStation)
- {
- string action = cmbAction.Text.Trim(); // 节拍动作
- string partSn = txtPartSn.Text.Trim(); // 物料SN
- string vSn = txtVSn.Text.Trim(); // 载具SN
- string vIndexSn = txtVIndexSn.Text.Trim(); // 载具穴位编号
- string extra = txtExtra.Text.Trim(); // 额外信息
- string class_level_1 = txtClassLevel1.Text.Trim(); // 分类层级1
- string class_level_2 = txtClassLevel2.Text.Trim(); // 分类层级2
- string class_level_3 = txtClassLevel3.Text.Trim(); // 分类层级3
- if (string.IsNullOrEmpty(action))
- return (999, "‘节拍动作’不可为空!");
- else if (string.IsNullOrEmpty(partSn))
- return (999, "‘物料SN’不可为空!");
- else if (string.IsNullOrEmpty(vSn))
- return (999, "‘载具SN’不可为空!");
- else if (string.IsNullOrEmpty(vIndexSn))
- return (999, "‘载具穴位编号’不可为空!");
- else if (string.IsNullOrEmpty(class_level_1))
- return (999, "‘分类层级1’不可为空!");
- else if (string.IsNullOrEmpty(class_level_2))
- return (999, "‘分类层级2’不可为空!");
- else if (string.IsNullOrEmpty(class_level_3))
- return (999, "‘分类层级3’不可为空!");
- StationInputBeginRequest request = new StationInputBeginRequest();
- switch (action)
- {
- /// 上料开始:beat_log/business/OEE/station_input_begin
- /// 上料结束:beat_log/business/OEE/station_input_end
- /// 作业开始:beat_log/business/OEE/station_work_begin
- /// 作业结束:beat_log/business/OEE/station_work_end
- /// 下料开始:beat_log/business/OEE/station_output_begin
- /// 下料结束:beat_log/business/OEE/station_output_end
- case "上料开始":
- request.action = "beat_log/business/OEE/station_input_begin"; // 节拍动作(XiaomiDeviceOEE)
- break;
- case "上料结束":
- request.action = "beat_log/business/OEE/station_input_end"; // 节拍动作(XiaomiDeviceOEE)
- break;
- case "作业开始":
- request.action = "beat_log/business/OEE/station_work_begin"; // 节拍动作(XiaomiDeviceOEE)
- break;
- case "作业结束":
- request.action = "beat_log/business/OEE/station_work_end"; // 节拍动作(XiaomiDeviceOEE)
- break;
- case "下料开始":
- request.action = "beat_log/business/OEE/station_output_begin"; // 节拍动作(XiaomiDeviceOEE)
- break;
- case "下料结束":
- request.action = "beat_log/business/OEE/station_output_end"; // 节拍动作(XiaomiDeviceOEE)
- break;
- }
- request.beat_tm = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); // 节拍发⽣时间(2022-06-01 14:27:57.283)
- request.action_subject = partSn; // 该动作操作的⽬标对象(SN)
- request.action_subject_parent = vSn; // ⼤板SN/载具SN
- request.action_location = mesStation; // 该动作的位置信息(⼯位、槽位),如:F06-GSTPLA11_01-SLOT-01
- request.action_material = vIndexSn; // 该动作的物料信息
- request.extra = extra; // 额外信息
- request.class_level_1 = class_level_1; // 分类层级1
- request.class_level_2 = class_level_2; // 分类层级2
- request.class_level_3 = class_level_3; // 分类层级3
- // 上传
- (int, string) iotResult = XiaomiMqttClient_Extend.Write_StationInputBegin(request);
- return iotResult;
- }
- /// <summary>
- /// 上传操作记录⽇志_Iot
- /// </summary>
- /// <param name="mesStation">mes工站名称</param>
- /// <returns></returns>
- private (int, string) SendIotOperateLogFun(string mesStation)
- {
- string operateAction = cmbOperateAction.Text.Trim(); // 操作动作
- string actionParam = txtActionParam.Text.Trim(); // 动作参数
- string operateDesc = txtOperateDesc.Text.Trim(); // 操作描述
- string operateResult = cmbOperateResult.Text.Trim(); // 操作结果
- if (string.IsNullOrEmpty(operateAction))
- return (999, "‘操作动作’不可为空!");
- else if (string.IsNullOrEmpty(operateDesc))
- return (999, "‘操作描述’不可为空!");
- else if (string.IsNullOrEmpty(operateResult))
- return (999, "‘操作结果’不可为空!");
- OperateLogRequest request = new OperateLogRequest();
- request.software_version = "V" + Application.ProductVersion; // 软件版本号;如:V1.2.4
- request.operate_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); // 操作时间(2022-06-01 14:27:57.283)
- request.operate_action = operateAction; // 操作动作(对应软件开启/关闭/重新加载项⽬;startup、shutdown、reload)
- request.action_param = actionParam; // 动作参数;选填,附带额外的信息
- request.operate_module = "MES调试模块"; // 操作模块;选填
- request.operate_page = "手动调试页面"; // 操作⻚⾯;选填
- request.current_process = Process.GetCurrentProcess()?.Id.ToString(); // 当前进程;进程ID
- request.operate_desc = operateDesc; // 操作描述;如:供应商软件开启/关闭/重新加载项⽬
- request.operate_result = operateResult; // 操作结果
- //request.operator_name = GlobalContext.currentRole; // 操作账号名;填当前操作⽤⼾,如⽆则填default
- // 上传
- //(int, string) iotResult = XiaomiMqttClient_Extend.Write_OperateLog(request);
- (int, string) iotResult=(0,"");
- return iotResult;
- }
- /// <summary>
- /// 上传过站数据_Iot
- /// </summary>
- /// <param name="mesStation">mes工站名称</param>
- /// <returns></returns>
- private (int, string) SendIotPassStationFun(string mesStation)
- {
- string stationStr = cmbStationName_Iot.Text.Trim(); // 工站名
- string slot = txtSlot.Text.Trim(); // 槽位编码
- string sn = txtSn_PassStation.Text.Trim(); // 产品SN
- string enter_status = cmbEnterStatus.Text.Trim(); // 进站状态
- string result = cmbResult.Text.Trim(); // 过站结果
- string work_type = cmbWorkType.Text.Trim(); // 作业类型
- if (string.IsNullOrEmpty(slot))
- return (999, "‘槽位编码’不可为空!");
- else if (string.IsNullOrEmpty(sn))
- return (999, "‘产品SN’不可为空!");
- else if (string.IsNullOrEmpty(enter_status))
- return (999, "‘进站状态’不可为空!");
- else if (string.IsNullOrEmpty(result))
- return (999, "‘过站结果’不可为空!");
- else if (string.IsNullOrEmpty(work_type))
- return (999, "‘作业类型’不可为空!");
- PassStationResultRequest request = new PassStationResultRequest();
- request.project_code = GlobalContext.Project_Code; // 项⽬编码
- request.factory_code = GlobalContext.Factory_Code; // ⼯⼚Id
- request.process_section_code = GlobalContext.Process_Section_Code; // ⼯段编码
- request.line_code = GlobalContext.LineCode; // 线体编码
- switch (stationStr)
- {
- case "[S1]Tray盘上料装备":
- request.work_station = GlobalContext.S1_work_station; // ⼯站
- request.device_code = GlobalContext.S1_device_code; // 装备编码
- break;
- case "[S2]FCT":
- request.work_station = GlobalContext.S2_work_station; // ⼯站
- request.device_code = GlobalContext.S2_device_code; // 装备编码
- break;
- //case "[S3]值板机":
- // request.work_station = GlobalContext.S3_work_station; // ⼯站
- // request.device_code = GlobalContext.S3_device_code; // 装备编码
- // break;
- //case "[S4_1]载具下线装备":
- // request.work_station = GlobalContext.S4_1_work_station; // ⼯站
- // request.device_code = GlobalContext.S4_1_device_code; // 装备编码
- // break;
- //case "[S4_3]提升机1":
- // request.work_station = GlobalContext.S4_3_work_station; // ⼯站
- // request.device_code = GlobalContext.S4_3_device_code; // 装备编码
- // break;
- //case "[S4_4]提升机2":
- // request.work_station = GlobalContext.S4_4_work_station; // ⼯站
- // request.device_code = GlobalContext.S4_4_device_code; // 装备编码
- // break;
- //case "[S4_5]载具上线装备":
- // request.work_station = GlobalContext.S4_5_work_station; // ⼯站
- // request.device_code = GlobalContext.S4_5_device_code; // 装备编码
- // break;
- //case "[S5]Tray盘下料装备":
- // request.work_station = GlobalContext.S5_work_station; // ⼯站
- // request.device_code = GlobalContext.S5_device_code; // 装备编码
- // break;
- }
- request.station = mesStation;
- request.process_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); // 节拍发⽣时间(2022-06-01 14:27:57.283)
- request.slot = slot; // 槽位编码
- request.sn = sn; // 产品SN
- request.enter_status = enter_status; // 进站状态
- request.result = result; // 过站结果
- request.work_type = work_type; // 作业类型
- // 上传过站结果
- //(int, string) iotResult = XiaomiMqttClient_Extend.Write_PassStationResult(request);
- (int, string) iotResult = (0, "");
- return iotResult;
- }
- /// <summary>
- /// 显示信息
- /// </summary>
- /// <param name="msg">信息</param>
- public void ShowLog_Iot(string msg)
- {
- txtInfo.Invoke(new Action(() =>
- {
- txtInfo_Iot.Text = string.Concat("\r\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "=> ", msg);
- }));
- }
- // 更改上传类型
- private void cmbSendType_Iot_SelectedIndexChanged(object sender, EventArgs e)
- {
- string iotSendType = cmbSendType_Iot.Text.Trim();
- switch (iotSendType)
- {
- //设备状态
- //故障日志
- //节拍日志
- //操作记录
- case "设备状态":
- pnlDeviceState.Enabled = true;
- pnlFaultLog.Enabled = false;
- pnlStationInputBegin.Enabled = false;
- pnlOperateLog.Enabled = false;
- pnlPassStation.Enabled = false;
- pnlDeviceState5.Enabled = false;
- pnlDeviceState6.Enabled = false;
- pnlDeviceState7.Enabled = false;
- pnlDeviceState8.Enabled = false;
- pnlDeviceState.BackColor = Color.Yellow;
- pnlFaultLog.BackColor = Color.Gray;
- pnlStationInputBegin.BackColor = Color.Gray;
- pnlOperateLog.BackColor = Color.Gray;
- pnlPassStation.BackColor = Color.Gray;
- pnlDeviceState5.BackColor = Color.Gray;
- pnlDeviceState6.BackColor = Color.Gray;
- pnlDeviceState7.BackColor = Color.Gray;
- pnlDeviceState8.BackColor = Color.Gray;
- break;
- case "故障日志":
- pnlDeviceState.Enabled = false;
- pnlFaultLog.Enabled = true;
- pnlStationInputBegin.Enabled = false;
- pnlOperateLog.Enabled = false;
- pnlPassStation.Enabled = false;
- pnlDeviceState5.Enabled = false;
- pnlDeviceState6.Enabled = false;
- pnlDeviceState7.Enabled = false;
- pnlDeviceState8.Enabled = false;
- pnlDeviceState.BackColor = Color.Gray;
- pnlFaultLog.BackColor = Color.Yellow;
- pnlStationInputBegin.BackColor = Color.Gray;
- pnlOperateLog.BackColor = Color.Gray;
- pnlPassStation.BackColor = Color.Gray;
- pnlDeviceState5.BackColor = Color.Gray;
- pnlDeviceState6.BackColor = Color.Gray;
- pnlDeviceState7.BackColor = Color.Gray;
- pnlDeviceState8.BackColor = Color.Gray;
- break;
- case "节拍日志":
- pnlDeviceState.Enabled = false;
- pnlFaultLog.Enabled = false;
- pnlStationInputBegin.Enabled = true;
- pnlOperateLog.Enabled = false;
- pnlPassStation.Enabled = false;
- pnlDeviceState5.Enabled = false;
- pnlDeviceState6.Enabled = false;
- pnlDeviceState7.Enabled = false;
- pnlDeviceState8.Enabled = false;
- pnlDeviceState.BackColor = Color.Gray;
- pnlFaultLog.BackColor = Color.Gray;
- pnlStationInputBegin.BackColor = Color.Yellow;
- pnlOperateLog.BackColor = Color.Gray;
- pnlPassStation.BackColor = Color.Gray;
- pnlDeviceState5.BackColor = Color.Gray;
- pnlDeviceState6.BackColor = Color.Gray;
- pnlDeviceState7.BackColor = Color.Gray;
- pnlDeviceState8.BackColor = Color.Gray;
- break;
- case "操作记录":
- pnlDeviceState.Enabled = false;
- pnlFaultLog.Enabled = false;
- pnlStationInputBegin.Enabled = false;
- pnlOperateLog.Enabled = true;
- pnlPassStation.Enabled = false;
- pnlDeviceState5.Enabled = false;
- pnlDeviceState6.Enabled = false;
- pnlDeviceState7.Enabled = false;
- pnlDeviceState8.Enabled = false;
- pnlDeviceState.BackColor = Color.Gray;
- pnlFaultLog.BackColor = Color.Gray;
- pnlStationInputBegin.BackColor = Color.Gray;
- pnlOperateLog.BackColor = Color.Yellow;
- pnlPassStation.BackColor = Color.Gray;
- pnlDeviceState5.BackColor = Color.Gray;
- pnlDeviceState6.BackColor = Color.Gray;
- pnlDeviceState7.BackColor = Color.Gray;
- pnlDeviceState8.BackColor = Color.Gray;
- break;
- default:
- break;
- }
- }
- // 更改状态类型
- private void cmbXiaomiDeviceState_SelectedIndexChanged(object sender, EventArgs e)
- {
- string xmDeviceState = cmbXiaomiDeviceState.Text.Trim();
- if (xmDeviceState == "Fault" || xmDeviceState == "Alarm")
- {
- label23.Enabled = true;
- label24.Enabled = true;
- txtFaultCode.Enabled = true;
- }
- else
- {
- label23.Enabled = false;
- label24.Enabled = false;
- txtFaultCode.Enabled = false;
- }
- }
- #endregion Iot手动上传 Tap
- #region 其他方法
- /// <summary>
- /// 显示信息
- /// </summary>
- /// <param name="msg">信息</param>
- public void ShowLog(string msg)
- {
- txtInfo.Invoke(new Action(() =>
- {
- txtInfo.Text = string.Concat("\r\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "=> ", msg);
- }));
- }
- /// <summary>
- /// 添加记录
- /// </summary>
- /// <param name="logType">日志类型</param>
- /// <param name="msg">日志信息</param>
- private void AddMessage(LogType logType, string msg)
- {
- MessageEvent?.Invoke(logType, msg);
- }
- #endregion 其他方法
- }
- }
|