/// <summary> /// 打印 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnPrint_Click(object sender, EventArgs e) { //string bar = "1S243-024-030-36-1-068-A+804002015A003143"; //string name = "图号:1S243-024-030-36-1-068-A\r\n合格证号:804002015A003143\r\n名称:垫圈1\r\n数量:5\r\n"; string bar = txtBar.Text.Trim(); string name = txtName.Text.Trim(); Barcode.Print(bar, name); }
/// <summary> /// 执行任务 /// </summary> /// <param name="i"></param> /// <param name="j"></param> private void DoTask(int i, int j) { //最小粒度命令 /* 1、写命令 * 2、开始执行 * 3、等待n秒 * 4、读4完成数,+1则成功,否则失败*/ short[] data = new short[1]; bool res = true; ShowInfo("开始执行任务:" + listTask[i].Name + " 数量:" + ListTask[i].Item[j], Key); foreach (var key in dicPlateAddress.Keys) { if (res) { if (key == i) {//确定要写入的振盘 data[0] = (short)listTask[i].Item[j]; } else { data[0] = 0; } try { res = Write(dicPlateAddress[key], 1, out data); } catch (Exception ex) { ShowInfo(ex.Message, Key); Status = 2; return; } } else { ShowInfo("执行错误!", Key); Status = 2; return; } } if (res) {//开始执行 data[0] = 1; try { res = Write("R305", 1, out data); if (res) {//全部写入正确,开始读取完成数 int times = 0; int currentNum = DoneCount; while (times < MAX_READ_TIMES) { Thread.Sleep(READ_INTERVAL); times++; int result = GetDoneCount(); if (currentNum + 1 == DoneCount) {//完成数加一,说明plc正确执行 //打印 string bar = ListTask[i].ImageNo + ListTask[i].CertificateNo; string name = string.Format("图号:{0}\r\n合格证号:{1}\r\n名称:{2}\r\n数量:{3}\r\n", ListTask[i].ImageNo, ListTask[i].CertificateNo, ListTask[i].Name, ListTask[i].Item[j]); Barcode.Print(bar, name); //更新任务完成数 ListTask[i].DoneNumber = j + 1; ShowInfo("任务执行成功!", Key); break; } } } } catch (Exception ex) { ShowInfo(ex.Message, Key); Status = 5; return; } } ShowInfo("执行错误!", Key); Status = 5; }