using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using System.Runtime.InteropServices;
using System.Threading;
using System.Data.SqlClient;
using com.force.json;
using System.Diagnostics;
using DevComponents.DotNetBar.Controls;
namespace WCS
{
public partial class main : Office2007Form
{
//private static Process p;
//Point formPoint;//记录窗体的位置
//Point mousePoint;
//int h1 = 0, h2 = 0, tag = 0, tag1 = 0;
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
//[DllImport("kernel32")]
//private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
//[DllImport("kernel32.dll")]
//public extern static int GetPrivateProfileString(string segName, string keyName, string sDefault, StringBuilder buffer, int nSize, string fileName);
//public extern static int GetPrivateProfileStringA(string segName, string keyName, string sDefault, byte[] buffer, int iLen, string fileName); // ANSI版本
private Point mouseOff;//鼠标移动位置变量
private bool leftFlag;//鼠标是否为左键
public main()
{
InitializeComponent();
}
#region 系统初始化加载,load事件
private void Form1_Load(object sender, EventArgs e)
{
try
{
#region 初始化主控图控件
//panel_left.Parent = panel_plc_top;
//panel_main_logo.Parent = panel_main;
//panel_barcode.Parent = this;
//panel_led.Parent = this;
//panel_crn_top.Parent = this;
//panel_plc_top.Parent = this;
//panel_main.Parent = this;
//panel_menu.Parent = panel_min_map;
//panel_main.Dock = DockStyle.Fill;
//panel_main.BringToFront();
tc_main.SizeMode = TabSizeMode.Fixed;
tc_main.ItemSize = new Size(0, 1);
panel_left.Parent = panel_plc_top;
panel_menu.Parent = panel_min_map;
#endregion
DateTime dt = DateTime.Now;
toolStripStatusLabel1.Text = " 启动时间:" + dt.ToLongDateString() + " " + dt.ToLongTimeString() + " ";
toolStripStatusLabel2.Text = " 当前时间: " + dt.ToLongTimeString() + " ";
toolStripStatusLabel3.Text = " 中扬储存设备有限公司 ";
t_run.Enabled = false;
t_display.Enabled = false;
timer1.Enabled = false;
timer2.Enabled = false;
ReadSystemIni();
//string sql = " select * from APPS.CUX_INV_ONHAND_HSTORE_V where LPN_NUMBER='M041723045'";
//DataView dv_mat = Common.ExecErpSelect(sql);
//if (dv_mat != null && dv_mat.Count > 0)
//{
// foreach (DataRowView drow in dv_mat)
// {
// //insertBasMatCode(dv_mat);
// string ls_mat_no = drow[0].ToString();
// }
//}
//if (Common.CheckDbConnect() == false)
//{
// MessageBox.Show("数据库连接失败,请检查服务器(" + Common.serverIp + ")");
// Application.Exit();
//}
//初始化各按钮状态
//sysrun.Enabled = false;
//b_pasuecrn.Enabled = true;
Common.InitSta();
Common.InitCrn();
Common.InitDev();
//runcrn.Enabled = false;
initMainMap();
initCrnMap();
initPLCMap();
//initUpdateMap();
#region 注释,主控图画面初始显示
////---------------堆垛机画面初始显示---------------------------
//for (int kk = 0; kk < Common.ci_crn_count; kk++)
//{
// ListViewItem lvi1 = new ListViewItem();
// lvi1.SubItems[0].Text = (kk + 1).ToString();
// lvi1.SubItems.Add("0");
// lvi1.SubItems.Add("0");
// lvi1.SubItems.Add("0");
// lvi1.SubItems.Add("0");
// lvi1.SubItems.Add("0");
// this.crnstslists.Items.Add(lvi1);
//}
#endregion
initThread();
t_run.Enabled = true;
//t_update.Enabled = true;
t_display.Enabled = true;
timer1.Enabled = true;
pictureBox1_Click(null, null);
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "Form1_Load--" + em.Message);
MessageBox.Show("系统加载出错---" + em.Message);
System.Environment.Exit(0);
}
}
///
/// 加载配置
///
private void ReadSystemIni()
{
StringBuilder tem = new StringBuilder(100);
//得到设备端口来源
try
{
//得到设备IP,端口号
GetPrivateProfileString("System", "crn_ip", "", tem, 100, Common.sysinipath);
string[] arrayCrnIp = tem.ToString().Trim().Split(';');
if (arrayCrnIp.Length < Common.ci_crn_count)
{
toolStripStatusLabel4.Text = "堆垛机IP参数读取错误";
return;
}
for (int i = 0; i < Common.ci_crn_count; i++)
{
Common.gs_crn_ip[i] = arrayCrnIp[i];
}
GetPrivateProfileString("System", "plc_ip", "", tem, 100, Common.sysinipath);
string[] arrayPlcIp = tem.ToString().Trim().Split(';');
if (arrayPlcIp.Length < Common.ci_plc_count)
{
toolStripStatusLabel4.Text = "PLC IP参数读取错误";
return;
}
for (int i = 0; i < Common.ci_plc_count; i++)
{
Common.gs_plc_ip[i] = arrayPlcIp[i];
}
GetPrivateProfileString("System", "barcode_ip", "", tem, 100, Common.sysinipath);
string[] arrayBarcodeIp = tem.ToString().Trim().Split(';');
if (arrayBarcodeIp.Length < Common.ci_barcode_count)
{
toolStripStatusLabel4.Text = "条码阅读器 IP参数读取错误";
return;
}
for (int i = 0; i < Common.ci_barcode_count; i++)
{
Common.gs_barcode_ip[i] = arrayBarcodeIp[i];
}
GetPrivateProfileString("System", "led_ip", "", tem, 100, Common.sysinipath);
string[] arrayLedIp = tem.ToString().Trim().Split(';');
if (arrayLedIp.Length < Common.ci_led_count)
{
toolStripStatusLabel4.Text = "LED IP参数读取错误";
return;
}
for (int i = 0; i < Common.ci_led_count; i++)
{
Common.gs_led_ip[i] = arrayLedIp[i];
}
//GetPrivateProfileString("System", "scale_ip", "", tem, 100, Common.sysinipath);
//string[] arrayScaleIp = tem.ToString().Trim().Split(';');
//if (arrayScaleIp.Length < Common.ci_scale_count)
//{
// toolStripStatusLabel4.Text = "磅秤 IP参数读取错误";
// return;
//}
//for (int i = 0; i < Common.ci_scale_count; i++)
//{
// Common.gs_scale_ip[i] = arrayScaleIp[i];
//}
GetPrivateProfileString("System", "sysIp", "", tem, 100, Common.sysinipath);
Common.serverIp = tem.ToString();
Common.sqlcon = Common.sqlcon + "Data Source=" + Common.serverIp;
//GetPrivateProfileString("System", "Ver", "", tem, 100, Common.sysinipath);
//this.Text = this.Text + " " + tem.ToString();
GetPrivateProfileString("System", "companyName", "", tem, 100, Common.sysinipath);
Common.gs_companyName = tem.ToString();
toolStripStatusLabel3.Text = " " + Common.gs_companyName + " ";
GetPrivateProfileString("System", "scanTimeout", "", tem, 100, Common.sysinipath);
Common.gd_scanTimeout = Convert.ToDouble(tem.ToString());
//GetPrivateProfileString("System", "Ver", "", tem, 100, Common.sysinipath);
//this.Text = this.Text + " " + tem.ToString();
GetPrivateProfileString("System", "HttpUrl", "", tem, 100, Common.sysinipath);
Common.HttpUrl = tem.ToString();
GetPrivateProfileString("System", "wcsip", "", tem, 100, Common.sysinipath);
Common.gs_wcs_ip = tem.ToString().Trim();
GetPrivateProfileString("System", "wcsport", "", tem, 100, Common.sysinipath);
Common.gs_wcs_port = Int32.Parse(tem.ToString());
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "ReadSystemIni--读取配置信息失败:" + em.Message);
toolStripStatusLabel4.Text = "读取配置信息失败:" + em.Message;
return;
}
}
///
/// 初始化主控图显示画面
///
private void initMainMap()
{
try
{
//----------------------------------初始化map画面控件--------------------------------
for (int i = 0; i < this.Controls.Count; i++) ///main主窗口
{
if (this.Controls[i] is System.Windows.Forms.TabControl) ///tb_main 标签控件
{
for (int ii = 0; ii < this.Controls[i].Controls.Count; ii++)
{
if (this.Controls[i].Controls[ii] is System.Windows.Forms.TabPage) //标签控件下的子控件
{
for (int iii = 0; iii < this.Controls[i].Controls[ii].Controls.Count; iii++)
{
if (this.Controls[i].Controls[ii].Controls[iii] is System.Windows.Forms.Panel) //子控件下的panel
{
for (int iiii = 0; iiii < this.Controls[i].Controls[ii].Controls[iii].Controls.Count; iiii++)
{
if (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii] is System.Windows.Forms.Panel) //单个panel下的panel
{
for (int iiiii = 0; iiiii < this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls.Count; iiiii++)
{
if (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii].Tag != null)
{
if (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii].Tag.ToString() != "")
{
if (Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii].Tag) > 0)
{
Common.g_ari_staion_Component_seq[Common.GetStnSeq(Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii].Tag))] = this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii];
(this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii] as DevComponents.DotNetBar.LabelX).MouseMove += new MouseEventHandler(stnMouseMove);
(this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii] as DevComponents.DotNetBar.LabelX).MouseLeave += new EventHandler(stnMouseLeave);
(this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii] as DevComponents.DotNetBar.LabelX).DoubleClick += new EventHandler(stn_DoubleClick);
}
else if (Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii].Tag) < 0)
{
(this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii] as DevComponents.DotNetBar.LabelX).MouseMove += new MouseEventHandler(crnMouseMove);
(this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii] as DevComponents.DotNetBar.LabelX).MouseLeave += new EventHandler(crnMouseLeave);
}
}
}
}
}
}
}
}
}
}
}
}
//for (int i = 0; i < this.Controls.Count; i++)
//{
// if (this.Controls[i] is System.Windows.Forms.Panel)
// {
// for (int ii = 0; ii < this.Controls[i].Controls.Count; ii++)
// {
// if (this.Controls[i].Controls[ii] is System.Windows.Forms.Panel)
// {
// for (int iii = 0; iii < this.Controls[i].Controls[ii].Controls.Count; iii++)
// {
// if (this.Controls[i].Controls[ii].Controls[iii].Tag != null)
// {
// if (this.Controls[i].Controls[ii].Controls[iii].Tag.ToString() != "")
// {
// if (Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Tag) > 0)
// {
// Common.g_ari_staion_Component_seq[Common.GetStnSeq(Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Tag))] = this.Controls[i].Controls[ii].Controls[iii];
// (this.Controls[i].Controls[ii].Controls[iii] as DevComponents.DotNetBar.LabelX).MouseMove += new MouseEventHandler(stnMouseMove);
// (this.Controls[i].Controls[ii].Controls[iii] as DevComponents.DotNetBar.LabelX).MouseLeave += new EventHandler(stnMouseLeave);
// (this.Controls[i].Controls[ii].Controls[iii] as DevComponents.DotNetBar.LabelX).DoubleClick += new EventHandler(stn_DoubleClick);
// }
// else if (Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Tag) < 0)
// {
// (this.Controls[i].Controls[ii].Controls[iii] as DevComponents.DotNetBar.LabelX).MouseMove += new MouseEventHandler(crnMouseMove);
// (this.Controls[i].Controls[ii].Controls[iii] as DevComponents.DotNetBar.LabelX).MouseLeave += new EventHandler(crnMouseLeave);
// }
// }
// }
// }
// }
// }
// }
//}
#region 遍历控件
//for (int i = 0; i < this.Controls.Count; i++)
//{
// //ls_eee = this.Controls[i].Name.ToString();
// if (this.Controls[i] is DevComponents.DotNetBar.SuperTabControl)
// {
// for (int ii = 0; ii < this.Controls[i].Controls.Count; ii++)
// {
// //ls_eee = this.Controls[i].Controls[ii].Name.ToString();
// if (this.Controls[i].Controls[ii] is DevComponents.DotNetBar.SuperTabControlPanel)
// {
// for (int iii = 0; iii < this.Controls[i].Controls[ii].Controls.Count; iii++)
// {
// if (this.Controls[i].Controls[ii].Controls[iii] is DevComponents.DotNetBar.PanelEx)
// {
// //ls_eee = this.Controls[i].Controls[ii].Controls[iii].Name.ToString();
// for (int iiii = 0; iiii < this.Controls[i].Controls[ii].Controls[iii].Controls.Count; iiii++)
// {
// if (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii] is DevComponents.DotNetBar.LabelX)
// {
// if (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Tag != null)
// {
// if (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Tag.ToString() != "")
// {
// if (Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Tag) > 0)
// {
// Common.g_ari_staion_Component_seq[Common.GetStnSeq(Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Tag))] = this.Controls[i].Controls[ii].Controls[iii].Controls[iiii];
// (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii] as DevComponents.DotNetBar.LabelX).MouseMove += new MouseEventHandler(stnMouseMove);
// (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii] as DevComponents.DotNetBar.LabelX).MouseLeave += new EventHandler(stnMouseLeave);
// (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii] as DevComponents.DotNetBar.LabelX).DoubleClick += new EventHandler(stn_DoubleClick);
// //if (Convert.ToInt32(this.maps.Controls[i].Controls[ii].Tag)>210)
// //{
// // MessageBox.Show(this.maps.Controls[i].Controls[ii].Tag.ToString());
// //}
// }
// else if (Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Tag) < 0)
// {
// (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii] as DevComponents.DotNetBar.LabelX).MouseMove += new MouseEventHandler(crnMouseMove);
// (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii] as DevComponents.DotNetBar.LabelX).MouseLeave += new EventHandler(crnMouseLeave);
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
//}
#endregion
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "initMainMap--初始化主控图界面失败:" + em.Message);
toolStripStatusLabel4.Text = "初始化主控图界面失败:" + em.Message;
}
}
///
/// 初始化堆垛机显示画面
///
private void initCrnMap()
{
try
{
//堆垛机状态位信息gridview初始化
dgv_crnsts.DefaultCellStyle.SelectionForeColor = Color.Black;
dgv_crnsts.DefaultCellStyle.SelectionBackColor = Color.White;
dgv_crnsts.DefaultCellStyle.ForeColor = Color.Black;
dgv_crnsts.DefaultCellStyle.BackColor = Color.White;
dgv_crnsts.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
for (int i = 0; i < Common.ci_crn_count - 1; i++)
{
dgv_crnsts.Rows.Add();
}
for (int i = 0; i < dgv_crnsts.Rows.Count; i++)
{
dgv_crnsts["col_CrnNo", i].Value = i + 1;
}
//堆垛机工作状态初始化
crnlistdata.Columns.Add("堆垛机", 56, HorizontalAlignment.Center);
crnlistdata.Columns.Add("状态", 120, HorizontalAlignment.Center);
crnlistdata.Columns.Add("工作号", 58, HorizontalAlignment.Center);
crnlistdata.Columns.Add("源站", 50, HorizontalAlignment.Center);
crnlistdata.Columns.Add("目标站", 56, HorizontalAlignment.Center);
crnlistdata.Columns.Add("源库位", 70, HorizontalAlignment.Center);
crnlistdata.Columns.Add("目标库位", 70, HorizontalAlignment.Center);
crnlistdata.Columns.Add("异常", 130, HorizontalAlignment.Center);
crnlistdata.Columns.Add("原点", 44, HorizontalAlignment.Center);
crnlistdata.Columns.Add("命令", 132, HorizontalAlignment.Center);
crnlistdata.Columns.Add("走行速度(m/min)", 118, HorizontalAlignment.Center);
crnlistdata.Columns.Add("升降速度(m/min)", 118, HorizontalAlignment.Center);
crnlistdata.Columns.Add("叉牙速度(m/min)", 118, HorizontalAlignment.Center);
crnlistdata.Columns.Add("走行距离(Km)", 97, HorizontalAlignment.Center);
crnlistdata.Columns.Add("升降距离(Km)", 97, HorizontalAlignment.Center);
crnlistdata.Columns.Add("走行时长(H)", 90, HorizontalAlignment.Center);
crnlistdata.Columns.Add("升降时长(H)", 90, HorizontalAlignment.Center);
for (int i = 0; i < Common.ci_crn_count; i++)
{
ListViewItem lvi = new ListViewItem();
lvi.SubItems[0].Text = Common.crn_i_crnno[i].ToString();
lvi.SubItems.Add(Common.crn_i_crn_sts[i].ToString());
lvi.SubItems.Add(Common.crn_i_Wrkno[i].ToString());
lvi.SubItems.Add(Common.crn_i_fstn[i].ToString());
lvi.SubItems.Add(Common.crn_i_tstn[i].ToString());
lvi.SubItems.Add(Common.crn_s_Flocno[i]);
lvi.SubItems.Add(Common.crn_s_Tlocno[i]);
lvi.SubItems.Add(Common.crn_i_Errcod[i].ToString());
lvi.SubItems.Add(Common.crn_i_onHP[i].ToString());
lvi.SubItems.Add(Common.gs_crncmd[i]);
lvi.SubItems.Add(Common.WalkSpeed[i].ToString());
lvi.SubItems.Add(Common.LiftSpeed[i].ToString());
lvi.SubItems.Add(Common.ForkSpeed[i].ToString());
lvi.SubItems.Add(Common.XDistance[i].ToString());
lvi.SubItems.Add(Common.YDistance[i].ToString());
lvi.SubItems.Add(Common.XDuration[i].ToString());
lvi.SubItems.Add(Common.YDuration[i].ToString());
this.crnlistdata.Items.Add(lvi);
Common.gi_crnstn[i] = 1;
Common.gs_crn_err_pre[i] = "0";
}
s1.Style.BackColor1.Color = Color.Green;
s1.Style.BackColor2.Color = Color.Green;
s2.Style.BackColor1.Color = Color.Green;
s2.Style.BackColor2.Color = Color.Green;
s3.Style.BackColor1.Color = Color.Green;
s3.Style.BackColor2.Color = Color.Green;
tb_sendtocrn1.Text = "";
tb_sendtocrn2.Text = "";
for (int i = 0; i < Common.ci_crn_count; i++)
{
Common.gs_crnlastio[i] = "I";
Common.gs_crncmd[i] = "";
Common.crn_s_commandstr[i] = "";
Common.gi_crn_iotype[i] = 0;
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "initCrnMap--初始化堆垛机界面失败:" + em.Message);
toolStripStatusLabel4.Text = "初始化堆垛机界面失败:" + em.Message;
}
}
///
/// 初始化PLC显示画面
///
private void initPLCMap()
{
try
{
sta_qty.Text = Common.ci_sta_count.ToString();
//初始化PLC站点信息
for (int i = 0; i < Common.ci_plc_count; i++)
{
if (i == 0)
{
for (int j = 1; j <= Common.ci_sta_count; j++)
{
ListViewItem lvi = new ListViewItem();
lvi.SubItems[0].Text = Common.plc_s_dev_no[i, j - 1].ToString();
lvi.SubItems.Add(Common.plc_i_Wrk_no[i, j - 1].ToString());
lvi.SubItems.Add(Common.plc_s_autoing[i, j - 1].ToString());
lvi.SubItems.Add(Common.plc_s_loading[i, j - 1].ToString());
lvi.SubItems.Add(Common.plc_s_canining[i, j - 1]);
lvi.SubItems.Add(Common.plc_s_canouting[i, j - 1]);
lvi.SubItems.Add(Common.plc_s_inreq1[i, j - 1]);
lvi.SubItems.Add(Common.plc_s_inreq2[i, j - 1]);
//lvi.SubItems.Add(Common.plc_s_loctype[i, j - 1]);
lvi.SubItems.Add("");
lvi.SubItems.Add(Common.plc_s_next_stn[i, j - 1]);
(this.Controls.Find("lv_plcdevsts" + (i + 1).ToString(), true)[0] as ListView).Items.Add(lvi);
}
}
//if (i == 1)
//{
// for (int j = 31; j <= Common.ci_sta_count; j++)
// {
// ListViewItem lvi = new ListViewItem();
// lvi.SubItems[0].Text = Common.plc_s_dev_no[i, j - 1].ToString();
// lvi.SubItems.Add(Common.plc_i_Wrk_no[i, j - 1].ToString());
// lvi.SubItems.Add(Common.plc_s_autoing[i, j - 1].ToString());
// lvi.SubItems.Add(Common.plc_s_loading[i, j - 1].ToString());
// lvi.SubItems.Add(Common.plc_s_canining[i, j - 1]);
// lvi.SubItems.Add(Common.plc_s_canouting[i, j - 1]);
// lvi.SubItems.Add(Common.plc_s_inreq1[i, j - 1]);
// lvi.SubItems.Add(Common.plc_s_inreq2[i, j - 1]);
// lvi.SubItems.Add(Common.plc_s_loctype[i, j - 1]);
// lvi.SubItems.Add(Common.plc_s_next_stn[i, j - 1]);
// (this.Controls.Find("lv_plcdevsts" + i.ToString(), true)[0] as ListView).Items.Add(lvi);
// }
//}
}
//初始化PLC错误信息
try
{
DataView dv1 = Common.ExecAsrsSelect("select error_desc from dbo.asr_bas_plcerror order by error_code");
if (dv1 != null && dv1.Count > 0)
{
//ListViewItem lvi = new ListViewItem();
//lv_PlcError.Columns.Add("序号", 50, HorizontalAlignment.Right);
//lv_PlcError.Columns.Add("PLC错误描述", 400, HorizontalAlignment.Left);
//lv_PlcError.Columns.Add("错误", 50, HorizontalAlignment.Center);
int i = 0;
Common.ci_plcerrcount = dv1.Count;
Common.gs_PlcErrDesc = new string[Common.ci_plcerrcount];
Common.plcerr = new string[Common.ci_plcerrcount];
foreach (DataRowView drv1 in dv1)
{
Common.gs_PlcErrDesc[i] = drv1[0].ToString();
ListViewItem lvi = lv_PlcAError.Items.Add((lv_PlcAError.Items.Count + 1).ToString());
lvi.SubItems.Add(Common.gs_PlcErrDesc[i]);
lvi.SubItems.Add("N");
i++;
}
//初始化plc异常
for (int j = 0; j < Common.ci_plcerrcount; j++)
{
Common.plcerr[j] = "N";
//Common.s_plc_err_count1[j] = "N";
//Class1.s_plc_err_count2[j] = "N";
}
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "initPLCMap--读取dbo.asr_bas_plcerror失败:" + em.Message);
}
sendtoplc1.Text = "";
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "initPLCMap--初始化PLC界面失败:" + em.Message);
toolStripStatusLabel4.Text = "初始化PLC界面失败:" + em.Message;
}
}
///
/// 初始化回报显示画面
///
private void initUpdateMap()
{
try
{
//lb_barcode.Text = "";
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "initUpdateMap--初始化回报显示画面失败:" + em.Message);
toolStripStatusLabel4.Text = "初始化回报显示画面失败:" + em.Message;
}
}
///
/// 初始化设备线程
///
private void initThread()
{
try
{
//初始化堆垛机并启动堆垛机线程
for (int i = 0; i < Common.ci_crn_count; i++)
{
CraneThread crn = new CraneThread(i + 1, Common.gs_crn_ip[i], 102, this);
//crn1.crncmdlist = this.cmdanalysis1;
//crn.crnstslist = this.crnstslists;
crn.tb = this.responsecrn1;
crn.dgv_crnsts = this.dgv_crnsts;
crn.tb_sendtocrn = this.Controls.Find("tb_sendtocrn" + (i + 1).ToString(), true)[0] as TextBoxX;
}
////初始化并启动plc线程
PlcAThread plcA = new PlcAThread(1, Common.gs_plc_ip[0], 102, this);
plcA.plclist = lv_plcdevsts1;
plcA.tb = plcresponse1;
plcA.sendtoplc = this.sendtoplc1;
//PlcBThread plcB = new PlcBThread(2, Common.gs_plc_ip[1], 502, this);
//plcB.plclist = lv_plcdevsts1;
//plcB.tb = plcresponse1;
//plcB.sendtoplc = this.sendtoplc2;
//初始化并启动条码线程
//for (int i = 0; i < Common.ci_barcode_count; i++)
//{
// BarcodeThread barcode = new BarcodeThread(i + 1, Common.gs_barcode_ip[i], 2111, this);
// barcode.lb_barcode = this.lb_barcode;
// barcode.barcodedisplay = this.Controls.Find("lv_barcode" + (i + 1).ToString(), true)[0] as ListBox;
//}
//初始化并启动LED线程
for (int i = 0; i < Common.ci_led_count; i++)
{
LedThread led = new LedThread(i + 1, Common.gs_led_ip[i], 5005);
led.responseled = this.responseled;
led.tb_sendtoled = this.Controls.Find("tb_sendtoled" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.Controls.TextBoxX;
//led.responseled = this.Controls.Find("lv_barcode" + (i + 1).ToString(), true)[0] as ListBox;
}
////初始化并启动磅称线程
//for (int i = 0; i < Common.ci_scale_count; i++)
//{
// ScaleTcpThread scale = new ScaleTcpThread(i + 1, Common.gs_scale_ip[i], 8234, this);
// scale.scaledisplay = (this.Controls.Find("lv_scale" + (i + 1).ToString(), true)[0] as ListBox);
//}
//UpdateThread updateThread = new UpdateThread();
//updateThread.frmdata = this.frmdata;
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "initThreadMap--初始化设备线程出错:" + em.Message);
toolStripStatusLabel4.Text = "初始化设备线程出错:" + em.Message;
}
}
private void main_FormClosing(object sender, FormClosingEventArgs e)
{
//try
//{
//exit wr = new exit();
//wr.ShowDialog().ToString();
//if (Common.sysinfo == true)
//{
// e.Cancel = false;
// this.Dispose();
// Application.Exit();
// Common.sysinfo = false;
//}
//else
//{
// e.Cancel = true;
//}
// DialogResult dr = MessageBox.Show("确定要退出吗?", "退出程序", MessageBoxButtons.OKCancel);
// if (dr == DialogResult.OK)//如果点击“确定”按钮
// {
// e.Cancel = false;
// this.Dispose();
// Application.Exit();
// }
// else
// {
// e.Cancel = true;
// }
//}
//catch (Exception)
//{
//}
}
#endregion
#region 主控图控件事件,移动至设备,弹出设备显示框
///
/// 站点鼠标移入事件
///
private void stnMouseMove(object sender, MouseEventArgs e)
{
//Point p = this.PointToClient(Control.MousePosition);// MousePosition;
//int stnno = 0;
int seqno = 0;
int plcno = 0, i_wrkno = 0;
try
{
int stn = Int32.Parse((sender as DevComponents.DotNetBar.LabelX).Tag.ToString());
seqno = Common.GetStnSeq(stn);
if (seqno < 50)
{
plcno = 0;
}
else
{
plcno = 1;
}
i_wrkno = Common.plc_i_Wrk_no[plcno, seqno];
if (stn > 0)
{
if (Common.form1 == null)
{
stndisplay stnd = new stndisplay();
stnd.TopLevel = false;
stnd.Parent = this;
stnd.BringToFront();
//stnd.Left = (sender as DevComponents.DotNetBar.LabelX).Left - (sender as DevComponents.DotNetBar.LabelX).Width + 100;
//stnd.Top = (sender as DevComponents.DotNetBar.LabelX).Top;
stnd.Left = 870;
stnd.Top = 130;
stnd.stnno.Text = stn.ToString();
stnd.stnid.Text = Common.plc_i_Wrk_no[plcno, seqno].ToString();
stnd.autoif.Checked = (Common.plc_s_autoing[plcno, seqno].ToString() == "Y") ? true : false;
stnd.loadif.Checked = (Common.plc_s_loading[plcno, seqno].ToString() == "Y") ? true : false;
stnd.caninif.Checked = (Common.plc_s_canining[plcno, seqno].ToString() == "Y") ? true : false;
stnd.canouif.Checked = (Common.plc_s_canouting[plcno, seqno].ToString() == "Y") ? true : false;
DataView dv1 = Common.ExecAsrsSelect("select top 1 wrk_sts,io_type,source_sta_no,sta_no,source_loc_no,loc_no from dbo.asr_wrk_mast where wrk_no=" + i_wrkno + "");
if (dv1 != null && dv1.Count > 0)
{
foreach (System.Data.DataRowView drow in dv1)
{
stnd.wrksts.Text = Common.Getwrksts(drow[0].ToString());
stnd.iotype.Text = Common.Getiotype(drow[1].ToString());
stnd.sstn.Text = drow[2].ToString();
stnd.dstn.Text = drow[3].ToString();
stnd.sloc.Text = drow[4].ToString();
stnd.dloc.Text = drow[5].ToString();
}
}
Common.form1 = stnd;
stnd.Show();
}
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "stnMouseMove--站点鼠标移入事件出错:" + em.Message);
toolStripStatusLabel4.Text = "站点鼠标移入事件出错:" + em.Message;
}
}
///
/// 站点鼠标离开事件
///
private void stnMouseLeave(object sender, EventArgs e)
{
try
{
//panel_stnShow.Visible = false;
if (Common.form1 != null)
{
//Common.form1.Hide();
Common.form1.Close();
}
//Common.form1.Close();
//this.panelEx6.Refresh();
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "stnMouseLeave--站点鼠标离开事件出错:" + em.Message);
toolStripStatusLabel4.Text = "站点鼠标离开事件出错:" + em.Message;
}
}
///
/// 堆垛机鼠标移入事件
///
private void crnMouseMove(object sender, MouseEventArgs e)
{
int stano = 0, source_sta_no = 0;
Point p = MousePosition;
try
{
int ctn = -Int32.Parse((sender as DevComponents.DotNetBar.LabelX).Tag.ToString());
if (ctn > 0)
{
if (Common.form2 == null)
{
crndisplay crnd = new crndisplay();
crnd.TopLevel = false;
crnd.Parent = this;
crnd.BringToFront();
//crnd.TopMost = true;
//crnd.Left = (sender as DevComponents.DotNetBar.LabelX).Left + (sender as DevComponents.DotNetBar.LabelX).Width;
//crnd.Top = (sender as DevComponents.DotNetBar.LabelX).Top;
crnd.Left = 570;
crnd.Top = 130;
crnd.crnno.Text = ctn.ToString();
crnd.crnid.Text = Common.crn_i_Wrkno[ctn - 1].ToString();
crnd.crnsts.Text = Common.GetCrnStsName(Common.crn_i_crn_sts[ctn - 1]);
crnd.errinfo.Text = Common.crn_ycmm[ctn - 1].ToString() + ":" + Common.GetErr(Common.crn_ycmm[ctn - 1]);
DataView dv = Common.ExecAsrsSelect("select wrk_sts,io_type,sta_no,source_sta_no from dbo.asr_wrk_mast where wrk_no=" + Common.crn_i_Wrkno[ctn - 1]);
if (dv != null && dv.Count > 0)
{
foreach (DataRowView drv in dv)
{
int wrksts = Int32.Parse(drv[0].ToString());
int iotype = Int32.Parse(drv[1].ToString());
stano = Int32.Parse(drv[2].ToString());
source_sta_no = Int32.Parse(drv[3].ToString());
DataView dv1 = Common.ExecAsrsSelect("select wrk_desc from dbo.asr_bas_wrk_status where wrk_sts=" + wrksts);
if (dv1.Count > 0)
{
foreach (DataRowView drv1 in dv1)
{
crnd.wrksts.Text = drv1[0].ToString();
}
}
DataView dv2 = Common.ExecAsrsSelect("select io_desc from dbo.asr_bas_wrk_iotype where io_type=" + iotype);
if (dv2.Count > 0)
{
foreach (DataRowView drv2 in dv2)
{
crnd.iotype.Text = drv2[0].ToString();
}
}
}
}
crnd.sstn.Text = source_sta_no.ToString();//Class1.crn_i_fstn[ctn - 1].ToString();
crnd.dstn.Text = stano.ToString();
crnd.sloc.Text = Common.crn_s_Flocno[ctn - 1].ToString();
crnd.dloc.Text = Common.crn_s_Tlocno[ctn - 1].ToString();
Common.form2 = crnd;
crnd.Show();
}
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "crnMouseMove--堆垛机鼠标移入事件出错:" + em.Message);
toolStripStatusLabel4.Text = "堆垛机鼠标移入事件出错:" + em.Message;
}
}
///
/// 堆垛机鼠标离开事件
///
private void crnMouseLeave(object sender, EventArgs e)
{
try
{
if (Common.form2 != null)
{
Common.form2.Close();
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "stnMouseLeave--堆垛机鼠标离开事件出错:" + em.Message);
toolStripStatusLabel4.Text = "堆垛机鼠标离开事件出错:" + em.Message;
}
}
///
/// 输送机站点双击事件
///
private void stn_DoubleClick(object sender, EventArgs e)
{
try
{
if (Common.f1 == null)
{
plcset pst = new plcset(Int32.Parse((sender as DevComponents.DotNetBar.LabelX).Tag.ToString()));
pst.Show();
Common.f1 = pst;
}
else
{
Common.f1.Close();
Common.f1 = null;
plcset pst = new plcset(Int32.Parse((sender as DevComponents.DotNetBar.LabelX).Tag.ToString()));
pst.Show();
Common.f1 = pst;
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "stn_DoubleClick--输送机站点双击事件出错:" + em.Message);
toolStripStatusLabel4.Text = "输送机站点双击事件出错:" + em.Message;
}
}
private void pictureBox1_Click(object sender, EventArgs e)
{
try
{
if (Common.gi_Online_Flag == Common.ch_CMD_PAUSE)
{
pictureBox1.Load(Common.picpath + "stop48.png");
Common.gi_Online_Flag = Common.ch_CMD_START;
sysmode.Text = "运行中...";
sysmode.ForeColor = Color.Wheat;
group_command.Enabled = false;
}
else
{
pictureBox1.Load(Common.picpath + "start48.png");
Common.gi_Online_Flag = Common.ch_CMD_PAUSE;
sysmode.Text = "暂停中...";
sysmode.ForeColor = Color.Red;
group_command.Enabled = true;
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "pictureBox1_Click--系统启动暂停事件出错:" + em.Message);
toolStripStatusLabel4.Text = "系统启动暂停事件出错:" + em.Message;
}
}
#endregion
#region PLC画面控件事件
#endregion
#region 堆垛机画面控件事件
private void c3_Click(object sender, EventArgs e)
{
warn wr = new warn("你确定要强制3号堆垛机空闲吗?", "警告", 2);
wr.ShowDialog().ToString();
if (Common.sysinfo == true)
{
ClrCrnCmd(3);
Common.sysinfo = false;
}
}
private void c4_Click(object sender, EventArgs e)
{
warn wr = new warn("你确定要强制4号堆垛机空闲吗?", "警告", 2);
wr.ShowDialog().ToString();
if (Common.sysinfo == true)
{
ClrCrnCmd(4);
Common.sysinfo = false;
}
}
private void ClrCrnCmd(int crnno)
{
Common.crn_i_crnno[crnno - 1] = crnno;
//Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_IDLE;
Common.crn_i_Wrkno[crnno - 1] = 0;
//Common.crn_i_Errcod[crnno - 1] = 0;
Common.crn_i_kind[crnno - 1] = 0;
Common.crn_i_fstn[crnno - 1] = 0;
Common.crn_i_tstn[crnno - 1] = 0;
Common.crn_s_Flocno[crnno - 1] = "";
Common.crn_s_Tlocno[crnno - 1] = "";
Common.gi_crn_iotype[crnno - 1] = 0;
Common.crn_s_commandstr[crnno - 1] = "";
Common.gs_crncmd[crnno - 1] = "";
}
///
/// 手工下发堆垛机命令
///
///
private void setCrnCommand(string value)
{
try
{
if (rb_crn1.Checked)
{
if (Common.gs_crncmd[0] == "")
{
Common.gs_crncmd[0] = value;
tb_sendtocrn1.Text = value;
}
else
{
MessageBox.Show("堆垛机执行命令中");
return;
}
}
else if (rb_crn2.Checked)
{
if (Common.gs_crncmd[1] == "")
{
Common.gs_crncmd[1] = value;
tb_sendtocrn2.Text = value;
}
else
{
MessageBox.Show("堆垛机执行命令中");
return;
}
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "setCrnCommand--手工下发堆垛机命令:(" + value + ")" + em.Message);
toolStripStatusLabel4.Text = "手工下发堆垛机命令:(" + value + ")" + em.Message;
}
}
private void b_moveOhp_Click(object sender, EventArgs e)
{
string value = "109999" + "0000000" + "0003901";
setCrnCommand(value);
}
#endregion
#region 入出业务处理
///
/// 界面显示处理
///
private void t_display_Tick(object sender, EventArgs e)
{
try
{
Proc_UpdCrnAndStnFile();//更新设备档
DisplayMaps();//显示map状态
DisplayCrn();
//ClrCrnNoUpd();
//displaymode();
//主界面条码阅读器控件的数据显示。
lb_bar1.Text = Common.gs_barcode_data[0];
//lb_bar2.Text = Common.gs_barcode_data[1];
lv_PlcAError.Items.Clear();
for (int i = 0; i < Common.ci_plcerrcount; i++)
{
if (Common.plcerr[i] == "Y")
{
ListViewItem lvi = lv_PlcAError.Items.Add((lv_PlcAError.Items.Count + 1).ToString());
lvi.SubItems[0].ForeColor = Color.Red;
//lvi.SubItems[0].ForeColor = (Common.plcerr[i] == "Y") ? Color.Red : Color.Black;
lvi.SubItems.Add(Common.gs_PlcErrDesc[i]);
lvi.SubItems[1].ForeColor = Color.Red;
//lvi.SubItems[1].ForeColor = (Common.plcerr[i] == "Y") ? Color.Red : Color.Black;
lvi.SubItems.Add(Common.plcerr[i]);
lvi.SubItems[2].ForeColor = Color.Red;
//lvi.SubItems[2].ForeColor = (Common.plcerr[i] == "Y") ? Color.Red : Color.Black;
}
}
DateTime dt = DateTime.Now;
toolStripStatusLabel2.Text = " 当前时间: " + dt.ToLongTimeString() + " ";
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "t_display----" + em.Message);
}
}
///
/// 更新堆垛机和站点基本档
///
private void Proc_UpdCrnAndStnFile()
{
int crnsts = 0, wrk_no = 0, frm_sta = 0, to_sta = 0, hp_mk = 0, stn = 0, wrk_no1 = 0, i_buff = 0, i_wrk = 0, plcno = 0;
double wt = 0;
string frm_locno = "", s_loctype = "", to_locno = "", s_loading = "", s_autoing = "", s_canining = "", s_canouting = "", s_inreq1 = "", s_inreq2 = "", s_barcode = "", s_empty = "", s_out_mk = "", s_pick_mk = "", crn_err = "";
//string ls_in_enable = "N", ls_out_enable = "N";
//更新站点信息
for (int sta = 0; sta < Common.ci_sta_count; sta++)
{
plcno = Common.g_ari_staion_plc_no[sta] - 1;
s_autoing = Common.plc_s_autoing[Common.g_ari_staion_plc_no[sta] - 1, sta];
s_loading = Common.plc_s_loading[Common.g_ari_staion_plc_no[sta] - 1, sta];
s_canining = Common.plc_s_canining[Common.g_ari_staion_plc_no[sta] - 1, sta];
s_canouting = Common.plc_s_canouting[Common.g_ari_staion_plc_no[sta] - 1, sta];
s_inreq1 = Common.plc_s_inreq1[Common.g_ari_staion_plc_no[sta] - 1, sta];
s_inreq2 = Common.plc_s_inreq2[Common.g_ari_staion_plc_no[sta] - 1, sta];
wrk_no1 = Common.plc_i_Wrk_no[Common.g_ari_staion_plc_no[sta] - 1, sta];
s_loctype = Common.plc_s_loctype[Common.g_ari_staion_plc_no[sta] - 1, sta];
int i_loctype = 0;
if (s_loctype == "Y")
{
i_loctype = 2;
}
else
{
i_loctype = 1;
}
stn = Common.g_ari_staion[sta];
if (stn == 2)
{
wt = Common.gd_gross_wt[0];
}
else
{
wt = 0;
}
if ((s_autoing + s_loading + s_canining + s_canouting + s_inreq1 + s_inreq2 + wrk_no1.ToString() + s_loctype + wt.ToString()) != Common.gs_plc_data_pre[sta])
{
string sql = "update dbo.asr_bas_devp set autoing ='" + s_autoing + "' ,loading ='" + s_loading + "',canining='" + s_canining + "',canouting='" + s_canouting + "',inreq1='" + s_inreq1 + "',";
sql += " inreq2='" + s_inreq2 + "',wrk_no=" + wrk_no1 + ",ctn_type=" + i_loctype + ",gross_wt=" + wt + " where dev_no =" + stn + "";
if (Common.ExecAsrsModify(sql) == true)
{
Common.gs_plc_data_pre[sta] = s_autoing + s_loading + s_canining + s_canouting + s_inreq1 + s_inreq2 + wrk_no1.ToString() + s_loctype + wt.ToString();
}
}
}
//更新堆垛机信息
for (int crn = 0; crn < Common.ci_crn_count; crn++)
{
crnsts = Common.crn_i_crn_sts[crn];
wrk_no = Common.crn_i_Wrkno[crn];
frm_sta = Common.crn_i_fstn[crn];
to_sta = Common.crn_i_tstn[crn];
frm_locno = Common.crn_s_Flocno[crn];
to_locno = Common.crn_s_Tlocno[crn];
hp_mk = Common.crn_i_onHP[crn];
crn_err = Common.crn_ycmm[crn].ToString();
if ((crnsts.ToString() + wrk_no.ToString() + frm_sta.ToString() + to_sta.ToString() + frm_locno + to_locno + hp_mk.ToString() + crn_err) != Common.gs_crn_data_pre[crn])
{
string sql = "update dbo.asr_bas_crnp set crn_err='" + crn_err + "', crn_sts =" + crnsts + " ,wrk_no =" + wrk_no + ",frm_sta=" + frm_sta + ",to_sta=" + to_sta + ",frm_locno='" + frm_locno + "',";
sql += " to_locno='" + to_locno + "',hp_mk=" + hp_mk + " where crn_no =" + (crn + 1) + "";
if (Common.ExecAsrsModify(sql) == true)
{
Common.gs_crn_data_pre[crn] = crnsts.ToString() + wrk_no.ToString() + frm_sta.ToString() + to_sta.ToString() + frm_locno + to_locno + hp_mk.ToString() + crn_err;
}
}
}
}
///
/// 主控图画面显示
///
private void DisplayMaps()
{
int seq = 0, stnno = 0, ii = 0;
string stnseq = "";
for (int stn = 0; stn < Common.ci_sta_count; stn++)
{
//noauto
seq = Common.g_ari_staion_plc_no[stn] - 1;
stnseq = Common.g_ari_staion[stn].ToString();
stnno = Int32.Parse(stnseq);
//模拟数据
// Common.plc_s_autoing[seq, stn] = "Y";
if (Common.plc_s_autoing[seq, stn] == "N")
{
try
{
(this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).BackColor = Color.DarkGray;
(this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).ForeColor = SystemColors.Window;
}
catch (Exception)
{
}
}
//auto
if (Common.plc_s_autoing[seq, stn] == "Y" && Common.plc_s_loading[seq, stn] == "N" && Common.plc_i_Wrk_no[seq, stn] == 0)
{
try
{
(this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).BackColor = Color.Lime;
(this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).ForeColor = Color.Black;
}
catch (Exception)
{
}
}
//auto+load+ID
if (Common.plc_s_autoing[seq, stn] == "Y" && Common.plc_s_loading[seq, stn] == "Y" && Common.plc_i_Wrk_no[seq, stn] > 0)
{
try
{
(this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).BackColor = Color.Red;
(this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).ForeColor = Color.Black;
}
catch (Exception)
{
}
}
//auto+load
if (Common.plc_s_autoing[seq, stn] == "Y" && Common.plc_s_loading[seq, stn] == "Y" && Common.plc_i_Wrk_no[seq, stn] == 0)
{
try
{
(this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).BackColor = Color.Fuchsia;
(this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).ForeColor = Color.Black;
}
catch (Exception)
{
}
}
//auto+ID
if (Common.plc_s_autoing[seq, stn] == "Y" && Common.plc_s_loading[seq, stn] == "N" && Common.plc_i_Wrk_no[seq, stn] > 0)
{
try
{
(this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).BackColor = Color.Yellow;
(this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).ForeColor = Color.Black;
}
catch (Exception)
{
}
}
if (Common.plc_i_Wrk_no[seq, stn] > 0)
{
(this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).Text = stnseq + "[" + Common.plc_i_Wrk_no[seq, stn] + "]";
}
else
{
(this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).Text = stnseq;
}
}
for (int i = 0; i < Common.ci_crn_count; i++)
{
//Common.crn_dqps[i] = 30;
//堆垛机位置
if (Common.crn_dqps[i] < 1)
{
(this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).Left = 1176;
}
else
{
(this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).Left = 1176 - 17 * (Common.crn_dqps[i]);
}
//堆垛机颜色
if (Common.Mode[i] != 3 && Common.AlarmCode[i] == 0)
{
if (Common.Mode[i] == 1)
{
(this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_manual.png");
(this.Controls.Find("crnMode" + (i + 1).ToString(), true)[0] as System.Windows.Forms.Label).Text = "手动模式";
}
else if (Common.Mode[i] == 0)
{
(this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_manual.png");
(this.Controls.Find("crnMode" + (i + 1).ToString(), true)[0] as System.Windows.Forms.Label).Text = "离线模式";
}
else if (Common.Mode[i] == 2)
{
(this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_manual.png");
(this.Controls.Find("crnMode" + (i + 1).ToString(), true)[0] as System.Windows.Forms.Label).Text = "手动模式";
}
continue;
}
if (Common.AlarmCode[i] > 0)
{
(this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_error.png");
(this.Controls.Find("crnMode" + (i + 1).ToString(), true)[0] as System.Windows.Forms.Label).Text = "出现异常";
continue;
}
else if (Common.Mode[i] == 3 && Common.CrnState[i] == 0)
{
(this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_auto.png");
(this.Controls.Find("crnMode" + (i + 1).ToString(), true)[0] as System.Windows.Forms.Label).Text = "联机模式";
continue;
}
else if (Common.Mode[i] == 3 && Common.CrnState[i] > 0 && Common.crn_i_kind[i] == 7)//(Common.crn_rkz[i] == true && Common.crn_dnmsz[i] == true)
{
(this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_store.png");
continue;
}
else if (Common.Mode[i] == 3 && Common.CrnState[i] > 0 && Common.crn_i_kind[i] == 8)//(Common.crn_ckz[i] == true && Common.crn_dnmsz[i] == true)
{
(this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_retrieve.png");
continue;
}
else if (Common.Mode[i] == 3 && Common.CrnState[i] > 0 && Common.crn_i_kind[i] == 12)
{
(this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_loctoloc.png");
continue;
}
else if (Common.Mode[i] == 3 && Common.CrnState[i] > 0 && Common.crn_i_kind[i] == 11)
{
(this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_stntostn.png");
continue;
}
}
}
///
/// 更新堆垛机画面显示
///
private void DisplayCrn()
{
for (int k = 0; k < Common.ci_crn_count; k++)
{
//this.frmdata.Items[k].SubItems[1].Text = "";
//this.frmdata.Items[k].SubItems[2].Text = "";
//s1.BringToFront();
this.crnlistdata.Items[k].SubItems[1].Text = Common.GetCrnStsName(Common.CrnState[k]);
this.crnlistdata.Items[k].SubItems[2].Text = Common.TaskNo[k].ToString();
this.crnlistdata.Items[k].SubItems[3].Text = Common.crn_i_fstn[k].ToString();
this.crnlistdata.Items[k].SubItems[4].Text = Common.crn_i_tstn[k].ToString();
this.crnlistdata.Items[k].SubItems[5].Text = Common.crn_s_Flocno[k].ToString();
this.crnlistdata.Items[k].SubItems[6].Text = Common.crn_s_Tlocno[k].ToString();
string errmsg = (Common.AlarmCode[k] > 0) ? Common.GetErr(Common.AlarmCode[k]) : "0";
this.crnlistdata.Items[k].SubItems[7].Text = errmsg;
this.crnlistdata.Items[k].SubItems[8].Text = Common.crn_i_onHP[k].ToString();
this.crnlistdata.Items[k].SubItems[9].Text = Common.crn_s_commandstr[k].ToString();
this.crnlistdata.Items[k].SubItems[10].Text = Common.WalkSpeed[k].ToString("#0.00");
this.crnlistdata.Items[k].SubItems[11].Text = Common.LiftSpeed[k].ToString("#0.00");
this.crnlistdata.Items[k].SubItems[12].Text = Common.ForkSpeed[k].ToString("#0.00");
this.crnlistdata.Items[k].SubItems[13].Text = Common.XDistance[k].ToString("#0.00");
this.crnlistdata.Items[k].SubItems[14].Text = Common.YDistance[k].ToString("#0.00");
this.crnlistdata.Items[k].SubItems[15].Text = Common.XDuration[k].ToString("#0.00");
this.crnlistdata.Items[k].SubItems[16].Text = Common.YDuration[k].ToString("#0.00");
}
//for (int kk = 0; kk < Common.ci_crn_count; kk++)
//{
// this.crnstslists.Items[kk].SubItems[1].Text = Common.PosX[kk].ToString();
// this.crnstslists.Items[kk].SubItems[2].Text = Common.PosY[kk].ToString();
// this.crnstslists.Items[kk].SubItems[3].Text = Common.PosXmm[kk].ToString();
// this.crnstslists.Items[kk].SubItems[4].Text = Common.PosYmm[kk].ToString();
// this.crnstslists.Items[kk].SubItems[5].Text = Common.AlarmCode[kk].ToString(); ;
//}
}
///
/// 堆垛机出库站到出库站
///
private void Proc_CrnStnToOutStn()
{
try
{
for (int i = 0; i < 2; i++)
{
int stnno = 0, seqno = 0;
string s_slocno = "", s_dlocno = "", s_picking = "N", s_emptymk = "N";
int i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0;//, ledno = 0;
string s_sstano = "", s_dstano = "", ls_mat_no = "";
DateTime dt1 = System.DateTime.Now;
switch (i)
{
case 0:
stnno = 100;
plcno = 0;
//ledno = 0;
break;
case 1:
stnno = 200;
plcno = 0;
//ledno = 0;
break;
}
seqno = Common.GetStnSeq(stnno);
string s_autoing = Common.plc_s_autoing[plcno, seqno];
string s_loading = Common.plc_s_loading[plcno, seqno];
string s_inreq1 = Common.plc_s_inreq1[plcno, seqno];
int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno];
string s_next_stn = Common.plc_s_next_stn[plcno, seqno];
if (s_autoing == "Y" && s_loading == "Y" && (i_wrk_no == 0 || int.Parse(s_next_stn) == 0))
{
try
{
string sql = "select top 1 source_loc_no,loc_no,source_sta_no,sta_no,picking,wrk_no,crn_no,wrk_sts,io_type,empty_mk from dbo.asr_wrk_mast where source_sta_no=" + stnno + " and wrk_sts=12 and io_type>100 order by io_pri desc,io_time desc,wrk_no ASC ";
DataView dv = Common.ExecAsrsSelect(sql);
if (dv.Count <= 0)
{
lb_CrnStnToOutStn.Text = "查询无待出数据需要处理--wrk_sts=12";
continue;
}
foreach (System.Data.DataRowView drow in dv)
{
s_slocno = drow[0].ToString();
s_dlocno = drow[1].ToString();
s_sstano = drow[2].ToString();
s_dstano = drow[3].ToString();
s_picking = drow[4].ToString();
i_wrkno = Convert.ToInt32(drow[5].ToString());
i_crnno = Convert.ToInt32(drow[6].ToString());
i_wrksts = Convert.ToInt32(drow[7].ToString());
i_iotype = Convert.ToInt32(drow[8].ToString());
s_emptymk = drow[9].ToString();
}
}
catch (Exception e)
{
lb_CrnStnToOutStn.Text = "查询出库数据出错-wrk_sts=12-" + e.Message;
continue;
}
//判断工作状态及站号是否符合
if (i_iotype < 100 || s_sstano == "" || s_dstano == "")
{
lb_CrnStnToOutStn.Text = "工作档数据不符合条件--入出/站点";
continue;
}
//////判断吊车是否实际已完成,且电脑状态在move中,以备电脑进行更新工作档
//if (Common.Mode[i_crnno - 1] != 3 || Common.CrnState[i_crnno - 1] != 90
// || Common.AlarmCode[i_crnno - 1] != 0 || Common.TaskNo[i_crnno - 1] != i_wrkno)
//{
// lb_CrnStnToOutStn.Text = "吊车非空闲状态";
// continue;
//}
//判断plc队列是否满,最多5个
if (Common.GetPlcQuereCount(plcno) >= Common.ci_plc_MAX)
{
lb_CrnStnToOutStn.Text = "PLC队列已满";
continue;
}
if (Common.Mode[i_crnno - 1] == 3 && Common.AlarmCode[i_crnno - 1] == 0 && (
(Common.CrnState[i_crnno - 1] == 90 && Common.TaskNo[i_crnno - 1] == i_wrkno)
|| (Common.CrnState[i_crnno - 1] == 0 && Common.TaskNo[i_crnno - 1] == 0))
&& Common.TaskFlag[i_crnno - 1] == 0
)
{
bool result = Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts =14 ,crn_end_time =getdate() where wrk_no =" + i_wrkno + "");
if (result)
{
Common.crn_i_crnno[i_crnno - 1] = i_crnno;
Common.crn_i_Wrkno[i_crnno - 1] = 0;
Common.crn_i_crn_sts[i_crnno - 1] = Common.ci_CRN_STS_IDLE;
Common.crn_i_Errcod[i_crnno - 1] = 0;
Common.crn_i_kind[i_crnno - 1] = 0;
Common.crn_i_fstn[i_crnno - 1] = 0;
Common.crn_i_tstn[i_crnno - 1] = 0;
Common.crn_s_Flocno[i_crnno - 1] = "";
Common.crn_s_Tlocno[i_crnno - 1] = "";
Common.gi_crn_iotype[i_crnno - 1] = 0;
Common.TaskFlag[i_crnno - 1] = 1;
Common.AddPlcQuereCmd(plcno, "04" + i_wrkno.ToString("0000") + s_sstano.PadLeft(4, '0') + s_dstano.PadLeft(4, '0'));
}
else
{
lb_CrnStnToOutStn.Text = "更新工作档状态为14失败--wrk_sts=14";
}
}
}
else
{
lb_CrnStnToOutStn.Text = "站点不符合条件--要求自动/有物/无ID";
}
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "Proc_CrnStnToOutStn----" + em.Message);
}
}
///
/// 拣料、并板、盘点再入库
///
private void Proc_StnToCrnStn_pick()
{
try
{
int stnno = 0, seqno = 0, d_stnno = 0, ledno = 0;
string s_dlocno = "", s_slocno = "", sql = "";
int i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0;
string s_sstano = "", s_dstano = "", s_ioTime = "";
DateTime dt1 = System.DateTime.Now;
for (int i = 0; i < 2; i++)
{
switch (i)
{
case 0:
stnno = 104;
d_stnno = 101;
plcno = 0;
ledno = 0;
break;
case 1:
stnno = 204;
d_stnno = 201;
plcno = 0;
ledno = 1;
break;
}
seqno = Common.GetStnSeq(stnno);
string s_autoing = Common.plc_s_autoing[plcno, seqno];
string s_loading = Common.plc_s_loading[plcno, seqno];
string s_inreq1 = Common.plc_s_canining[plcno, seqno];
int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno];
string s_next_stn = Common.plc_s_next_stn[plcno, seqno];
if (s_autoing == "Y" && s_loading == "Y" && s_inreq1 == "Y"
&& i_wrk_no > 0 && (s_next_stn == stnno.ToString() || Common.plc_i_pakmk[plcno, seqno] == 0))
{
sql = "select top 1 loc_no,source_sta_no,sta_no,wrk_no,crn_no,wrk_sts,io_type,source_loc_no,io_time from asr_wrk_mast where wrk_no=" + i_wrk_no + " and wrk_sts=14 and (io_type=103 or io_type=107 or io_type=104) ";
try
{
DataView dv = Common.ExecAsrsSelect(sql);
if (dv == null || dv.Count <= 0)
{
lb_StnToCrnStn.Text = "无拣料数据处理--wrk_sts=14";
continue;
}
foreach (DataRowView drow in dv)
{
s_dlocno = drow[0].ToString();
s_sstano = drow[1].ToString();
s_dstano = drow[2].ToString();
i_wrkno = Convert.ToInt32(drow[3].ToString());
i_crnno = Convert.ToInt32(drow[4].ToString());
i_wrksts = Convert.ToInt32(drow[5].ToString());
i_iotype = Convert.ToInt32(drow[6].ToString());
s_slocno = drow[7].ToString();
s_ioTime = drow[8].ToString();
}
}
catch (Exception e)
{
lb_StnToCrnStn.Text = "查询工作档数据出错--" + e.Message;
continue;
}
if ((i_iotype != 103 && i_iotype != 104 && i_iotype != 107) || s_dstano == "" || s_sstano == "")
{
lb_StnToCrnStn.Text = "工作档资料不符--入出类型/目标站/入库站";
continue;
}
if (Common.GetPlcQuereCount(plcno) >= Common.ci_plc_MAX)
{
lb_StnToCrnStn.Text = "PLC命令队列已满";
continue;
}
int i_dstano = Common.GetRestoreStnByPick(i_crnno, stnno);
string sqlWrk = " insert into dbo.asr_wrk_mast_log select * from dbo.asr_wrk_mast where wrk_no=" + i_wrkno + "; ";
sqlWrk += " insert into dbo.asr_wrk_detl_log select * from dbo.asr_wrk_detl where wrk_no=" + i_wrkno + "; ";
sqlWrk += " update dbo.asr_wrk_mast set io_type=io_type-50,source_loc_no='',loc_no='" + s_slocno + "',wrk_sts=2, ";
sqlWrk += " source_sta_no=" + d_stnno + ",sta_no=" + i_dstano + ",io_time='" + dt1 + "' where wrk_no=" + i_wrkno + "; ";
sqlWrk += " update dbo.asr_wrk_detl set io_time='" + dt1 + "' where wrk_no=" + i_wrkno + "; ";
sqlWrk += " update dbo.asr_loc_mast set loc_sts='Q' where loc_no='" + s_slocno + "' and loc_sts='P'; ";
if (Common.ExecAsrsModify(sqlWrk) == true)
{
Common.AddPlcQuereCmd(plcno, "04" + i_wrkno.ToString("0000") + i_dstano.ToString("0000") + i_dstano.ToString("0000"));
Common.plc_i_pakmk[plcno, seqno] = 1;
Common.plc_i_Wrk_no[plcno, seqno] = i_wrkno;
Common.plc_s_next_stn[plcno, seqno] = i_dstano.ToString();
string ledMsg = "启动拣料入库;库位号" + s_slocno + ";工作号" + i_wrkno;
if (Common.gs_led_data_pre[ledno] != ledMsg)
{
Common.gs_led_data[ledno] = ledMsg;
Common.gs_led_data_pre[ledno] = ledMsg;
}
}
else
{
lb_StnToCrnStn.Text = "更新工作档失败--wrk_sts=2";
}
}
else
{
lb_StnToCrnStn.Text = "站点不符合条件--要求自动/有物/可入/需求入/有ID";
}
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "Proc_StnToCrnStn_pick----" + em.Message);
}
}
///
/// 库位移转
///
///
private void Proc_LoctoLoc(int crnno)
{
try
{
//int stnno = 0, stnnor = 0, seqno = 0, wrksts = 0, restnno = 0;
string s_slocno = "", s_dlocno = "", sql = "", locsts = "", locsts1 = "", s_inabled = "", s_outabled = "";
int i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0;
if (Common.Mode[crnno] != Common.ci_CRN_ONLINE || Common.CrnState[crnno] != Common.ci_CRN_STS_IDLE || Common.TaskNo[crnno] != 0)
{
return;
}
sql = "select TOP 1 source_loc_no,loc_no,wrk_no,crn_no,wrk_sts,io_type from dbo.asr_wrk_mast where wrk_sts=11 and io_type=11 and crn_no=" + (crnno + 1) + " order by io_time,wrk_no";
//sql = "select TOP 1 source_loc_no,loc_no,wrk_no,crn_no,wrk_sts,io_type from dbo.asr_wrk_mast where wrk_sts=11 and (io_type=11 or io_type=110) and crn_no=" + (crnno + 1) + " order by io_time,wrk_no";
try
{
DataView dv = Common.ExecAsrsSelect(sql);
if (dv.Count <= 0) return;
foreach (System.Data.DataRowView dvrow in dv)
{
s_slocno = dvrow[0].ToString();
s_dlocno = dvrow[1].ToString();
i_wrkno = Convert.ToInt32(dvrow[2].ToString());
i_crnno = Convert.ToInt32(dvrow[3].ToString());
i_wrksts = Convert.ToInt32(dvrow[4].ToString());
i_iotype = Convert.ToInt32(dvrow[5].ToString());
}
}
catch (Exception e)
{
//datasts.Text = "工作档信息不正确, 无法进行库位移转 , 请检查!";
return;
}
try
{
DataView dv_locsts = Common.ExecAsrsSelect("select loc_sts from dbo.asr_loc_mast where loc_no='" + s_slocno + "'");
if (dv_locsts.Count <= 0) return;
foreach (System.Data.DataRowView dvrow in dv_locsts)
{
locsts = dvrow[0].ToString();
}
}
catch (Exception e)
{
//datasts.Text = "源库位状态不正确, 无法进行库位移转 , 请检查!";
return;
}
try
{
DataView dv_locsts1 = Common.ExecAsrsSelect("select loc_sts from dbo.asr_loc_mast where loc_no='" + s_dlocno + "'");
if (dv_locsts1.Count <= 0) return;
foreach (System.Data.DataRowView dvrow in dv_locsts1)
{
locsts1 = dvrow[0].ToString();
}
}
catch (Exception e)
{
//datasts.Text = "目标库位状态不正确, 无法进行库位移转 , 请检查!";
return;
}
//int crn_no = crnno + 1;
if (locsts != "R" && locsts1 != "S") return;
try
{
DataView dv_crnsts = Common.ExecAsrsSelect("select in_enable,out_enable from dbo.asr_bas_crnp where crn_no=" + (crnno + 1) + "");
foreach (System.Data.DataRowView dvrow in dv_crnsts)
{
s_inabled = dvrow[0].ToString();
s_outabled = dvrow[1].ToString();
}
}
catch (Exception e)
{
//datasts.Text = "得到堆垛机状态信息错误, 无法进行库位移转 , 请检查!";
return;
}
if (s_inabled != "Y" && s_outabled != "Y")
{
//datasts.Text = (crnno + 1).ToString() + " 堆垛机状态信息错误, 无法进行库位移转 , 请检查!";
return;
}
//string srow = "", sbay = "", slev = "", drow = "", dbay = "", dlev = "";
//srow = s_slocno.Substring(0, 2);
//sbay = s_slocno.Substring(2, 3);
//slev = s_slocno.Substring(5, 2);
//drow = s_dlocno.Substring(0, 2);
//dbay = s_dlocno.Substring(2, 3);
//dlev = s_dlocno.Substring(5, 2);
if (Common.gs_crncmd[crnno] == "")
{
Common.gs_crncmd[crnno] = "12" + i_wrkno.ToString().PadLeft(4, '0') + s_slocno + s_dlocno;
return;
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "Proc_LoctoLoc----" + em.Message);
}
}
///
/// 入库站,根据条码扫描生成入库工作档,工作状态1
///
private void Proc_GenerateStoreWrkFile()
{
try
{
for (int i = 0; i < 2; i++)
{
int plcno = 0, seqno = 0, li_wrkno = 0, li_stano = 0, li_crnno = 0;
int li_loctype = 0, li_rStano = 0;
//double ld_wt = 0;
string ls_locno = "", sql = "";
string ls_barcode = "";
DateTime ldt_date = DateTime.Now;
int ledno = 0;
switch (i)
{
case 0:
li_stano = 104;
li_rStano = 103; //退库站
plcno = 0;
ledno = 0;
break;
case 1:
li_stano = 204;
li_rStano = 203; //退库站
plcno = 0;
ledno = 1;
break;
}
//ld_wt = Common.gd_gross_wt[0];
seqno = Common.GetStnSeq(li_stano);
ls_barcode = Common.gs_barcode_data[i];
string s_autoing = Common.plc_s_autoing[plcno, seqno];
string s_loading = Common.plc_s_loading[plcno, seqno];
string s_inreq1 = Common.plc_s_canining[plcno, seqno];
int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno];
string s_emptyMk = Common.plc_s_inreq1[plcno, seqno]; //空托盘需求信号
string s_next_stn = Common.plc_s_next_stn[plcno, seqno];
if (s_autoing == "Y" && s_loading == "Y" && s_inreq1 == "Y" && s_emptyMk == "N"
&& s_next_stn == li_stano.ToString() && ls_barcode != ""
&& i_wrk_no == 9998 && Common.plc_i_pakmk[plcno, seqno] == 0)
{
if (ls_barcode == "" || ls_barcode == null || ls_barcode == "00000000")
{ //超重、条码为空
lb_AnalyzeScale.Text = "条码为空--条码" + ls_barcode;
//toolStripStatusLabel4.Text = "4";
continue;
}
else
{
//sql = "select top 1 wrk_no,loc_no,source_sta_no,sta_no,crn_no,wrk_sts,io_type from asr_wrk_mast where source_sta_no=" + li_stano + " and wrk_sts=1 and (io_type=1 or io_type=10) order by io_pri desc,io_time,wrk_no ASC ";
sql = "select top 1 wrk_no,loc_no,source_sta_no,sta_no,crn_no,wrk_sts,io_type from asr_wrk_mast where source_sta_no=" + li_stano + " and wrk_sts=2 and barcode='" + ls_barcode + "' and (io_type=1 or io_type=10) order by io_pri desc,io_time,wrk_no ASC ";
DataView dv_wrk = Common.ExecAsrsSelect(sql);
if (dv_wrk != null && dv_wrk.Count > 0)
{
int lwrkno = 0;
int staNo = 0;
foreach (DataRowView drow in dv_wrk)
{
lwrkno = int.Parse(drow[0].ToString());
staNo = int.Parse(drow[3].ToString());
}
lb_AnalyzeScale.Text = "工作档中已存在该站状态为1的数据,工作号-" + lwrkno;
//Common.AddPlcQuereCmd(plcno, "02" + lwrkno.ToString("0000") + li_stano.ToString("0000") + staNo.ToString("0000"));
continue;
}
string li_barcodetype = ls_barcode.Substring(0, 1);
if (li_barcodetype == "8") //塑料件,放5,7,9,11
{
li_loctype = 1;
}
else if (li_barcodetype == "1") //原材料,放1,2,3层
{
li_loctype = 2;
}
else if (li_barcodetype == "2" || li_barcodetype == "3") //冲压件,放4,6,8层
{
li_loctype = 3;
}
else
{
//li_loctype = 1;
continue;
}
string postData = "";
string url = Common.HttpUrl;
JSONObject json = new JSONObject();
json.put("ioType", 1);
json.put("sourceStaNo", li_stano);
json.put("barcode", ls_barcode);
json.put("locType1", li_loctype);
postData = json.ToString();
string responseData = HttpPostHelper.doHttpPost(url, postData);
JSONObject jsonRes = new JSONObject(responseData);
int code = jsonRes.getInt("code");
if (code == 200)
{
JSONObject data = new JSONObject(jsonRes.getString("data"));
int e_staNo = data.getInt("staNo");
li_crnno = data.getInt("crnNo");
ls_locno = data.getString("locNo");
li_wrkno = data.getInt("workNo");
Common.gs_barcode_data[i] = "";
Common.AddPlcQuereCmd(plcno, "04" + li_wrkno.ToString("0000") + li_stano.ToString("0000") + e_staNo.ToString("0000"));
Common.plc_i_Wrk_no[plcno, seqno] = li_wrkno;
Common.plc_s_next_stn[plcno, seqno] = e_staNo.ToString();
Common.plc_i_pakmk[plcno, seqno] = 1;
Common.plc_s_canining[plcno, seqno] = "N";
Common.plc_s_inreq1[plcno, seqno] = "N";
toolStripStatusLabel4.Text = "";
string ledMsg = li_stano + "站入库启动;库位号" + ls_locno + ";工作号" + li_wrkno;
if (Common.gs_led_data_pre[ledno] != ledMsg)
{
Common.gs_led_data[ledno] = ledMsg;
Common.gs_led_data_pre[ledno] = ledMsg;
}
}
else
{
string ledMsg = li_stano + "站入库失败;" + jsonRes.getString("msg") + ";";
if (Common.gs_led_data_pre[ledno] != ledMsg)
{
Common.gs_led_data[ledno] = ledMsg;
Common.gs_led_data_pre[ledno] = ledMsg;
}
toolStripStatusLabel4.Text = jsonRes.getString("msg");
continue;
}
#region
//int stnType = 1;
//if (li_stano > 2000)
//{
// stnType = 2;
//}
//string sqlDetl = "", sqlWaitIn = "";
//sql = " select matnr,maktx,werks,anfme,unit from cust_wait_pakin where barcode='" + ls_barcode + "'";
//DataView dv_mat = Common.ExecAsrsSelect(sql);
//if (dv_mat != null && dv_mat.Count > 0)
//{
// li_wrkno = Common.GetWrkno(0);
// if (li_wrkno == 0)
// {
// lb_AnalyzeScale.Text = "生成工作号失败;" + ls_barcode;
// continue;
// }
// ls_locno = Common.GetLocNo(1, li_loctype, 0, li_stano, stnType);
// if (ls_locno == "")
// {
// //toolStripStatusLabel4.Text = "磅秤站入库得到工作号和库位号失败";
// lb_AnalyzeScale.Text = "查找库位失败;库位" + ls_locno;
// continue;
// }
// foreach (DataRowView drow in dv_mat)
// {
// string matnr = "", maktx = "", werks = "", anfme = "", unit = "";
// matnr = drow[0].ToString();
// maktx = drow[1].ToString();
// maktx = maktx.Replace(';', ',');
// werks = drow[2].ToString();
// anfme = drow[3].ToString();
// unit = drow[4].ToString();
// sqlDetl += " insert into asr_wrk_detl(wrk_no,io_time,matnr,maktx,werks,anfme,unit,barcode) ";
// sqlDetl += " values(" + li_wrkno + ",'" + ldt_date + "','";
// sqlDetl += " '" + matnr + "','" + maktx + "','" + werks + "'," + anfme + ",'" + unit + "','" + ls_barcode + "');";
// sqlWaitIn += " update cust_wait_pakin set loc_no='" + ls_locno + "',status='Y' where barcode='" + ls_barcode + "' and matnr='" + matnr + "';";
// //break;
// }
//}
//else
//{
// lb_AnalyzeScale.Text = "无此入库条码数据--" + ls_barcode;
// ///查询不到数据时退库到出库站
// //Common.AddPlcQuereCmd(plcno, "04" + "9999" + li_stano.ToString().PadLeft(4, '0') + li_rStano.ToString().PadLeft(4, '0'));
// continue;
//}
//int li_crnrow = int.Parse(ls_locno.Substring(0, 2));
//li_crnno = (li_crnrow + 1) / 2;
//int e_staNo = Common.getIoStaNo(1, li_crnno, li_stano);
//sql = sqlDetl;
//sql += " insert into asr_wrk_mast(wrk_no,wrk_sts,io_time,io_type,crn_no,io_pri,loc_no,sta_no,source_sta_no,barcode,ctn_type) ";
//sql += " values(" + li_wrkno + ",2,'" + ldt_date + "',1," + li_crnno + ",10,'" + ls_locno + "'," + e_staNo + "," + li_stano + ",'" + ls_barcode + "'," + li_loctype + "); ";
//sql += " update asr_loc_mast set loc_sts='S' where loc_no='" + ls_locno + "';";
//sql += sqlWaitIn;
//bool result = Common.ExecAsrsModify(sql);
//if (result)
//{
// Common.gs_barcode_data[i] = "";
// Common.AddPlcQuereCmd(plcno, "04" + li_wrkno.ToString("0000") + li_stano.ToString("0000") + e_staNo.ToString("0000"));
// Common.plc_i_Wrk_no[plcno, seqno] = li_wrkno;
// Common.plc_s_next_stn[plcno, seqno] = e_staNo.ToString();
// Common.plc_i_pakmk[plcno, seqno] = 1;
// Common.plc_s_inreq1[plcno, seqno] = "N";
// toolStripStatusLabel4.Text = "";
//}
//else
//{
// lb_AnalyzeScale.Text = "插入表asr_wrk_mast数据,更新asr_loc_mast表失败";
// //toolStripStatusLabel4.Text = "8";
//}
//Common.gs_barcode = "";
#endregion
}
}
else
{
if (s_loading == "N")
{
//Common.gs_barcode_data[i] = "";
//lb_bar1.Text = "";
}
lb_AnalyzeScale.Text = "站点不符合条件--要求自动/有物/可入/有ID";
//toolStripStatusLabel4.Text = "3";
}
}
}
catch (Exception em)
{
//common.Class1.scal = true;
//toolStripStatusLabel4.Text = "9" + r.Message;
lb_AnalyzeScale.Text = "Proc_GenerateStoreWrkFile出错--" + em.Message;
Common.WriteLogFile("WcsError", "Proc_GenerateStoreWrkFile----" + em.Message);
return;
}
}
///
/// 入库站,入库站点至堆垛机入库站
/// 查找工作档状态为1的资料,下达搬运指令给PLC
/// 工作状态1-->2
///
private void Proc_StnToCrnStn()
{
try
{
int stnno = 0, seqno = 0, ledno = 0;
string s_dlocno = "", sql = "";
int i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0;
string s_sstano = "", s_dstano = "";
DateTime dt1 = System.DateTime.Now;
for (int i = 0; i < 2; i++)
{
switch (i)
{
case 0:
stnno = 104;
plcno = 0;
ledno = 0;
break;
case 1:
stnno = 204;
plcno = 0;
ledno = 1;
break;
}
seqno = Common.GetStnSeq(stnno);
//li_wrkno = Common.plc_i_Wrk_no[plcno, seqno];
string s_autoing = Common.plc_s_autoing[plcno, seqno];
string s_loading = Common.plc_s_loading[plcno, seqno];
string s_canining = Common.plc_s_canining[plcno, seqno];
string s_canouting = Common.plc_s_canouting[plcno, seqno];
string s_inreq1 = Common.plc_s_inreq1[plcno, seqno];
string s_inreq2 = Common.plc_s_inreq2[plcno, seqno];
int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno];
string s_next_stn = Common.plc_s_next_stn[plcno, seqno];
if (s_autoing == "Y" && s_loading == "Y"
&& s_canining == "Y" && s_inreq2 == "Y"
&& i_wrk_no >= 0 && (s_next_stn == stnno.ToString() || Common.plc_i_pakmk[plcno, seqno] == 1))
{
sql = "select top 1 loc_no,source_sta_no,sta_no,wrk_no,crn_no,wrk_sts,io_type from asr_wrk_mast where source_sta_no=" + stnno + " and wrk_sts=1 and (io_type=1 or io_type=10) order by io_pri desc,io_time,wrk_no ASC ";
//sql = "select top 1 loc_no,source_sta_no,sta_no,wrk_no,crn_no,wrk_sts,io_type from asr_wrk_mast where wrk_no=" + i_wrk_no + " and source_sta_no=" + stnno + " and wrk_sts=1 and (io_type=1 or io_type=10) order by io_pri desc,io_time,wrk_no ASC ";
try
{
DataView dv = Common.ExecAsrsSelect(sql);
if (dv.Count <= 0)
{
lb_StnToCrnStn.Text = "无入库数据处理--wrk_sts=1";
continue;
}
foreach (DataRowView drow in dv)
{
s_dlocno = drow[0].ToString();
s_sstano = drow[1].ToString();
s_dstano = drow[2].ToString();
i_wrkno = Convert.ToInt32(drow[3].ToString());
i_crnno = Convert.ToInt32(drow[4].ToString());
i_wrksts = Convert.ToInt32(drow[5].ToString());
i_iotype = Convert.ToInt32(drow[6].ToString());
}
}
catch (Exception e)
{
lb_StnToCrnStn.Text = "查询工作档数据出错--" + e.Message;
continue;
}
if (i_wrksts > 2 || (i_iotype != 1 && i_iotype != 10) || s_dstano == "" || s_sstano == "")
{
lb_StnToCrnStn.Text = "工作档资料不符--工作状态/入出类型/目标站/入库站";
continue;
}
if (Common.GetPlcQuereCount(plcno) >= Common.ci_plc_MAX)
{
lb_StnToCrnStn.Text = "PLC命令队列已满";
continue;
}
if (Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts =2 where wrk_no =" + i_wrkno + "") == true)
{
Common.AddPlcQuereCmd(plcno, "04" + i_wrkno.ToString("0000") + s_sstano.PadLeft(4, '0') + s_dstano.PadLeft(4, '0'));
//Common.plc_i_pakmk[plcno, seqno] = 2;
Common.plc_i_Wrk_no[plcno, seqno] = i_wrkno;
Common.plc_s_next_stn[plcno, seqno] = s_dstano;
string ledMsg = "入库启动成功;库位号" + s_dlocno + ";工作号" + i_wrkno;
if (Common.gs_led_data_pre[ledno] != ledMsg)
{
Common.gs_led_data[ledno] = ledMsg;
Common.gs_led_data_pre[ledno] = ledMsg;
}
}
else
{
lb_StnToCrnStn.Text = "更新工作档失败--wrk_sts=2";
}
}
else
{
lb_StnToCrnStn.Text = "站点不符合条件--要求自动/有物/可入/有ID";
}
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "Proc_StnToCrnStn----" + em.Message);
}
}
///
/// 插入物料数据到ASRS基本档
///
///
private bool insertBasMatCode(DataView dv_mat)
{
bool result = false;
string str1 = "", str2 = "", str3 = "", str4 = "", str5 = "", str6 = "", str7 = "", str8 = "", str9 = "", str10 = "";
string str11 = "", str12 = "", str13 = "", str14 = "", str15 = "", str16 = "", str17 = "", str18 = "", str19 = "", str20 = "";
string str21 = "", str22 = "", str23 = "";
string ls_mat_no = "", ls_mat_name = "", date1 = "";
double num1 = 0, num2 = 0, num3 = 0, num4 = 0, num5 = 0, num6 = 0;
try
{
if (dv_mat != null && dv_mat.Count > 0)
{
foreach (DataRowView drow in dv_mat)
{
str1 = drow[0].ToString();
str2 = drow[1].ToString();
num1 = (drow[2].ToString() != "") ? double.Parse(drow[2].ToString()) : 0;
num2 = (drow[3].ToString() != "") ? double.Parse(drow[3].ToString()) : 0;
str3 = drow[4].ToString();
ls_mat_name = drow[5].ToString();
str4 = drow[6].ToString();
ls_mat_no = drow[7].ToString();
str5 = drow[8].ToString();
str6 = drow[9].ToString();
date1 = drow[10].ToString();
num3 = (drow[11].ToString() != "") ? double.Parse(drow[11].ToString()) : 0;
str7 = drow[12].ToString();
str8 = drow[13].ToString();
num4 = (drow[14].ToString() != "") ? double.Parse(drow[14].ToString()) : 0;
str9 = drow[15].ToString();
str10 = drow[16].ToString();
str11 = drow[17].ToString();
str12 = drow[18].ToString();
str13 = drow[19].ToString();
str14 = drow[20].ToString();
str15 = drow[21].ToString();
str16 = drow[22].ToString();
str17 = drow[23].ToString();
num5 = (drow[24].ToString() != "") ? double.Parse(drow[24].ToString()) : 0;
str18 = drow[25].ToString();
str19 = drow[26].ToString();
num6 = (drow[27].ToString() != "") ? double.Parse(drow[27].ToString()) : 0;
str20 = drow[28].ToString();
str21 = drow[28].ToString();
str22 = drow[30].ToString();
str23 = drow[31].ToString();
}
string sql = "insert into bas_mat_code(mat_no,mat_name,str1,str2,str3,str4,str5,str6,str7,str8,str9, ";
sql += " str10,str11,str12,str13,str14,str15,str16,str17,str18,str19,str20,str21,str22,str23,date1, ";
sql += " num1,num2,num3,num4,num5,num6,status) ";
sql += " values('" + ls_mat_no + "','" + ls_mat_name + "','" + str1 + "','" + str2 + "','" + str3 + "','" + str4 + "','" + str5 + "', ";
sql += " '" + str6 + "','" + str7 + "','" + str8 + "','" + str9 + "','" + str10 + "','" + str11 + "','" + str12 + "','" + str13 + "', ";
sql += " '" + str14 + "','" + str15 + "','" + str16 + "','" + str17 + "','" + str18 + "','" + str19 + "','" + str20 + "','" + str21 + "', ";
sql += " '" + str22 + "','" + str23 + "','" + date1 + "'," + num1 + "," + num2 + "," + num3 + "," + num4 + "," + num5 + "," + num6 + ",1)";
result = Common.ExecAsrsModify(sql);
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "insertBasMatCode----" + em.Message);
}
return result;
}
///
/// 入库站,磅秤称重和条码扫描后,直接生成工作档,并下发指令给PLC
/// 生成档,工作状态为2
///
private void Proc_AnalyzeScale()
{
try
{
for (int i = 0; i < 2; i++)
{
int plcno = 0, seqno = 0, li_wrkno = 0, li_stano = 0, li_crnno = 0;
int li_loctype = 0;
//double ld_wt = 0;
string ls_locno = "", sql = "";
string ls_barcode = "", ls_mat_no = "";
switch (i)
{
case 0:
li_stano = 104;
plcno = 0;
break;
case 1:
li_stano = 204;
plcno = 0;
break;
}
//ld_wt = Common.gd_gross_wt[0];
ls_barcode = Common.gs_barcode_data[i];
seqno = Common.GetStnSeq(li_stano);
string s_autoing = Common.plc_s_autoing[plcno, seqno];
string s_loading = Common.plc_s_loading[plcno, seqno];
string s_inreq1 = Common.plc_s_inreq1[plcno, seqno];
int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno];
string s_next_stn = Common.plc_s_next_stn[plcno, seqno];
if (s_autoing == "Y" && s_loading == "Y" && s_inreq1 == "Y" && i_wrk_no == 9999
&& s_next_stn == li_stano.ToString())// && Common.plc_i_pakmk[plcno, seqno] == 0)
{
if (ls_barcode == "" || ls_barcode == null)
{ //超重、条码为空
lb_AnalyzeScale.Text = "磅秤超重或条码为空--条码" + ls_barcode;
//toolStripStatusLabel4.Text = "4";
continue;
}
else
{
sql = " select * from APPS.CUX_INV_ONHAND_HSTORE_V where LPN_NUMBER='" + ls_barcode + "'";
DataView dv_mat = Common.ExecErpSelect(sql);
if (dv_mat != null && dv_mat.Count > 0)
{
foreach (DataRowView drow in dv_mat)
{
//insertBasMatCode(dv_mat);
ls_mat_no = drow[0].ToString();
}
}
else
{
lb_AnalyzeScale.Text = "无此入库条码数据--" + ls_barcode;
string ledMsg = "入库档无此条码;" + ls_barcode;
if (i < 2)
{
if (Common.gs_led_data_pre[0] != ledMsg)
{
Common.gs_led_data[0] = ledMsg;
Common.gs_led_data_pre[0] = ledMsg;
}
}
else
{
if (Common.gs_led_data_pre[2] != ledMsg)
{
Common.gs_led_data[2] = ledMsg;
Common.gs_led_data_pre[2] = ledMsg;
}
}
continue;
}
li_wrkno = Common.GetWrkno(0);
if (Common.plc_s_loctype[plcno - 1, i] == "Y")
{
li_loctype = 2;
}
else if (Common.plc_s_loctype[plcno - 1, i] == "N")
{
li_loctype = 1;
}
else
{
continue;
}
int stnType = 1;
if (li_stano > 2000)
{
stnType = 2;
}
ls_locno = Common.GetLocNo(1, li_loctype, 0, li_stano, stnType);
if (li_wrkno == 0 || ls_locno == "")
{
//toolStripStatusLabel4.Text = "磅秤站入库得到工作号和库位号失败";
lb_AnalyzeScale.Text = "生成工作号和库位失败--工作号" + li_wrkno + ";库位" + ls_locno;
continue;
}
int li_crnrow = int.Parse(ls_locno.Substring(0, 2));
li_crnno = (li_crnrow + 1) / 2;
int e_staNo = Common.getIoStaNo(1, li_crnno, li_stano);
DateTime ldt_date = DateTime.Now;
sql = " insert into asr_wrk_detl(wrk_no,io_time,mat_no) values(" + li_wrkno + ",'" + ldt_date + "','" + ls_mat_no + "');";
sql += " insert into asr_wrk_mast(wrk_no,wrk_sts,io_time,io_type,crn_no,io_pri,loc_no,sta_no,source_sta_no,barcode,ctn_type) ";
sql += " values(" + li_wrkno + ",2,'" + ldt_date + "',1," + li_crnno + ",10,'" + ls_locno + "'," + e_staNo + "," + li_stano + ",'" + ls_barcode + "'," + li_loctype + "); ";
sql += " update asr_loc_mast set loc_sts='S' where loc_no='" + ls_locno + "';";
//sql += " update bas_mat_code set status=1 where barcode='" + ls_barcode + "'";
bool result = Common.ExecAsrsModify(sql);
if (result)
{
Common.gs_barcode_data[i] = "";
Common.AddPlcQuereCmd(plcno, "04" + li_wrkno.ToString("0000") + li_stano.ToString("0000") + e_staNo.ToString("0000"));
Common.plc_i_Wrk_no[plcno, seqno] = li_wrkno;
Common.plc_s_next_stn[plcno, seqno] = e_staNo.ToString();
//Common.plc_i_pakmk[plcno, seqno] = 1;
toolStripStatusLabel4.Text = "";
//toolStripStatusLabel4.Text = "";
string ledMsg = "库位:" + ls_locno + ";" + ls_mat_no;
if (i < 2)
{
if (Common.gs_led_data_pre[0] != ledMsg)
{
Common.gs_led_data[0] = ledMsg;
Common.gs_led_data_pre[0] = ledMsg;
}
}
else
{
if (Common.gs_led_data_pre[2] != ledMsg)
{
Common.gs_led_data[2] = ledMsg;
Common.gs_led_data_pre[2] = ledMsg;
}
}
}
else
{
lb_AnalyzeScale.Text = "插入表asr_wrk_mast数据,更新asr_loc_mast表失败";
//toolStripStatusLabel4.Text = "8";
}
//Common.gs_barcode = "";
}
}
else
{
lb_AnalyzeScale.Text = "站点不符合条件--要求自动/有物/可入/有ID";
//toolStripStatusLabel4.Text = "3";
}
}
}
catch (Exception em)
{
//common.Class1.scal = true;
//toolStripStatusLabel4.Text = "9" + r.Message;
lb_AnalyzeScale.Text = "Proc_AnalyzeScale出错--" + em.Message;
Common.WriteLogFile("WcsError", "Proc_AnalyzeScale----" + em.Message);
return;
}
}
///
/// 设备出库站,发送出货数据到LED后,更新LED标记OVE_MK
///
//private void Proc_SendOutDataToLed()
//{
// try
// {
// int stnno = 0, seqno = 0, li_crnno = 0;
// string sql = "", ls_locno = "", s_outabled = "";
// string s_slocno = "", s_dlocno = "", s_picking = "N", s_emptymk = "N";
// string s_sstano = "", s_dstano = "", ls_matnr = "", ls_maktx = "", ls_anfme = "", ls_altme = "", ls_anfme1 = "";
// int i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0, ledno = 0;
// DateTime dt1 = System.DateTime.Now;
// for (int i = 0; i < 3; i++)
// {
// switch (i)
// {
// case 0:
// stnno = 6;
// plcno = 0;
// ledno = 0;
// break;
// case 1:
// stnno = 8;
// plcno = 0;
// ledno = 1;
// break;
// case 2:
// stnno = 13;
// plcno = 0;
// ledno = 2;
// break;
// }
// seqno = Common.GetStnSeq(stnno);
// string s_autoing = Common.plc_s_autoing[plcno, seqno];
// string s_loading = Common.plc_s_loading[plcno, seqno];
// string s_inreq1 = Common.plc_s_inreq1[plcno, seqno];
// int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno];
// string s_next_stn = Common.plc_s_next_stn[plcno, seqno];
// if (s_loading == "Y" && i_wrk_no > 0)
// {
// sql = "select top 1 source_loc_no,loc_no,source_sta_no,sta_no,picking,wrk_no,crn_no,wrk_sts,io_type,empty_mk ";
// sql += " from asr_wrk_mast where wrk_no=" + i_wrk_no + " and (sta_no=4 or sta_no=13) and io_type>100 ";
// //sql += " from asr_wrk_mast where wrk_no=" + i_wrk_no + " and sta_no=" + stnno + " and io_type>100 ";
// DataView dv = Common.ExecAsrsSelect(sql);
// if (dv.Count <= 0)
// {
// lb_CrnStnToOutStn.Text = "查询无资料--wrk_no=" + i_wrk_no;
// continue;
// }
// foreach (System.Data.DataRowView drow in dv)
// {
// s_slocno = drow[0].ToString();
// s_dlocno = drow[1].ToString();
// s_sstano = drow[2].ToString();
// s_dstano = drow[3].ToString();
// s_picking = drow[4].ToString();
// i_wrkno = Convert.ToInt32(drow[5].ToString());
// i_crnno = Convert.ToInt32(drow[6].ToString());
// i_wrksts = Convert.ToInt32(drow[7].ToString());
// i_iotype = Convert.ToInt32(drow[8].ToString());
// s_emptymk = drow[9].ToString();
// }
// if (i_iotype == 103) //拣料模式,更新打印需求标记,回报调用SAP打印接口
// {
// UpdateWaitOutPrintMk(i_wrkno);
// }
// if (i_wrksts < 14 || i_iotype < 100) continue;
// if (s_emptymk == "Y")
// {
// string ledMsg = "空盘出库;库位:" + s_slocno + ";;;;;;";
// if (Common.gs_led_data_pre[ledno] != ledMsg)
// {
// Common.gs_led_data[ledno] = ledMsg;
// Common.gs_led_data_pre[ledno] = ledMsg;
// }
// }
// else
// {
// sql = "select matnr from asr_wrk_detl where wrk_no=" + i_wrk_no + " ";
// DataView dv_detlCnt = Common.ExecAsrsSelect(sql);
// if (dv_detlCnt != null)
// {
// int count = dv_detlCnt.Count;
// int yushu = 0;
// if (dv_detlCnt.Count % 7 > 0) //有余数时页码加1
// {
// yushu = 1;
// }
// Common.gi_led_PageNumber[ledno] = (int)(dv_detlCnt.Count / 7) + yushu;
// }
// string s_type = "";
// if (i_iotype == 101)
// {
// s_type = "出库库位: " + s_slocno;
// //sql = "select matnr,maktx,anfme,altme,anfme from asr_wrk_detl where wrk_no=" + i_wrk_no + " ";
// int index = (Common.gi_led_CurPageNumber[ledno] - 1) * 7 + 1;
// int end = Common.gi_led_CurPageNumber[ledno] * 7;
// sql = " select * from (select matnr,maktx,anfme,altme,anfme as anfme1,ROW_NUMBER() OVER(Order by modi_time,matnr) as rowid ";
// sql += " from asr_wrk_detl where wrk_no=" + i_wrk_no + " ) a ";
// sql += " where rowid between (" + index + ") and (" + end + ")";
// }
// else if (i_iotype == 103)
// {
// s_type = "拣料库位: " + s_slocno;
// }
// else if (i_iotype == 104)
// {
// s_type = "并板库位: " + s_slocno;
// }
// if (i_iotype == 107)
// {
// s_type = "盘点库位: " + s_slocno;
// }
// //sql = "select matnr,maktx,anfme,altme from asr_wrk_detl where wrk_no=" + i_wrk_no + " ";
// if (i_iotype != 101)
// {
// int index = (Common.gi_led_CurPageNumber[ledno] - 1) * 7 + 1;
// int end = Common.gi_led_CurPageNumber[ledno] * 7;
// sql = "select * from (select a.matnr,a.maktx,a.anfme,a.altme,b.anfme as anfme1,ROW_NUMBER() OVER(Order by a.modi_time,a.matnr) as rowid ";
// sql += " from asr_wrk_detl a,asr_loc_detl b,asr_wrk_mast c where a.wrk_no=" + i_wrk_no + " ";
// sql += " and a.wrk_no=c.wrk_no and a.matnr=b.matnr and c.source_loc_no=b.loc_no ) a";
// sql += " where rowid between (" + index + ") and (" + end + ") ";
// }
// DataView dv_detl = Common.ExecAsrsSelect(sql);
// if (dv_detl.Count <= 0)
// {
// lb_CrnStnToOutStn.Text = "查询无资料--wrk_no=" + i_wrk_no;
// continue;
// }
// string ls_ledData = s_type + ";";
// double li_anfme = 0, li_anfme1 = 0;
// foreach (System.Data.DataRowView drow in dv_detl)
// {
// ls_matnr = drow[0].ToString();
// ls_maktx = drow[1].ToString();
// if (ls_maktx.Length > 4)
// {
// ls_maktx = ls_maktx.Substring(0, 5) + ".";
// }
// ls_maktx = ls_maktx.Replace(',', ' ');
// ls_maktx = ls_maktx.Replace(';', ' ');
// //ls_maktx = "";
// ls_anfme = drow[2].ToString();
// if (ls_anfme != "")
// {
// li_anfme = double.Parse(ls_anfme);
// }
// ls_altme = drow[3].ToString();
// ls_anfme1 = drow[4].ToString();
// if (ls_anfme1 != "")
// {
// li_anfme1 = double.Parse(ls_anfme1);
// }
// if (i_iotype == 107)
// {
// ls_ledData += ls_matnr + " " + ls_maktx + ";";
// //ls_ledData += ls_matnr + " " + ls_maktx + " QTY:" + li_anfme + "/STK:" + li_anfme1 + ";";
// }
// else
// {
// ls_ledData += ls_matnr + " " + ls_maktx + " 数量:" + li_anfme + "/库存:" + li_anfme1 + ";";
// }
// }
// ls_ledData = ls_ledData.Substring(0, ls_ledData.Length - 1);
// switch (ls_ledData.Split(';').Length)
// {
// case 1:
// ls_ledData += ";;;;;;;";
// break;
// case 2:
// ls_ledData += ";;;;;;";
// break;
// case 3:
// ls_ledData += ";;;;;";
// break;
// case 4:
// ls_ledData += ";;;;";
// break;
// case 5:
// ls_ledData += ";;;";
// break;
// case 6:
// ls_ledData += ";;";
// break;
// case 7:
// ls_ledData += ";";
// break;
// default:
// break;
// }
// if (Common.gs_led_data_pre[ledno] != ls_ledData)
// {
// if (Common.gi_led_PageNumber[ledno] == 1 ||
// (Common.gi_led_PageNumber[ledno] > 1 && (Common.gi_led_Counts[ledno] % 8) == 0))
// {
// Common.gs_led_data[ledno] = ls_ledData;
// Common.gs_led_data_pre[ledno] = ls_ledData;
// Common.gi_led_CurPageNumber[ledno]++;
// if (Common.gi_led_CurPageNumber[ledno] > Common.gi_led_PageNumber[ledno])
// {
// Common.gi_led_CurPageNumber[ledno] = 1;
// }
// }
// if (Common.gi_led_PageNumber[ledno] > 1)
// {
// Common.gi_led_Counts[ledno]++;
// if (Common.gi_led_Counts[ledno] > 8)
// {
// Common.gi_led_Counts[ledno] = 1;
// }
// }
// }
// }
// sql = "update asr_wrk_mast set ove_mk='Y' where wrk_no =" + i_wrkno + "";
// Common.ExecAsrsModify(sql);
// }
// else
// {
// string ledMsg = ";;;;;;;";
// if (Common.gs_led_data_pre[ledno] != ledMsg)
// {
// Common.gi_led_PageNumber[ledno] = 1;
// Common.gi_led_CurPageNumber[ledno] = 1;
// Common.gi_led_Counts[ledno] = 0;
// //Common.gi_led_Pages[ledno] = 1;
// Common.gs_led_data[ledno] = ledMsg;
// Common.gs_led_data_pre[ledno] = ledMsg;
// }
// }
// }
// }
// catch (Exception em)
// {
// Common.WriteLogFile("WcsError", "Proc_SendOutDataToLed----" + em.Message);
// }
//}
#region LED显示,已注释
/////
///// 设备出库站,发送出货数据到LED后,更新LED标记OVE_MK
/////
//private void Proc_SendOutDataToLed()
//{
// try
// {
// int stnno = 0, seqno = 0, li_crnno = 0;
// string sql = "", ls_locno = "", s_outabled = "";
// string s_slocno = "", s_dlocno = "", s_picking = "N", s_emptymk = "N";
// string s_sstano = "", s_dstano = "", ls_matnr = "", ls_maktx = "", ls_anfme = "", ls_altme = "", ls_anfme1 = "";
// int i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0, ledno = 0;
// DateTime dt1 = System.DateTime.Now;
// for (int i = 0; i < 3; i++)
// {
// switch (i)
// {
// case 0:
// stnno = 6;
// plcno = 0;
// ledno = 0;
// break;
// case 1:
// stnno = 8;
// plcno = 0;
// ledno = 1;
// break;
// case 2:
// stnno = 13;
// plcno = 0;
// ledno = 2;
// break;
// }
// seqno = Common.GetStnSeq(stnno);
// string s_autoing = Common.plc_s_autoing[plcno, seqno];
// string s_loading = Common.plc_s_loading[plcno, seqno];
// string s_inreq1 = Common.plc_s_inreq1[plcno, seqno];
// int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno];
// string s_next_stn = Common.plc_s_next_stn[plcno, seqno];
// //if (s_autoing == "Y" && s_loading == "Y" && i_wrk_no > 0)
// if (s_loading == "Y" && i_wrk_no > 0)
// {
// sql = "select top 1 source_loc_no,loc_no,source_sta_no,sta_no,picking,wrk_no,crn_no,wrk_sts,io_type,empty_mk ";
// sql += " from asr_wrk_mast where wrk_no=" + i_wrk_no + " and (sta_no=4 or sta_no=13) and io_type>100 ";
// //sql += " from asr_wrk_mast where wrk_no=" + i_wrk_no + " and sta_no=" + stnno + " and io_type>100 ";
// DataView dv = Common.ExecAsrsSelect(sql);
// if (dv.Count <= 0)
// {
// lb_CrnStnToOutStn.Text = "查询无资料--wrk_no=" + i_wrk_no;
// continue;
// }
// foreach (System.Data.DataRowView drow in dv)
// {
// s_slocno = drow[0].ToString();
// s_dlocno = drow[1].ToString();
// s_sstano = drow[2].ToString();
// s_dstano = drow[3].ToString();
// s_picking = drow[4].ToString();
// i_wrkno = Convert.ToInt32(drow[5].ToString());
// i_crnno = Convert.ToInt32(drow[6].ToString());
// i_wrksts = Convert.ToInt32(drow[7].ToString());
// i_iotype = Convert.ToInt32(drow[8].ToString());
// s_emptymk = drow[9].ToString();
// }
// if (i_iotype == 103) //拣料模式,更新打印需求标记,回报调用SAP打印接口
// {
// UpdateWaitOutPrintMk(i_wrkno);
// }
// if (i_wrksts < 14 || i_iotype < 100) continue;
// if (s_emptymk == "Y")
// {
// string ledMsg = "空盘出库;库位:" + s_slocno + ";;";
// if (Common.gs_led_data_pre[ledno] != ledMsg)
// {
// Common.gi_led_PageSize[ledno] = 4;
// Common.gs_led_data[ledno] = ledMsg;
// Common.gs_led_data_pre[ledno] = ledMsg;
// }
// }
// else
// {
// string s_type = "";
// if (i_iotype == 101)
// {
// s_type = "出库库位: " + s_slocno;
// sql = "select matnr,maktx,anfme,altme,anfme from asr_wrk_detl where wrk_no=" + i_wrk_no + " ";
// }
// else if (i_iotype == 103)
// {
// s_type = "拣料库位: " + s_slocno;
// }
// else if (i_iotype == 104)
// {
// s_type = "并板库位: " + s_slocno;
// }
// if (i_iotype == 107)
// {
// s_type = "盘点库位: " + s_slocno;
// }
// //sql = "select matnr,maktx,anfme,altme from asr_wrk_detl where wrk_no=" + i_wrk_no + " ";
// if (i_iotype != 101)
// {
// sql = "select a.matnr,a.maktx,a.anfme,a.altme,b.anfme from asr_wrk_detl a,asr_loc_detl b,asr_wrk_mast c ";
// sql += " where a.wrk_no=" + i_wrk_no + " and a.wrk_no=c.wrk_no";
// sql += " and a.matnr=b.matnr and c.source_loc_no=b.loc_no";
// }
// DataView dv_detl = Common.ExecAsrsSelect(sql);
// if (dv_detl.Count <= 0)
// {
// lb_CrnStnToOutStn.Text = "查询无资料--wrk_no=" + i_wrk_no;
// continue;
// }
// int li_1 = 1, li_2 = 1;
// if (dv_detl.Count < 4)
// {
// Common.gi_led_PageSize[ledno] = 4;
// }
// else if (dv_detl.Count >= 4 && dv_detl.Count < 7)
// {
// Common.gi_led_PageSize[ledno] = 8;
// li_1 = 1;
// }
// else
// {
// Common.gi_led_PageSize[ledno] = 8;
// li_1 = 2;
// }
// //else if (dv_detl.Count > 8)
// //{
// // li_1 = 3;
// //}
// string ls_ledData = s_type + ";";
// int li_anfme = 0, li_anfme1 = 0;
// foreach (System.Data.DataRowView drow in dv_detl)
// {
// ls_matnr = drow[0].ToString();
// ls_maktx = drow[1].ToString();
// if (ls_maktx.Length > 4)
// {
// ls_maktx = ls_maktx.Substring(0, 5) + ".";
// }
// ls_maktx = ls_maktx.Replace(',',' ');
// ls_maktx = ls_maktx.Replace(';', ' ');
// ls_anfme = drow[2].ToString();
// if (ls_anfme != "")
// {
// li_anfme = (int)double.Parse(ls_anfme);
// }
// ls_altme = drow[3].ToString();
// ls_anfme1 = drow[4].ToString();
// if (ls_anfme1 != "")
// {
// li_anfme1 = (int)double.Parse(ls_anfme1);
// }
// if (i_iotype == 107)
// {
// if (li_2 % li_1 == 0)
// {
// ls_ledData += ls_matnr + " " + ls_maktx + ";";
// }
// else
// {
// ls_ledData += ls_matnr + " " + ls_maktx + ", ";
// }
// }
// else
// {
// if (li_2 % li_1 == 0)
// {
// ls_ledData += ls_matnr + " " + ls_maktx + " Q:" + li_anfme + "/" + li_anfme1 + ";";
// }
// else
// {
// ls_ledData += ls_matnr + " " + ls_maktx + " Q:" + li_anfme + "/" + li_anfme1 + ", ";
// }
// }
// li_2++;
// }
// switch (ls_ledData.Split(';').Length)
// {
// case 1:
// if (Common.gi_led_PageSize[ledno] == 4) ls_ledData += ";;;";
// else ls_ledData += ";;;;;;;";
// break;
// case 2:
// if (Common.gi_led_PageSize[ledno] == 4) ls_ledData += ";;";
// else ls_ledData += ";;;;;;";
// break;
// case 3:
// if (Common.gi_led_PageSize[ledno] == 4) ls_ledData += ";";
// else ls_ledData += ";;;;;";
// break;
// case 4:
// if (Common.gi_led_PageSize[ledno] == 4) ls_ledData += "";
// else ls_ledData += ";;;;";
// break;
// case 5:
// Common.gi_led_PageSize[ledno] = 8;
// ls_ledData += ";;;";
// break;
// case 6:
// Common.gi_led_PageSize[ledno] = 8;
// ls_ledData += ";;";
// break;
// case 7:
// Common.gi_led_PageSize[ledno] = 8;
// ls_ledData += ";";
// break;
// default:
// break;
// }
// //switch (dv_detl.Count)
// //{
// // case 1:
// // if (Common.gi_led_PageSize[ledno] == 4) ls_ledData += ";";
// // else ls_ledData += ";;;;;";
// // break;
// // case 2:
// // if (Common.gi_led_PageSize[ledno] == 4) ls_ledData += "";
// // else ls_ledData += ";;;;";
// // break;
// // case 3:
// // ls_ledData += ";;;";
// // break;
// // case 4:
// // ls_ledData += ";;";
// // break;
// // case 5:
// // ls_ledData += ";";
// // break;
// // case 6:
// // ls_ledData += "";
// // break;
// // default:
// // break;
// //}
// if (Common.gs_led_data_pre[ledno] != ls_ledData)
// {
// Common.gs_led_data[ledno] = ls_ledData;
// Common.gs_led_data_pre[ledno] = ls_ledData;
// }
// }
// sql = "update asr_wrk_mast set ove_mk='Y' where wrk_no =" + i_wrkno + "";
// Common.ExecAsrsModify(sql);
// }
// else
// {
// string ledMsg = ";;;";
// if (Common.gs_led_data_pre[ledno] != ledMsg)
// {
// Common.gi_led_PageSize[ledno] = 4;
// Common.gs_led_data[ledno] = ledMsg;
// Common.gs_led_data_pre[ledno] = ledMsg;
// }
// }
// }
// }
// catch (Exception em)
// {
// Common.WriteLogFile("WcsError", "Proc_SendOutDataToLed----" + em.Message);
// }
//}
#endregion
///
/// 拣料模式,更新打印需求标记,回报调用SAP打印接口
///
/// 工作号
private void UpdateWaitOutPrintMk(int wrk_no)
{
try
{
string sql = "select lgnum,tbnum,tbpos,zmatid,matnr,maktx,werks,anfme,altme,zpallet,bname from asr_wrk_detl where wrk_no=" + wrk_no;
DataView dv_wrkdet = Common.ExecAsrsSelect(sql);
if (dv_wrkdet == null || dv_wrkdet.Count < 1)
{
return;
}
string sqlDetl = "";
foreach (DataRowView drow in dv_wrkdet)
{
string lgnum = "", tbnum = "", tbpos = "", zmatid = "", matnr = "", maktx = "", werks = "", anfme = "", altme = "", zpallet = "", bname = "";
lgnum = drow[0].ToString();
tbnum = drow[1].ToString();
tbpos = drow[2].ToString();
zmatid = drow[3].ToString();
matnr = drow[4].ToString();
maktx = drow[5].ToString();
werks = drow[6].ToString();
anfme = drow[7].ToString();
altme = drow[8].ToString();
zpallet = drow[9].ToString();
bname = drow[10].ToString();
sqlDetl += " update cust_wait_pakout set prnstatus=1 where lgnum='" + lgnum + "' and tanum=" + tbnum;
sqlDetl += " and tapos=" + tbpos + " and matnr=" + matnr + " and action=2 and prnstatus=0;";
}
bool result = Common.ExecAsrsModify(sqlDetl);
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "UpdateWaitOutPrintMk----" + em.Message);
}
}
///
/// 空栈板初始化入库,叉车入库站放货
/// 根据站点信号,启动入库,下发命令给PLC
///
private void Proc_StoreEmptyPlt()
{
try
{
for (int i = 0; i < 2; i++)
{
int plcno = 0, seqno = 0, li_wrkno = 0, li_stano = 0, li_crnno = 0, ledno = 0;
int li_loctype = 1, li_rStano = 0;
//double ld_wt = 0;
string ls_locno = "", sql = "";
string ls_barcode = "";
DateTime ldt_date = DateTime.Now;
switch (i)
{
case 0:
li_stano = 104;
li_rStano = 101; //退库站
ledno = 0;
plcno = 0;
break;
case 1:
li_stano = 104;
li_rStano = 113; //退库站
ledno = 1;
plcno = 0;
break;
case 2:
li_stano = 104;
li_rStano = 127; //退库站
ledno = 1;
plcno = 1;
break;
}
seqno = Common.GetStnSeq(li_stano);
ls_barcode = Common.gs_barcode_data[i];
string s_autoing = Common.plc_s_autoing[plcno, seqno];
string s_loading = Common.plc_s_loading[plcno, seqno];
string s_canining = Common.plc_s_canining[plcno, seqno];
string s_emptyMk = Common.plc_s_inreq1[plcno, seqno];
int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno];
string s_next_stn = Common.plc_s_next_stn[plcno, seqno];
if (s_autoing == "Y" && s_loading == "Y" && s_canining == "Y"
&& s_next_stn == li_stano.ToString() && s_emptyMk == "Y"
&& i_wrk_no == 9999 && Common.plc_i_pakmk[plcno, seqno] == 0)
{
#region 生成工作档
//int stnType = 1;
//ls_locno = Common.GetLocNo(10, li_loctype, 0, li_stano, stnType);
//if (ls_locno == "")
//{
// //toolStripStatusLabel4.Text = "磅秤站入库得到工作号和库位号失败";
// lb_AnalyzeScale.Text = "查找库位失败;库位" + ls_locno;
// continue;
//}
//li_wrkno = Common.GetWrkno(0);
//if (li_wrkno == 0)
//{
// lb_AnalyzeScale.Text = "生成工作号失败;" + ls_barcode;
// continue;
//}
//int li_crnrow = int.Parse(ls_locno.Substring(0, 2));
//li_crnno = (li_crnrow + 1) / 2;
//int e_staNo = Common.getIoStaNo(1, li_crnno, li_stano);
//sql = " insert into asr_wrk_mast(wrk_no,wrk_sts,io_time,io_type,crn_no,io_pri,loc_no,sta_no,source_sta_no,empty_mk,ctn_type,barcode) ";
//sql += " values(" + li_wrkno + ",2,'" + ldt_date + "',10," + li_crnno + ",10,'" + ls_locno + "'," + e_staNo + "," + li_stano + ",'Y',1,'" + ls_barcode + "'); ";
//sql += " update asr_loc_mast set loc_sts='S' where loc_no='" + ls_locno + "';";
//bool result = Common.ExecAsrsModify(sql);
//if (result)
//{
// Common.gs_barcode_data[i] = "";
// Common.AddPlcQuereCmd(plcno, "04" + li_wrkno.ToString("0000") + li_stano.ToString("0000") + e_staNo.ToString("0000"));
// Common.plc_i_Wrk_no[plcno, seqno] = li_wrkno;
// Common.plc_s_next_stn[plcno, seqno] = e_staNo.ToString();
// Common.plc_i_pakmk[plcno, seqno] = 1;
// Common.plc_s_inreq1[plcno, seqno] = "N";
// toolStripStatusLabel4.Text = "";
//}
//else
//{
// lb_AnalyzeScale.Text = "插入表asr_wrk_mast数据,更新asr_loc_mast表失败";
// //toolStripStatusLabel4.Text = "8";
//}
#endregion
string postData = "";
string url = Common.HttpUrl;
JSONObject json = new JSONObject();
json.put("ioType", 10);
json.put("sourceStaNo", li_stano);
json.put("barcode", ls_barcode);
json.put("locType1", li_loctype);
postData = json.ToString();
string responseData = HttpPostHelper.doHttpPost(url, postData);
JSONObject jsonRes = new JSONObject(responseData);
int code = jsonRes.getInt("code");
if (code == 200)
{
JSONObject data = new JSONObject(jsonRes.getString("data"));
int e_staNo = data.getInt("staNo");
li_crnno = data.getInt("crnNo");
ls_locno = data.getString("locNo");
li_wrkno = data.getInt("workNo");
Common.gs_barcode_data[i] = "";
Common.AddPlcQuereCmd(plcno, "04" + li_wrkno.ToString("0000") + li_stano.ToString("0000") + e_staNo.ToString("0000"));
Common.plc_i_Wrk_no[plcno, seqno] = li_wrkno;
Common.plc_s_next_stn[plcno, seqno] = e_staNo.ToString();
Common.plc_i_pakmk[plcno, seqno] = 1;
Common.plc_s_canining[plcno, seqno] = "N";
Common.plc_s_inreq1[plcno, seqno] = "N";
toolStripStatusLabel4.Text = "";
string ledMsg = "启动空板入库;库位号" + ls_locno + ";工作号" + li_wrkno;
if (Common.gs_led_data_pre[ledno] != ledMsg)
{
Common.gs_led_data[ledno] = ledMsg;
Common.gs_led_data_pre[ledno] = ledMsg;
}
}
else
{
string ledMsg = "启动空板入库失败;失败;" + jsonRes.getString("msg");
if (Common.gs_led_data_pre[ledno] != ledMsg)
{
Common.gs_led_data[ledno] = ledMsg;
Common.gs_led_data_pre[ledno] = ledMsg;
}
toolStripStatusLabel4.Text = jsonRes.getString("msg");
continue;
}
}
else
{
lb_AnalyzeScale.Text = "站点不符合条件--要求自动/有物/可入/有ID";
//toolStripStatusLabel4.Text = "3";
}
}
}
catch (Exception em)
{
//common.Class1.scal = true;
//toolStripStatusLabel4.Text = "9" + r.Message;
lb_AnalyzeScale.Text = "Proc_GenerateStoreWrkFile出错--" + em.Message;
Common.WriteLogFile("WcsError", "Proc_GenerateStoreWrkFile----" + em.Message);
return;
}
}
///
/// 主程序入口,启动设备入出库操作
///
private void t_run_Tick(object sender, EventArgs e)
{
//DateTime dt = DateTime.Now;
//DateTime dt1 = DateTime.Parse("2020-05-31");
//int ret = DateTime.Compare(dt1, dt);
//if (ret < 0)
//{
// return;
//}
try
{
string s_inenabled = "N";
string s_outenabled = "N";
if (Common.gi_Online_Flag == Common.ch_CMD_START)
{
//Proc_AnalyzeScale(); //入库站直接生成工作状态为2的任务,并下发命令到PLC
Proc_GenerateStoreWrkFile(); //入库站,根据条码扫描生成入库工作档
Proc_StnToCrnStn(); //入库站至堆垛机入库站,工作状态1->2,下发命令到PLC
Proc_StnToCrnStn_pick();
Proc_CrnStnToOutStn();
for (int crn = 0; crn < Common.ci_crn_count; crn++)
{
if (Common.crn_s_commandstr[crn] != "") continue;
//this.Proc_LoctoLoc1();
if (Common.gb_crn_status[crn] == true)
{
try
{
DataView dv = Common.ExecAsrsSelect("select in_enable,out_enable from dbo.asr_bas_crnp where crn_no=" + (crn + 1));
foreach (DataRowView drow in dv)
{
s_inenabled = drow[0].ToString();
s_outenabled = drow[1].ToString();
}
}
catch (Exception)
{
goto IL_212;
}
//Proc_LoctoLoc(crn);
if (Common.crn_i_crn_sts[crn] == Common.ci_CRN_STS_IDLE || Common.crn_i_Wrkno[crn] == 0)
{
if (Common.gs_crnlastio[crn] == "I")
{
if (s_inenabled == "Y")
{
this.Proc_CrnStnToLoc(crn);
Common.gs_crnlastio[crn] = "O";
}
else if (s_outenabled == "Y")
{
this.Proc_LocToCrnStn(crn);
Common.gs_crnlastio[crn] = "I";
}
}
else if (Common.gs_crnlastio[crn] == "O")
{
if (s_outenabled == "Y")
{
this.Proc_LocToCrnStn(crn);
Common.gs_crnlastio[crn] = "I";
}
else if (s_inenabled == "Y")
{
this.Proc_CrnStnToLoc(crn);
Common.gs_crnlastio[crn] = "O";
}
}
}
}
Proc_LoctoLoc(crn);
IL_212: ;
}
//this.proc_stntostn();
}
Proc_StoreFinished();
//Proc_UpdateCrnMove();
Proc_RecCrnErr();
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "t_run----" + em.Message);
}
}
///
/// 处理演示功能
///
private void Proc_Yanshi()
{
try
{
//1#堆垛机演示
if (Common.gi_Yanshi_Flag[0] == true)
{
int wrk_no = 0;
string s_slocno = "", s_dlocno = "", sql = "", locsts = "", locsts1 = "";
sql = "select * from dbo.asr_wrk_mast where wrk_sts in (11,12,3,4) and (io_type=11) and crn_no= 1 order by io_time,wrk_no";
DataView dv = Common.ExecAsrsSelect(sql);
if (dv != null && dv.Count <= 0)
{
int loc_type1 = 0; //库位类型
string loc_sts = ""; //库位状态
string sql1 = "select top 1 loc_no,loc_type1,loc_sts from asr_loc_mast where loc_sts in ('D') and crn_no = 1 and row1 not in (2,1) ORDER BY NEWID()";
DataView dv1 = Common.ExecAsrsSelect(sql1);
if (dv1 != null && dv1.Count > 0)
{
foreach (System.Data.DataRowView dvrow in dv1)
{
s_slocno = dvrow[0].ToString();
loc_type1 = int.Parse(dvrow[1].ToString());
loc_sts = dvrow[2].ToString();
}
}
//在库库位查询库存明细
string matnr = "";
if (s_slocno != "" && loc_sts == "F")
{
string sqlDetl = "select top 1 matnr from asr_loc_detl where loc_no='" + s_slocno + "';";
DataView dvDetl = Common.ExecAsrsSelect(sqlDetl);
if (dvDetl != null && dvDetl.Count > 0)
{
foreach (System.Data.DataRowView dvrow in dvDetl)
{
matnr = dvrow[0].ToString();
}
}
}
string sql2 = "select top 1 loc_no from asr_loc_mast where loc_sts = 'O' and crn_no = 1 and loc_type1 = " + loc_type1 + " and row1 not in (2,1) order BY NEWID() ";
DataView dv2 = Common.ExecAsrsSelect(sql2);
if (dv2 != null && dv2.Count > 0)
{
foreach (System.Data.DataRowView dvrow in dv2)
{
s_dlocno = dvrow[0].ToString();
}
}
if (s_slocno != "" && s_dlocno != "")
{
wrk_no = Common.GetWrkno(0);
DateTime dt = DateTime.Now;
string emptyMk = loc_sts == "D" ? "Y" : "N";
string insertSql = " insert into asr_wrk_mast(wrk_no,wrk_sts,io_type,crn_no,io_pri,wrk_date,loc_no,source_loc_no,empty_mk,io_time) ";
insertSql += " values(" + wrk_no + ",11,11,1,13,'" + dt + "','" + s_dlocno + "','" + s_slocno + "','" + emptyMk + "','" + dt + "');";
if (loc_sts == "F" && matnr != "")
{
insertSql += " insert into asr_wrk_detl(wrk_no,io_time,matnr,anfme) ";
insertSql += " values(" + wrk_no + ",'" + dt + "','" + matnr + "',1); ";
}
insertSql += " update asr_loc_mast set loc_sts='R' where loc_no='" + s_slocno + "'; ";
insertSql += " update asr_loc_mast set loc_sts='S' where loc_no='" + s_dlocno + "'; ";
bool ret = Common.ExecAsrsModify(insertSql);
}
}
}
//2#堆垛机演示
if (Common.gi_Yanshi_Flag[1] == true)
{
int wrk_no = 0;
string s_slocno = "", s_dlocno = "", sql = "", locsts = "", locsts1 = "";
sql = "select * from dbo.asr_wrk_mast where wrk_sts in (11,12,3,4) and (io_type=11) and crn_no= 2 order by io_time,wrk_no";
DataView dv = Common.ExecAsrsSelect(sql);
if (dv != null && dv.Count <= 0)
{
int loc_type1 = 0;
string loc_sts = ""; //库位状态
string sql1 = "select top 1 loc_no,loc_type1,loc_sts from asr_loc_mast where loc_sts in ('D') and crn_no = 2 ORDER BY NEWID()";
DataView dv1 = Common.ExecAsrsSelect(sql1);
if (dv1 != null && dv1.Count > 0)
{
foreach (System.Data.DataRowView dvrow in dv1)
{
s_slocno = dvrow[0].ToString();
loc_type1 = int.Parse(dvrow[1].ToString());
loc_sts = dvrow[2].ToString();
}
}
//在库库位查询库存明细
string matnr = "";
if (s_slocno != "" && loc_sts == "F")
{
string sqlDetl = "select top 1 matnr from asr_loc_detl where loc_no='" + s_slocno + "';";
DataView dvDetl = Common.ExecAsrsSelect(sqlDetl);
if (dvDetl != null && dvDetl.Count > 0)
{
foreach (System.Data.DataRowView dvrow in dvDetl)
{
matnr = dvrow[0].ToString();
}
}
}
string sql2 = "select top 1 loc_no from asr_loc_mast where loc_sts = 'O' and crn_no = 2 and loc_type1 = " + loc_type1 + " order BY NEWID() ";
DataView dv2 = Common.ExecAsrsSelect(sql2);
if (dv2 != null && dv2.Count > 0)
{
foreach (System.Data.DataRowView dvrow in dv2)
{
s_dlocno = dvrow[0].ToString();
}
}
if (s_slocno != "" && s_dlocno != "")
{
wrk_no = Common.GetWrkno(0);
DateTime dt = DateTime.Now;
string emptyMk = loc_sts == "D" ? "Y" : "N";
string insertSql = " insert into asr_wrk_mast(wrk_no,wrk_sts,io_type,crn_no,io_pri,wrk_date,loc_no,source_loc_no,empty_mk,io_time) ";
insertSql += " values(" + wrk_no + ",11,11,2,13,'" + dt + "','" + s_dlocno + "','" + s_slocno + "','" + emptyMk + "','" + dt + "');";
if (loc_sts == "F" && matnr != "")
{
insertSql += " insert into asr_wrk_detl(wrk_no,io_time,matnr,anfme) ";
insertSql += " values(" + wrk_no + ",'" + dt + "','" + matnr + "',1); ";
}
insertSql += " update asr_loc_mast set loc_sts='R' where loc_no='" + s_slocno + "'; ";
insertSql += " update asr_loc_mast set loc_sts='S' where loc_no='" + s_dlocno + "'; ";
bool ret = Common.ExecAsrsModify(insertSql);
}
}
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "演示失败----" + em.Message);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
Proc_SendOutDataToLed();
Proc_StoreEmptyPlt();
Proc_Yanshi();
}
///
/// 设备出库站,发送出货数据到LED后,更新LED标记OVE_MK
///
private void Proc_SendOutDataToLed()
{
try
{
int stnno = 0, seqno = 0, li_crnno = 0, seqno1 = 0;
string sql = "", ls_locno = "", s_outabled = "";
string s_slocno = "", s_dlocno = "", s_picking = "N", s_emptymk = "N";
string s_sstano = "", s_dstano = "", ls_matnr = "", ls_maktx = "", ls_anfme = "", ls_altme = "", ls_anfme1 = "";
int i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0, ledno = 0;
DateTime dt1 = System.DateTime.Now;
int stnno1 = 0;
string plcError = "";
for (int i = 0; i < 6; i++)
{
switch (i)
{
case 0:
stnno = 101;
plcno = 0;
ledno = 0;
stnno1 = 104;
break;
case 1:
stnno = 201;
plcno = 0;
ledno = 1;
stnno1 = 204;
break;
}
seqno1 = Common.GetStnSeq(stnno1);
string s_loading1 = Common.plc_s_loading[plcno, seqno1];
seqno = Common.GetStnSeq(stnno);
string s_autoing = Common.plc_s_autoing[plcno, seqno];
string s_loading = Common.plc_s_loading[plcno, seqno];
string s_inreq1 = Common.plc_s_inreq1[plcno, seqno];
int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno];
string s_next_stn = Common.plc_s_next_stn[plcno, seqno];
if (s_loading == "Y" && i_wrk_no > 0)
{
sql = "select top 1 source_loc_no,loc_no,source_sta_no,sta_no,picking,wrk_no,crn_no,wrk_sts,io_type,empty_mk ";
//sql += " from asr_wrk_mast where wrk_no=" + i_wrk_no + " and (sta_no=4 or sta_no=13) and io_type>100 ";
sql += " from asr_wrk_mast where wrk_no=" + i_wrk_no + " and sta_no=" + stnno + " and io_type>100 ";
DataView dv = Common.ExecAsrsSelect(sql);
if (dv.Count <= 0)
{
lb_CrnStnToOutStn.Text = "查询无资料--wrk_no=" + i_wrk_no;
continue;
}
foreach (System.Data.DataRowView drow in dv)
{
s_slocno = drow[0].ToString();
s_dlocno = drow[1].ToString();
s_sstano = drow[2].ToString();
s_dstano = drow[3].ToString();
s_picking = drow[4].ToString();
i_wrkno = Convert.ToInt32(drow[5].ToString());
i_crnno = Convert.ToInt32(drow[6].ToString());
i_wrksts = Convert.ToInt32(drow[7].ToString());
i_iotype = Convert.ToInt32(drow[8].ToString());
s_emptymk = drow[9].ToString();
}
//if (i_iotype == 103) //拣料模式,更新打印需求标记,回报调用SAP打印接口
//{
// UpdateWaitOutPrintMk(i_wrkno);
//}
if (i_wrksts < 14 || i_iotype < 100) continue;
if (s_emptymk == "Y")
{
string ledMsg = "空盘出库;库位:" + s_slocno + ";";
if (Common.gs_led_data_pre[ledno] != ledMsg)
{
Common.gs_led_data[ledno] = ledMsg;
Common.gs_led_data_pre[ledno] = ledMsg;
}
}
else
{
//sql = "select matnr from asr_wrk_detl where wrk_no=" + i_wrk_no + " ";
//DataView dv_detlCnt = Common.ExecAsrsSelect(sql);
//if (dv_detlCnt!=null)
//{
//int count = dv_detlCnt.Count;
//int yushu = 0;
//if (dv_detlCnt.Count % 7 > 0) //有余数时页码加1
//{
// yushu = 1;
//}
//Common.gi_led_PageNumber[ledno] = (int)(dv_detlCnt.Count / 7) + yushu ;
//}
string s_type = "";
if (i_iotype == 101)
{
s_type = "出库库位: " + s_slocno;
//sql = "select matnr,maktx,anfme,altme,anfme from asr_wrk_detl where wrk_no=" + i_wrk_no + " ";
//int index = (Common.gi_led_CurPageNumber[ledno] - 1) * 7 + 1;
//int end = Common.gi_led_CurPageNumber[ledno] * 7;
//sql = " select * from (select matnr,maktx,anfme,altme,anfme as anfme1,ROW_NUMBER() OVER(Order by modi_time,matnr) as rowid ";
//sql += " from asr_wrk_detl where wrk_no=" + i_wrk_no + " ) a ";
//sql += " where rowid between (" + index + ") and (" + end + ")";
}
else if (i_iotype == 103)
{
s_type = "拣料库位: " + s_slocno;
}
else if (i_iotype == 104)
{
s_type = "并板库位: " + s_slocno;
}
if (i_iotype == 107)
{
s_type = "盘点库位: " + s_slocno;
}
sql = "select top 1 mat_no,mat_name,qty from asr_wrk_detl where wrk_no=" + i_wrk_no + " ";
//if (i_iotype != 101)
//{
//int index = (Common.gi_led_CurPageNumber[ledno] - 1) * 7 + 1;
//int end = Common.gi_led_CurPageNumber[ledno] * 7;
//sql = "select * from (select a.matnr,a.maktx,a.anfme,a.altme,b.anfme as anfme1,ROW_NUMBER() OVER(Order by a.modi_time,a.matnr) as rowid ";
//sql += " from asr_wrk_detl a,asr_loc_detl b,asr_wrk_mast c where a.wrk_no=" + i_wrk_no + " ";
//sql += " and a.wrk_no=c.wrk_no and a.matnr=b.matnr and c.source_loc_no=b.loc_no ) a";
//sql += " where rowid between (" + index + ") and (" + end + ") ";
//}
DataView dv_detl = Common.ExecAsrsSelect(sql);
if (dv_detl.Count <= 0)
{
lb_CrnStnToOutStn.Text = "查询无资料--wrk_no=" + i_wrk_no;
continue;
}
string ls_ledData = s_type + ";";
double li_anfme = 0;//, li_anfme1 = 0;
foreach (System.Data.DataRowView drow in dv_detl)
{
ls_matnr = drow[0].ToString();
ls_matnr = ls_maktx.Replace(',', ' ');
ls_matnr = ls_maktx.Replace(';', ' ');
ls_matnr = ls_matnr.Substring(0, 12);
ls_maktx = drow[1].ToString();
//if (ls_maktx.Length > 4)
//{
// ls_maktx = ls_maktx.Substring(0, 5) + ".";
//}
ls_maktx = ls_maktx.Replace(',', ' ');
ls_maktx = ls_maktx.Replace(';', ' ');
//ls_maktx = "";
ls_anfme = drow[2].ToString();
if (ls_anfme != "")
{
li_anfme = double.Parse(ls_anfme);
}
//ls_altme = drow[3].ToString();
//ls_anfme1 = drow[4].ToString();
//if (ls_anfme1 != "")
//{
// li_anfme1 = double.Parse(ls_anfme1);
//}
//if (i_iotype == 107)
//{
// ls_ledData += ls_matnr + " " + ls_maktx + ";";
// //ls_ledData += ls_matnr + " " + ls_maktx + " QTY:" + li_anfme + "/STK:" + li_anfme1 + ";";
//}
//else
//{
ls_ledData += ls_matnr + " ;数量:" + li_anfme + ";";
// //ls_ledData += ls_matnr + " " + ls_maktx + " 数量:" + li_anfme + "/库存:" + li_anfme1 + ";";
//}
}
ls_ledData = ls_ledData.Substring(0, ls_ledData.Length - 1);
switch (ls_ledData.Split(';').Length)
{
case 1:
ls_ledData += ";;;;;;;";
break;
case 2:
ls_ledData += ";;;;;;";
break;
case 3:
ls_ledData += ";;;;;";
break;
case 4:
ls_ledData += ";;;;";
break;
case 5:
ls_ledData += ";;;";
break;
case 6:
ls_ledData += ";;";
break;
case 7:
ls_ledData += ";";
break;
default:
break;
}
if (Common.gs_led_data_pre[ledno] != ls_ledData)
{
Common.gs_led_data[ledno] = ls_ledData;
Common.gs_led_data_pre[ledno] = ls_ledData;
}
}
//sql = "update asr_wrk_mast set ove_mk='Y' where wrk_no =" + i_wrkno + "";
//Common.ExecAsrsModify(sql);
}
else if (s_loading1 == "N")
{
string ledMsg = ";;";
if (Common.gs_led_data_pre[ledno] != ledMsg)
{
//Common.gi_led_PageNumber[ledno] = 1;
//Common.gi_led_CurPageNumber[ledno] = 1;
//Common.gi_led_Counts[ledno] = 0;
//Common.gi_led_Pages[ledno] = 1;
Common.gs_led_data[ledno] = ledMsg;
Common.gs_led_data_pre[ledno] = ledMsg;
}
}
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "Proc_SendOutDataToLed----" + em.Message);
}
}
///
/// 执行对工作档的入库完成
///
private void Proc_StoreFinished()
{
try
{
int wrk_no = 0, wrk_sts = 0, io_type = 0;
DateTime dt1 = System.DateTime.Now;
for (int crn = 0; crn < Common.ci_crn_count; crn++)
{
if (Common.Mode[crn] == Common.ci_CRN_ONLINE && (Common.crn_i_kind[crn] == 7 || Common.crn_i_kind[crn] == 12)
&& Common.CrnState[crn] == Common.ci_CRN_STS_TASK_FINISH && Common.TaskNo[crn] > 0
&& Common.TaskFinish[crn] == 1 && Common.TaskFlag[crn] == 0)
{
wrk_no = Common.TaskNo[crn];
if (wrk_no == 0)
{
continue;
}
try
{
DataView dv = Common.ExecAsrsSelect("select wrk_sts,io_type from dbo.asr_wrk_mast where wrk_no=" + wrk_no + "");
foreach (System.Data.DataRowView drow in dv)
{
wrk_sts = Convert.ToInt32(drow[0].ToString());
io_type = Convert.ToInt32(drow[1].ToString());
}
}
catch (Exception e)
{
continue;
}
if (wrk_sts == 3 && (io_type == 1 || io_type == 10 || io_type == 53 || io_type == 54 || io_type == 57 || io_type == 11))
{
if (Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts =4,crn_end_time ='" + dt1 + "' where wrk_no =" + wrk_no + "") == true)
{
Common.TaskFlag[crn] = 1;
}
}
}
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "Proc_StoreFinished----" + em.Message);
}
}
///
/// 记录堆垛机异常信息
///
private void Proc_RecCrnErr()
{
try
{
int wrkno = 0;
string locno = "";
string crnno = "";
int tag = 0;
DateTime dt1 = System.DateTime.Now, dt2 = System.DateTime.Now;
for (int crn = 0; crn < Common.ci_crn_count; crn++)
{
//堆垛机产生异常
wrkno = Common.crn_i_Wrkno[crn];
if (wrkno == 0)
{
wrkno = Common.gi_crn_wrkno[crn];
}
if (Common.crn_i_kind[crn] == 7)
{
locno = Common.crn_s_Tlocno[crn];
int row = 0, bay = 0, lev = 0;
row = int.Parse(locno.Substring(0, 2));
bay = int.Parse(locno.Substring(2, 3)) - 1;
lev = int.Parse(locno.Substring(5, 2));
locno = row.ToString().PadLeft(2, '0') + bay.ToString().PadLeft(3, '0') + lev.ToString().PadLeft(2, '0');
}
else if (Common.crn_i_kind[crn] == 8)
{
locno = Common.crn_s_Flocno[crn];
int row1 = 0, bay1 = 0, lev1 = 0;
row1 = int.Parse(locno.Substring(0, 2));
bay1 = int.Parse(locno.Substring(2, 3)) - 1;
lev1 = int.Parse(locno.Substring(5, 2));
locno = row1.ToString().PadLeft(2, '0') + bay1.ToString().PadLeft(3, '0') + lev1.ToString().PadLeft(2, '0');
}
else
{
locno = "";
}
crnno = "C" + (crn + 1).ToString();
try
{
DataView dv = Common.ExecAsrsSelect("select top 1 io_time from dbo.asr_wrk_mast where wrk_no=" + wrkno + "");
foreach (System.Data.DataRowView drow in dv)
{
dt2 = Convert.ToDateTime(drow[0].ToString());
}
}
catch (Exception e)
{
}
if (Common.Mode[crn] == 1)
{
tag = 1;
}
else
{
tag = 0;
}
if (Common.AlarmCode[crn] > 0 && Common.gs_crn_err_pre[crn] == "0")
{
Common.ExecAsrsModify("insert into dbo.asr_stk_plcm(io_time,wrk_no,s_location,s_station,o_location,dev_no,modi_user,modi_time,wrk_time,tag) values('" + dt1 + "'," + wrkno + ",'" + Common.AlarmCode[crn].ToString() + "','Y','" + locno + "','" + crnno + "','Online','" + dt1 + "','" + dt2 + "'," + tag + ")");
}
//堆垛机恢复异常
else if (Common.AlarmCode[crn] == 0 && Common.gs_crn_err_pre[crn] != "0")
{
Common.ExecAsrsModify("insert into dbo.asr_stk_plcm(io_time,wrk_no,s_location,s_station,o_location,dev_no,modi_user,modi_time,wrk_time,tag) values('" + dt1 + "'," + wrkno + ",'" + Common.gs_crn_err_pre[crn] + "','N','" + locno + "','" + crnno + "','Online','" + dt1 + "','" + dt2 + "'," + tag + ")");
}
Common.gs_crn_err_pre[crn] = Common.AlarmCode[crn].ToString();
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "Proc_RecCrnErr----" + em.Message);
}
}
///
/// 更新堆垛机移动时工作档状态
///
private void Proc_UpdateCrnMove()
{
try
{
int wrk_no = 0, wrk_sts = 0, iotype = 0;
DateTime dt1 = System.DateTime.Now;
for (int crn = 0; crn < Common.ci_crn_count; crn++)
{
if (Common.crn_i_crn_sts[crn] == Common.ci_CRN_STS_STORE_MOVE
|| Common.crn_i_crn_sts[crn] == Common.ci_CRN_STS_STORE_OK)
{
wrk_no = Common.crn_i_Wrkno[crn];
if (wrk_no == 0)
{
wrk_no = Common.gi_crn_wrkno[crn];
}
try
{
DataView dv = Common.ExecAsrsSelect("select wrk_sts,io_type from dbo.asr_wrk_mast where wrk_no=" + wrk_no + "");
foreach (System.Data.DataRowView drow in dv)
{
wrk_sts = Convert.ToInt32(drow[0].ToString());
}
}
catch (Exception e)
{
continue;
}
if (wrk_sts < 3 || wrk_sts == 7)
{
if (Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts =3 ,crn_str_time ='" + dt1 + "' where wrk_no =" + wrk_no + "") == true)
{
Common.gs_crnlastio[crn] = "O";
}
}
}
else if (Common.crn_i_crn_sts[crn] == Common.ci_CRN_STS_RETRIEVE_MOVE
|| Common.crn_i_crn_sts[crn] == Common.ci_CRN_STS_RETRIEVE_OK
|| Common.crn_i_crn_sts[crn] == Common.ci_CRN_STS_LOCATION_MOVE)
{
wrk_no = Common.crn_i_Wrkno[crn];
if (wrk_no == 0)
{
wrk_no = Common.gi_crn_wrkno[crn];
}
try
{
DataView dv = Common.ExecAsrsSelect("select top 1 wrk_sts,io_type from dbo.asr_wrk_mast where wrk_no=" + wrk_no + "");
foreach (System.Data.DataRowView drow in dv)
{
wrk_sts = Convert.ToInt32(drow[0].ToString());
iotype = Convert.ToInt32(drow[1].ToString());
}
}
catch (Exception e)
{
continue;
}
if ((wrk_sts < 12 && (iotype == 104 || iotype == 107 || iotype == 103)) || (wrk_sts < 12 && (iotype == 101 || iotype == 110)) || (wrk_sts < 12 && iotype == 11))
{
if (Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts =12 ,crn_str_time ='" + dt1 + "' where wrk_no =" + wrk_no + "") == true)
{
Common.gs_crnlastio[crn] = "I";
}
}
}
else if (Common.crn_i_crn_sts[crn] == Common.ci_CRN_STS_STNCHG_MOVE)
{
wrk_no = Common.crn_i_Wrkno[crn];
if (wrk_no == 0)
{
wrk_no = Common.gi_crn_wrkno[crn];
}
try
{
DataView dv = Common.ExecAsrsSelect("select top 1 wrk_sts,io_type from dbo.asr_wrk_mast where wrk_no=" + wrk_no + "");
foreach (System.Data.DataRowView drow in dv)
{
wrk_sts = Convert.ToInt32(drow[0].ToString());
iotype = Convert.ToInt32(drow[1].ToString());
}
}
catch (Exception e)
{
continue;
}
if ((wrk_sts == 2 && iotype == 1))
{
if (Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts =6 ,crn_str_time ='" + dt1 + "' where wrk_no =" + wrk_no + "") == true)
{
Common.gs_crnlastio[crn] = "I";
}
}
if ((wrk_sts == 8 && (iotype == 101 || iotype == 110)))
{
if (Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts =6 where wrk_no =" + wrk_no + "") == true)
{
Common.gs_crnlastio[crn] = "I";
}
}
}
//解决空出库更新工作档
if (Common.crn_ycmm[crn].ToString() != "0" && Common.crn_yc[crn] == true)
{
if (Common.crn_ycmm[crn].ToString() == "39")
{
wrk_no = Common.crn_i_Wrkno[crn];
if (wrk_no > 0)
{
Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts =13,upd_mk='X',error_time='" + dt1 + "',error_memo= '空出库异常' where wrk_no =" + wrk_no + " and wrk_sts=12 and crn_no=" + crn + 1 + "");
Common.gi_crn_iotype[crn] = 0;
}
}
}
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "Proc_UpdateCrnMove----" + em.Message);
}
}
///
/// 入库,堆垛机入库站 --> 库位
///
///
private void Proc_CrnStnToLoc(int crnno)
{
int stnno = 0, seqno = 0;
string s_slocno = "", s_dlocno = "", s_picking = "N", sql = "", locsts = "", s_inabled = "";
int i_sstano = 0, i_dstano = 0, i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0; ;
string s_wrknos = "";
bool flag = false;
if (Common.Mode[crnno] != Common.ci_CRN_ONLINE || Common.CrnState[crnno] != Common.ci_CRN_STS_IDLE || Common.TaskNo[crnno] != 0
|| Common.gs_crncmd[crnno] != "")
{
lb_CrnStnToLoc.Text = "堆垛机不符合条件--要求空闲/无ID/无命令";
return;
}
try
{
////判断堆垛机是否禁用
try
{
DataView dv_crnsts = Common.ExecAsrsSelect("select in_enable from dbo.asr_bas_crnp where crn_no=" + (crnno + 1) + "");
foreach (System.Data.DataRowView drow in dv_crnsts)
{
s_inabled = drow[0].ToString();
}
}
catch (Exception e)
{
lb_CrnStnToLoc.Text = "查询堆垛机是否可用出错" + e.Message;
return;
}
if (s_inabled != "Y")
{
lb_CrnStnToLoc.Text = "堆垛机已禁用";
return;
}
s_wrknos = " wrk_no in (";
for (int i = 0; i < 2; i++)
{
switch (i)
{
case 0:
stnno = 104;
plcno = 0;
i_crnno = 1;
break;
case 1:
stnno = 204;
plcno = 0;
i_crnno = 2;
break;
}
if (i_crnno != (crnno + 1)) continue;
seqno = Common.GetStnSeq(stnno);
string s_autoing = Common.plc_s_autoing[plcno, seqno];
string s_loading = Common.plc_s_loading[plcno, seqno];
string s_canining = Common.plc_s_canining[plcno, seqno];
//string s_inreq1 = Common.plc_s_inreq1[plcno, seqno];
int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno];
//string s_next_stn = Common.plc_s_next_stn[plcno, seqno];
if (s_autoing == "Y" && s_loading == "Y" && i_wrk_no > 0 && s_canining == "Y")
{
flag = true;
s_wrknos += i_wrk_no.ToString() + ",";
}
}
if (flag == false) return;
s_wrknos = s_wrknos.Substring(0, s_wrknos.Length - 1) + ") ";
sql = "select TOP 1 source_loc_no,loc_no,source_sta_no,sta_no,picking,wrk_no,crn_no,wrk_sts,io_type from dbo.asr_wrk_mast "
+ " where wrk_sts=2 and crn_no=" + (crnno + 1) + " and " + s_wrknos
+ " and (io_type=1 or io_type=10 or io_type=53 or io_type=54 or io_type=57) order by io_pri desc,io_time,wrk_no ASC ";
DataView dv = Common.ExecAsrsSelect(sql);
if (dv.Count <= 0)
{
lb_CrnStnToLoc.Text = "查询无待入库数据--wrk_sts=2";
return;
}
foreach (DataRowView drow in dv)
{
s_slocno = drow[0].ToString();
s_dlocno = drow[1].ToString();
i_sstano = Convert.ToInt32(drow[2].ToString());
i_dstano = Convert.ToInt32(drow[3].ToString());
s_picking = drow[4].ToString();
i_wrkno = Convert.ToInt32(drow[5].ToString());
i_crnno = Convert.ToInt32(drow[6].ToString());
i_wrksts = Convert.ToInt32(drow[7].ToString());
i_iotype = Convert.ToInt32(drow[8].ToString());
/////////////目标库位是深库位时,判断浅库位状态 2022-2-11
string row = "", row2 = "";
row = s_dlocno.Substring(0, 2);
if (row == "01")
{
row2 = "02";
string locno = row2 + s_dlocno.Substring(2, 5);
bool flag1 = Proc_ShallowLoctoLoc(locno, i_wrkno, crnno);
if (flag1)
{
return;
}
}
////////////////////////////////////////////
switch (i_dstano)
{
case 104:
stnno = 104;
plcno = 0;
i_crnno = 1;
break;
case 204:
stnno = 204;
plcno = 0;
i_crnno = 2;
break;
}
if ((i_iotype > 100) || (i_crnno != crnno + 1) || (s_dlocno == ""))// || (stnno != i_dstano))
{
lb_CrnStnToLoc.Text = "工作档数据不符合条件--入出类型/堆垛机号/站点";
continue;
}
///判断库位状态是否正常
try
{
DataView dv_locsts = Common.ExecAsrsSelect("select loc_sts from dbo.asr_loc_mast where loc_no='" + s_dlocno + "'");
if (dv_locsts.Count <= 0)
{
lb_CrnStnToLoc.Text = "查询库存无数据--库位号" + s_dlocno;
continue;
}
foreach (System.Data.DataRowView drow1 in dv_locsts)
{
locsts = drow1[0].ToString();
}
}
catch (Exception e)
{
lb_CrnStnToLoc.Text = "查询库位状态数据出错--" + e.Message;
continue;
}
if (locsts != "S" && locsts != "Q")
{
lb_CrnStnToLoc.Text = "库位状态不符合--状态" + locsts;
continue;
}
seqno = Common.GetStnSeq(i_dstano);
string autoing = Common.plc_s_autoing[plcno, seqno];
string loading = Common.plc_s_loading[plcno, seqno];
int wrk_no0 = Common.plc_i_Wrk_no[plcno, seqno];
if (Common.Mode[crnno] != Common.ci_CRN_ONLINE || Common.gs_crncmd[crnno] != "" || Common.TaskNo[crnno] != 0 || Common.CrnState[crnno] != 0)
{
continue;
}
//string row = "", bay = "", lev = "", row1 = "";
////int stn = 0;
//int bay1 = 0;
//row1 = s_dlocno.Substring(0, 2);
//if (row1 == "" || row1 == null)
//{
// lb_CrnStnToLoc.Text = "根据库位得到row出错--库位号" + s_dlocno;
// return;
//}
//row = row1;//(int.Parse(row1).ToString();
//bay1 = Int32.Parse(s_dlocno.Substring(2, 3));
//bay = bay1.ToString();
//lev = s_dlocno.Substring(5, 2);
//stn = Common.GetCrnStnSeq(i_crnno);
//if (stn == 0)
//{
// lb_CrnStnToLoc.Text = "得到吊车入库站编号出错--入库站" + i_crnno;
// return;
//}
if (autoing == "Y" && loading == "Y" && wrk_no0 > 0)
{
Common.gs_crncmd[crnno] = "07" + i_wrkno.ToString().PadLeft(4, '0') + Common.GetLocByStn(i_dstano) + s_dlocno;
Common.gs_crnlastio[crnno] = "O";
Common.gi_crn_wrkno[crnno] = i_wrkno;
break;
}
}
}
catch (Exception em)
{
lb_CrnStnToLoc.Text = "Proc_CrnStnToLoc出错--" + em.Message;
Common.WriteLogFile("WcsError", "Proc_CrnStnToLoc----" + em.Message);
}
}
///
/// 出库,库位 --> 堆垛机出库站
///
///
private void Proc_LocToCrnStn(int crnno)
{
int seqno = 0, seqno1 = 0, wrksts = 0, restnno = 0, ledno = 0, bay1 = 0;
string s_slocno = "", s_dlocno = "", s_picking = "N", s_emptymk = "N", sql = "", locsts = "", s_outabled = "", ls_sheetno = "", row = "", bay = "", lev = "", row1 = "";
int i_sstano = 0, i_dstano = 0, i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0;
//Common.Mode[crnno] = 3;
//Common.CrnState[crnno] = 0;
//Common.TaskNo[crnno] = 0;
if (Common.Mode[crnno] != Common.ci_CRN_ONLINE || Common.CrnState[crnno] != Common.ci_CRN_STS_IDLE || Common.TaskNo[crnno] != 0)
{
Common.gs_crnlastio[crnno] = "I";
lb_LocToCrnStn.Text = "堆垛机不符合条件--要求空闲/无ID";
return;
}
try
{
DataView dv_crnsts = Common.ExecAsrsSelect("select out_enable from dbo.asr_bas_crnp where crn_no=" + (crnno + 1) + "");
foreach (System.Data.DataRowView drow in dv_crnsts)
{
s_outabled = drow[0].ToString();
}
}
catch (Exception e)
{
lb_LocToCrnStn.Text = "堆垛机堆垛机出库是否禁用出错--" + e.Message;
return;
}
if (s_outabled != "Y")
{
lb_LocToCrnStn.Text = "堆垛机出库已禁用";
return;
}
sql = "select TOP 1 source_loc_no,loc_no,source_sta_no,sta_no,picking,wrk_no,crn_no,wrk_sts,io_type,sheet_no,io_pri,packed from asr_wrk_mast where crn_no=" + (crnno + 1) + " and wrk_sts=11 and io_type>100 order by io_pri desc,io_time,wrk_no asc";
try
{
DataView dv = Common.ExecAsrsSelect(sql);
if (dv.Count <= 0)
{
lb_LocToCrnStn.Text = "查询无待出库数据--wrk_sts=11";
return;
}
foreach (System.Data.DataRowView drow00 in dv)
{
s_slocno = drow00[0].ToString();
s_dlocno = drow00[1].ToString();
i_sstano = Convert.ToInt32(drow00[2].ToString());
i_dstano = Convert.ToInt32(drow00[3].ToString());
s_picking = drow00[4].ToString();
i_wrkno = Convert.ToInt32(drow00[5].ToString());
i_crnno = Convert.ToInt32(drow00[6].ToString());
i_wrksts = Convert.ToInt32(drow00[7].ToString());
i_iotype = Convert.ToInt32(drow00[8].ToString());
ls_sheetno = drow00[9].ToString();
//判断深库位,浅库位有货时执行移库任务
row1 = s_slocno.Substring(0, 2);
if (row1 == "01")
{
string row2 = "02";
string s_slocno1 = row2 + s_slocno.Substring(2, 5);
bool flag = Proc_ShallowLoctoLoc(s_slocno1, i_wrkno, crnno);
if (flag)
{
return;
}
}
if ((i_iotype < 100) || (i_crnno != crnno + 1) || (s_slocno == "") || (i_dstano == 0) || (i_dstano.ToString() == null) || (i_sstano == 0) || (i_sstano.ToString() == null))
{
lb_LocToCrnStn.Text = "查询工作档数据不符合条件--入出类型/堆垛机/站点";
continue;
}
try
{
DataView dv_locsts = Common.ExecAsrsSelect("select loc_sts from dbo.asr_loc_mast where loc_no='" + s_slocno + "'");
foreach (System.Data.DataRowView drow in dv_locsts)
{
locsts = drow[0].ToString();
}
}
catch (Exception e)
{
lb_LocToCrnStn.Text = "查询库存库位状态出错--" + e.Message;
continue;
}
if (locsts != "R" && locsts != "P")
{
lb_LocToCrnStn.Text = "库位状态不符合条件--库位" + s_slocno + "状态" + locsts;
continue;
}
switch (i_sstano)
{
case 100:
plcno = 0;
i_crnno = 1;
ledno = 0;
break;
case 200:
plcno = 0;
i_crnno = 2;
ledno = 1;
break;
}
if (i_crnno != (crnno + 1)) continue;
seqno = Common.GetStnSeq(i_sstano);
string s_autoing = Common.plc_s_autoing[plcno, seqno];
string s_loading = Common.plc_s_loading[plcno, seqno];
string s_canouting = Common.plc_s_canouting[plcno, seqno];
//string s_inreq1 = Common.plc_s_inreq1[plcno, seqno];
int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno];
if (s_autoing == "Y" && s_loading == "N" && s_canouting == "Y" && Common.plc_i_pakmk[plcno, seqno] == 0
&& i_wrk_no == 0 && Common.gs_crncmd[crnno] == "")
{
Common.gs_crncmd[crnno] = "08" + i_wrkno.ToString().PadLeft(4, '0') + s_slocno + Common.GetLocByStn(i_sstano);
Common.gs_crnlastio[crnno] = "I";
Common.plc_i_pakmk[plcno, seqno] = 1;
Common.plc_s_canouting[plcno, seqno] = "N";
}
}
}
catch (Exception e)
{
lb_LocToCrnStn.Text = "Proc_LocToCrnStn出错" + e.Message;
return;
}
}
///
/// 深库位出库,浅库位有货
///
/// 源库位
///
private bool Proc_ShallowLoctoLoc(string s_slocno, int wrk_no, int crnno)
{
bool flag = false;
try
{
int i_sstano = 0, i_dstano = 0, i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0;
string s_dlocno = "", s_picking = "N", s_locsts = "O", s_dlocsts = "", s_loctype = "", s_barcode = "", s_qty = "";
i_crnno = crnno + 1;
DataView dvloc_sts = Common.ExecAsrsSelect("select loc_sts,loc_type1,barcode from dbo.asr_loc_mast where loc_no='" + s_slocno + "'");
foreach (System.Data.DataRowView drow_locsts in dvloc_sts)
{
s_locsts = drow_locsts[0].ToString();
s_loctype = drow_locsts[1].ToString();
s_barcode = drow_locsts[2].ToString();
}
if (s_locsts == "R")
{
string sql = " select source_loc_no,loc_no,source_sta_no,sta_no,picking,wrk_no,crn_no,wrk_sts,io_type,sheet_no,io_pri from asr_wrk_mast where crn_no = 1 and wrk_sts=11 and source_loc_no =" + s_slocno + "";
DataView dv1 = Common.ExecAsrsSelect(sql);
if (dv1.Count > 0 && dv1 != null)
{
foreach (System.Data.DataRowView drow00 in dv1)
{
s_slocno = drow00[0].ToString();
s_dlocno = drow00[1].ToString();
i_sstano = Convert.ToInt32(drow00[2].ToString());
i_dstano = Convert.ToInt32(drow00[3].ToString());
s_picking = drow00[4].ToString();
i_wrkno = Convert.ToInt32(drow00[5].ToString());
i_crnno = Convert.ToInt32(drow00[6].ToString());
i_wrksts = Convert.ToInt32(drow00[7].ToString());
i_iotype = Convert.ToInt32(drow00[8].ToString());
}
int seqno = Common.GetStnSeq(i_sstano);
string s_autoing = Common.plc_s_autoing[plcno, seqno];
string s_loading = Common.plc_s_loading[plcno, seqno];
string s_canouting = Common.plc_s_canouting[plcno, seqno];
int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno];
//string s_inreq1 = Common.plc_s_inreq1[plcno, seqno];
//try
//{
// string sql1 = "select loc_sts from dbo.asr_loc_mast where loc_no='" + s_slocno + "'";
// DataView dv_sloc = Common.ExecAsrsSelect(sql1);
// foreach (System.Data.DataRowView drow1 in dv_sloc)
// {
// s_locsts = drow1[0].ToString();
// }
//}
//catch (Exception e)
//{
// lb_ShallowLocToLoc.Text = "查询库存库位状态出错--" + e.Message;
// return flag;
//}
try
{
string sql2 = "select loc_sts from dbo.asr_loc_mast where loc_no='" + s_dlocno + "'";
DataView dv_tloc = Common.ExecAsrsSelect(sql2);
foreach (System.Data.DataRowView drow2 in dv_tloc)
{
s_dlocsts = drow2[0].ToString();
}
}
catch (Exception e)
{
//lb_ShallowLocToLoc.Text = "查询库存库位状态出错--" + e.Message;
return flag;
}
if (i_iotype > 100 && s_locsts == "R") //i_iotype>100时执行出库任务
{
if (s_autoing == "Y" && s_loading == "N" && s_canouting == "Y" && Common.plc_i_pakmk[plcno, seqno] == 0
&& i_wrk_no == 0 && Common.gs_crncmd[crnno] == "")
{
Common.gs_crncmd[0] = "08" + i_wrkno.ToString().PadLeft(4, '0') + s_slocno + Common.GetLocByStn(i_sstano);
Common.gs_crnlastio[crnno] = "I";
Common.plc_i_pakmk[plcno, seqno] = 1;
Common.plc_s_canouting[plcno, seqno] = "N";
flag = true;
}
}
else if (i_iotype == 11 && s_locsts == "R" && s_dlocsts == "S") //i_iotype=11时执行移库任务
{
if (Common.gs_crncmd[crnno] == "")
{
Common.gs_crncmd[crnno] = "12" + i_wrkno.ToString().PadLeft(4, '0') + s_slocno + s_dlocno;
flag = true;
}
}
}
else
{
//lb_ShallowLocToLoc.Text = "深库位出库,浅库位:" + s_slocno + ";库位状态为R,但没有工作档";
Common.WriteLogFile("WcsLog", "深库位出库,浅库位:" + s_slocno + ";库位状态为R,但没有工作档");
return flag;
}
}
//浅库位没有移/出库任务,自动生成移库任务。
else if (s_locsts == "D" || s_locsts == "F")
{
string sqlDetl = "";
string sql = "select top 1 loc_no from asr_loc_mast where row1 in (1,3) and loc_sts = 'O' and loc_type1 = " + s_loctype;
DataView dvd_locno = Common.ExecAsrsSelect(sql);
if (dvd_locno.Count > 0 && dvd_locno != null)
{
i_wrkno = Common.GetWrkno(1);
if (i_wrkno == 0)
{
//lb_ShallowLocToLoc.Text = "生成工作号失败";
flag = true;
}
foreach (System.Data.DataRowView dloc in dvd_locno)
{
s_dlocno = dloc[0].ToString();
}
DateTime dt = DateTime.Now;
if (s_locsts == "D")
{
sqlDetl = "insert into asr_wrk_mast(wrk_no,wrk_sts,io_type,io_pri,crn_no,source_loc_no,loc_no,full_plt,picking,exit_mk,empty_mk,barcode,link_mis,appe_user,modi_user,io_time)";
sqlDetl += "values (" + i_wrkno + ",11,11,15," + i_crnno + ",'" + s_slocno + "','" + s_dlocno + "','N','N','N','Y','" + s_barcode + "','N','9527','9527','" + dt + "');";
sqlDetl += "update asr_loc_mast set loc_sts = 'R' where loc_no = " + s_slocno + ";";
sqlDetl += "update asr_loc_mast set loc_sts = 'S' where loc_no = " + s_dlocno + ";";
}
else if (s_locsts == "F")
{
sqlDetl = "insert into asr_wrk_mast(wrk_no,wrk_sts,io_type,io_pri,crn_no,source_loc_no,loc_no,full_plt,picking,exit_mk,empty_mk,barcode,link_mis,appe_user,modi_user,io_time)";
sqlDetl += "values (" + i_wrkno + ",11,11,15," + i_crnno + ",'" + s_slocno + "','" + s_dlocno + "','Y','N','N','N','" + s_barcode + "','N','9527','9527','" + dt + "');";
sqlDetl += " INSERT INTO asr_wrk_detl(wrk_no,mat_no,mat_name,specs,size,color,weight,qty,unit,zpallet,io_time,supplier) ";
sqlDetl += " SELECT " + i_wrkno + ",mat_no,mat_name,specs,size,color,weight,qty,unit,zpallet,'" + dt + "',supplier ";
sqlDetl += " FROM asr_loc_detl where loc_no ='" + s_slocno + "';";
sqlDetl += " update asr_loc_mast set loc_sts = 'R' where loc_no = " + s_slocno + ";";
sqlDetl += " update asr_loc_mast set loc_sts = 'S' where loc_no = " + s_dlocno + ";";
}
bool result = Common.ExecAsrsModify(sqlDetl);
if (result)
{
Common.gs_crncmd[crnno] = "12" + i_wrkno.ToString().PadLeft(4, '0') + s_slocno + s_dlocno;
flag = true;
}
}
else
{
//lb_ShallowLocToLoc.Text = "库位移转没有空库位可用";
Common.WriteLogFile("WcsLog", "库位移转错误:没有空库位可用");
flag = true;
}
}
else
{
return flag;
}
}
catch (Exception em)
{
//lb_ShallowLocToLoc.Text = "深库位出库浅库位有货,处理失败:" + em.Message;
Common.WriteLogFile("WcsError", "深库位出库浅库位有货,处理失败:" + em.Message);
return flag = true;
}
return flag;
}
#endregion
#region 异常维护
//private void buttonX3_Click(object sender, EventArgs e)
//{
// Common.AddPlcQuereCmd(0, "05000000000000"); //清空给PLC有出库资料信号
// //Common.AddPlcQuereCmd(0, "06000009990000");
//}
//private void tb_wrkno_Leave(object sender, EventArgs e)
//{
// try
// {
// if (tb_wrkno.Text.Trim() != "")
// {
// if (Common.ChkStrtoInt(tb_wrkno.Text.Trim()))
// {
// int wrkno = int.Parse(tb_wrkno.Text.Trim());
// string sql = "select wrk_sts from asr_wrk_mast where wrk_no=" + wrkno;
// DataView dv = Common.ExecAsrsSelect(sql);
// if (dv.Count <= 0)
// {
// MessageBox.Show("工作号在工作档中不存在", "提示");
// tb_wrkno.Focus();
// //tb_wrkno.SelectAll();
// return;
// }
// foreach (DataRowView drow in dv)
// {
// int sts = int.Parse(drow[0].ToString());
// switch (sts)
// {
// case 1:
// tb_wrksts.Text = "1.生成入库ID";
// break;
// case 2:
// tb_wrksts.Text = "2.设备上走";
// break;
// case 3:
// tb_wrksts.Text = "3.堆垛机入库中";
// break;
// case 4:
// tb_wrksts.Text = "4.入库完成";
// break;
// case 5:
// tb_wrksts.Text = "5.库存更新完成";
// break;
// case 11:
// tb_wrksts.Text = "11.生成出库ID";
// break;
// case 12:
// tb_wrksts.Text = "12.堆垛机出库中";
// break;
// case 13:
// tb_wrksts.Text = "13.堆垛机空出库错误";
// break;
// case 14:
// tb_wrksts.Text = "14.出库完成";
// break;
// case 15:
// tb_wrksts.Text = "15.出库更新完成";
// break;
// }
// btnWrkSts.Enabled = true;
// }
// }
// else
// {
// MessageBox.Show("请输入正确的工作号(只能为数字)", "提示");
// tb_wrksts.Focus();
// //tb_wrksts.SelectAll();
// return;
// }
// }
// }
// catch (Exception em)
// {
// MessageBox.Show(em.Message);
// }
//}
//private void btnWrkSts_Click(object sender, EventArgs e)
//{
// try
// {
// if (cb_wrksts.SelectedIndex < 0)
// {
// MessageBox.Show("请选择新工作状态", "提示");
// return;
// }
// int wrkno = int.Parse(tb_wrkno.Text.Trim());
// string sql = "select * from asr_wrk_mast where wrk_no=" + wrkno;
// if (Common.ExecAsrsSelect1(sql) > 0)
// {
// DialogResult dr = MessageBox.Show("确定更新工作状态吗?请谨慎操作", "提示", MessageBoxButtons.OKCancel);
// if (dr == DialogResult.OK)
// {
// int wrksts = 0;
// switch (cb_wrksts.SelectedIndex)
// {
// case 0:
// wrksts = 1;
// break;
// case 1:
// wrksts = 2;
// break;
// case 2:
// wrksts = 3;
// break;
// case 3:
// wrksts = 4;
// break;
// case 4:
// wrksts = 5;
// break;
// case 5:
// wrksts = 11;
// break;
// case 6:
// wrksts = 12;
// break;
// case 7:
// wrksts = 13;
// break;
// case 8:
// wrksts = 14;
// break;
// case 9:
// wrksts = 15;
// break;
// }
// if (wrksts > 0)
// {
// sql = "update asr_wrk_mast set wrk_sts=" + wrksts + " where wrk_no=" + wrkno;
// SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
// sqlconn.Open();
// SqlTransaction sqltrans = sqlconn.BeginTransaction();
// SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
// sqlcmd.Transaction = sqltrans;
// try
// {
// sqlcmd.ExecuteNonQuery();
// sqltrans.Commit();
// MessageBox.Show("工作状态更新成功", "提示");
// btnWrkSts.Enabled = false;
// tb_wrkno.Text = "";
// tb_wrksts.Text = "";
// cb_wrksts.SelectedIndex = -1;
// }
// catch (SqlException em)
// {
// sqltrans.Rollback();
// MessageBox.Show("更新工作状态失败:" + em.Message);
// }
// finally
// {
// sqlcmd.Dispose();
// sqlconn.Dispose();
// }
// }
// else
// {
// MessageBox.Show("请重新选择新工作状态", "提示");
// return;
// }
// }
// }
// else
// {
// MessageBox.Show("工作号在工作档中不存在", "提示");
// return;
// }
// }
// catch (Exception em)
// {
// MessageBox.Show(em.Message);
// }
//}
//private void tb_locno_Leave(object sender, EventArgs e)
//{
// try
// {
// if (tb_locno.Text.Trim() != "")
// {
// if (tb_locno.Text.Trim().Length == 7)
// {
// string locno = tb_locno.Text.Trim();
// string sql = "select loc_sts from asr_loc_mast where loc_no='" + locno + "'";
// DataView dv = Common.ExecAsrsSelect(sql);
// if (dv.Count <= 0)
// {
// MessageBox.Show("库位号在库存档中不存在", "提示");
// tb_locno.Focus();
// return;
// }
// foreach (DataRowView drow in dv)
// {
// string sts = drow[0].ToString();
// switch (sts)
// {
// case "D":
// tb_locsts.Text = "D.周转箱在库";
// break;
// case "O":
// tb_locsts.Text = "O.空库位";
// break;
// case "R":
// tb_locsts.Text = "R.出库预约";
// break;
// case "S":
// tb_locsts.Text = "S.入库预约";
// break;
// case "X":
// tb_locsts.Text = "X.库位禁用";
// break;
// }
// btnLocSts.Enabled = true;
// }
// }
// else
// {
// MessageBox.Show("库位号长度是7位", "提示");
// tb_locno.Focus();
// return;
// }
// }
// }
// catch (Exception em)
// {
// MessageBox.Show(em.Message);
// }
//}
//private void btnLocSts_Click(object sender, EventArgs e)
//{
// try
// {
// if (cb_locsts.SelectedIndex < 0)
// {
// MessageBox.Show("请选择新库位状态", "提示");
// return;
// }
// string locno = tb_locno.Text.Trim();
// string sql = "select * from asr_loc_mast where loc_no='" + locno + "'";
// if (Common.ExecAsrsSelect1(sql) > 0)
// {
// DialogResult dr = MessageBox.Show("确定更新库位状态吗?请谨慎操作", "提示", MessageBoxButtons.OKCancel);
// if (dr == DialogResult.OK)
// {
// string locsts = "";
// switch (cb_locsts.SelectedIndex)
// {
// case 0:
// locsts = "D";
// break;
// case 1:
// locsts = "O";
// break;
// case 2:
// locsts = "R";
// break;
// case 3:
// locsts = "S";
// break;
// case 4:
// locsts = "X";
// break;
// }
// if (locsts != "")
// {
// sql = "update asr_loc_mast set loc_sts='" + locsts + "' where loc_no=" + locno;
// SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
// sqlconn.Open();
// SqlTransaction sqltrans = sqlconn.BeginTransaction();
// SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
// sqlcmd.Transaction = sqltrans;
// try
// {
// sqlcmd.ExecuteNonQuery();
// sqltrans.Commit();
// MessageBox.Show("库位状态更新成功", "提示");
// btnLocSts.Enabled = false;
// tb_locno.Text = "";
// tb_locsts.Text = "";
// cb_locsts.SelectedIndex = -1;
// }
// catch (SqlException em)
// {
// sqltrans.Rollback();
// MessageBox.Show("更新库位状态失败:" + em.Message);
// }
// finally
// {
// sqlcmd.Dispose();
// sqlconn.Dispose();
// }
// }
// else
// {
// MessageBox.Show("请重新选择新库位状态", "提示");
// return;
// }
// }
// }
// else
// {
// MessageBox.Show("库位号在库存档中不存在", "提示");
// return;
// }
// }
// catch (Exception em)
// {
// MessageBox.Show(em.Message);
// }
//}
//private void buttonX4_Click(object sender, EventArgs e)
//{
// try
// {
// string sql = "select wrk_no,wrk_sts from asr_wrk_mast where wrk_sts=2 or wrk_sts=3";
// DataView dv = Common.ExecAsrsSelect(sql);
// if (dv.Count > 0)
// {
// foreach (DataRowView drow in dv)
// {
// int wrkno = int.Parse(drow[0].ToString());
// int wrksts = int.Parse(drow[1].ToString());
// if (Common.plc_i_Wrk_no[0, 0] == wrkno || Common.plc_i_Wrk_no[0, 1] == wrkno || Common.crn_i_Wrkno[0] == wrkno)
// {
// DialogResult dr = MessageBox.Show("设备上还存在该工作号[" + wrkno + "]对应料盒,确定手工完结?请谨慎操作", "提示", MessageBoxButtons.OKCancel);
// if (dr == DialogResult.Cancel) continue;
// }
// else
// {
// DialogResult dr = MessageBox.Show("确定手工完结[工作号:" + wrkno + ";工作状态:" + wrksts + "]?请谨慎操作", "提示", MessageBoxButtons.OKCancel);
// if (dr == DialogResult.Cancel) continue;
// }
// sql = "update asr_wrk_mast set wrk_sts=4 where wrk_no=" + wrkno;
// SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
// sqlconn.Open();
// SqlTransaction sqltrans = sqlconn.BeginTransaction();
// SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
// sqlcmd.Transaction = sqltrans;
// try
// {
// sqlcmd.ExecuteNonQuery();
// sqltrans.Commit();
// MessageBox.Show("入库手工完结成功", "提示");
// }
// catch (SqlException em)
// {
// sqltrans.Rollback();
// MessageBox.Show("入库手工完结失败:" + em.Message);
// }
// finally
// {
// sqlcmd.Dispose();
// sqlconn.Dispose();
// }
// }
// }
// else
// {
// MessageBox.Show("工作档中不存在入库待完结资料", "提示");
// return;
// }
// }
// catch (Exception em)
// {
// MessageBox.Show(em.Message);
// }
//}
//private void buttonX5_Click(object sender, EventArgs e)
//{
// try
// {
// string sql = "select wrk_no,wrk_sts from asr_wrk_mast where wrk_sts=11 or wrk_sts=12";
// DataView dv = Common.ExecAsrsSelect(sql);
// if (dv.Count > 0)
// {
// foreach (DataRowView drow in dv)
// {
// int wrkno = int.Parse(drow[0].ToString());
// int wrksts = int.Parse(drow[1].ToString());
// if (Common.plc_i_Wrk_no[0, 0] == wrkno || Common.plc_i_Wrk_no[0, 1] == wrkno || Common.crn_i_Wrkno[0] == wrkno)
// {
// DialogResult dr = MessageBox.Show("设备上还存在该工作号[" + wrkno + "]对应料盒,确定出库手工完结?请谨慎操作", "提示", MessageBoxButtons.OKCancel);
// if (dr == DialogResult.Cancel) continue;
// }
// else
// {
// DialogResult dr = MessageBox.Show("确定出库手工完结[工作号:" + wrkno + ";工作状态:" + wrksts + "]?请谨慎操作", "提示", MessageBoxButtons.OKCancel);
// if (dr == DialogResult.Cancel) continue;
// }
// sql = "update asr_wrk_mast set wrk_sts=14 where wrk_no=" + wrkno;
// SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
// sqlconn.Open();
// SqlTransaction sqltrans = sqlconn.BeginTransaction();
// SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
// sqlcmd.Transaction = sqltrans;
// try
// {
// sqlcmd.ExecuteNonQuery();
// sqltrans.Commit();
// MessageBox.Show("出库手工完结成功", "提示");
// }
// catch (SqlException em)
// {
// sqltrans.Rollback();
// MessageBox.Show("出库手工完结失败:" + em.Message);
// }
// finally
// {
// sqlcmd.Dispose();
// sqlconn.Dispose();
// }
// }
// }
// else
// {
// MessageBox.Show("工作档中不存在出库待完结资料", "提示");
// return;
// }
// }
// catch (Exception em)
// {
// MessageBox.Show(em.Message);
// }
//}
#endregion
#region 手动发送LED
//private void b_ledSend_Click(object sender, EventArgs e)
//{
// try
// {
// //if (tb_ledtext1.Text == "" || tb_ledtext2.Text == "" || tb_ledtext3.Text == "" || tb_ledtext4.Text == "")
// if (tb_ledtext1.Text == "" || tb_ledtext2.Text == "" || tb_ledtext3.Text == "")
// {
// MessageBox.Show("请输入发布内容");
// return;
// }
// //string data = tb_ledtext1.Text + ";" + tb_ledtext2.Text + ";" + tb_ledtext3.Text + ";" + tb_ledtext4.Text;
// string data = tb_ledtext1.Text + ";" + tb_ledtext2.Text + ";" + tb_ledtext3.Text;
// if (rb_led1.Checked)
// {
// //Common.gi_led_Pages[0] = 4;
// Common.gs_led_data[0] = data;
// tb_sendtoled1.Text = data;
// }
// else if (rb_led2.Checked)
// {
// //Common.gi_led_Pages[1] = 4;
// Common.gs_led_data[1] = data;
// tb_sendtoled2.Text = data;
// }
// }
// catch (Exception em)
// {
// MessageBox.Show("发送失败" + em.Message);
// }
//}
#endregion
///
/// 字体变色
///
///
private void fontColorSwitch(int a)
{
try
{
switch (a)
{
case 0:
break;
case 1:
this.button_main.ForeColor = Color.SandyBrown;
this.button_plc.ForeColor = Color.White;
this.button_crn.ForeColor = Color.White;
break;
case 2:
this.button_plc.ForeColor = Color.SandyBrown;
this.button_main.ForeColor = Color.White;
this.button_crn.ForeColor = Color.White;
break;
case 3:
this.button_crn.ForeColor = Color.SandyBrown;
this.button_main.ForeColor = Color.White;
this.button_plc.ForeColor = Color.White;
break;
}
}
catch
{
}
}
///
/// 主控界面置顶
///
///
///
private void button_main_Click(object sender, EventArgs e)
{
//panel_left.Parent = panel_plc_top;
//panel_barcode.Parent = this;
//panel_led.Parent = this;
//panel_crn_top.Parent = this;
//panel_plc_top.Parent = this;
//panel_main.Parent = this;
//panel_menu.Parent = panel_min_map;
//panel_main.BringToFront();
//panel_main.Dock = DockStyle.Fill;
//int value = 1;
//fontColorSwitch(value);
panel_left.Parent = panel_plc_top;
panel_menu.Parent = panel_min_map;
this.tc_main.SelectedTab = tp_map;
int value = 1;
fontColorSwitch(value);
}
///
/// 输送设备界面按钮
///
///
///
private void button_plc_Click(object sender, EventArgs e)
{
//panel_left.Parent = panel_plc_top;
//panel_left.Dock = DockStyle.Left;
//panel_barcode.Parent = this;
//panel_led.Parent = this;
//panel_crn_top.Parent = this;
//panel_plc_top.Parent = this;
//panel_main.Parent = this;
//panel_menu.Parent = panel_left;
//panel_plc_top.BringToFront();
//panel_plc_top.Dock = DockStyle.Fill;
//int value = 2;
//fontColorSwitch(value);
panel_left.Parent = panel_plc_top;
panel_menu.Parent = panel_left;
this.tc_main.SelectedTab = tp_plc;
int value = 2;
fontColorSwitch(value);
}
///
/// 堆垛机界面按钮
///
///
///
private void button_crn_Click(object sender, EventArgs e)
{
//panel_left.Parent = panel_crn_top;
//panel_left.Dock = DockStyle.Left;
//panel_barcode.Parent = this;
//panel_led.Parent = this;
//panel_crn_top.Parent = this;
//panel_plc_top.Parent = this;
//panel_main.Parent = this;
//panel_menu.Parent = panel_left;
//panel_crn_top.BringToFront();
//panel_crn_top.Dock = DockStyle.Fill;
//int value = 3;
//fontColorSwitch(value);
panel_left.Parent = panel_crn_top;
panel_menu.Parent = panel_left;
this.tc_main.SelectedTab = tp_crn;
int value = 3;
fontColorSwitch(value);
}
///
/// 关闭键
///
///
///
private void button59_Click(object sender, EventArgs e)
{
timer2.Start();
}
///
/// 拖动
///
///
///
private void panel_plc_head_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
mouseOff = new Point(-e.X, -e.Y);//获得当前鼠标的坐标
leftFlag = true;
}
}
private void panel_plc_head_MouseMove(object sender, MouseEventArgs e)
{
if (leftFlag)
{
WindowState = FormWindowState.Normal;
//this.button78.BackgroundImage = Image.FromFile(Common.picpath + "全屏.png");
Point mouseSet = Control.MousePosition;//获得移动后鼠标的坐标
mouseSet.Offset(mouseOff.X, mouseOff.Y);//设置移动后的位置
Location = mouseSet;
}
}
private void panel_plc_head_MouseUp(object sender, MouseEventArgs e)
{
if (leftFlag)
{
leftFlag = false;
}
}
///
/// 渐隐关闭控件
///
///
///
private void timer2_Tick(object sender, EventArgs e)
{
if (this.Opacity >= 0.025)
{
this.Opacity -= 0.025;
}
else
{
timer2.Stop();
this.Close();
}
}
///
/// 最大化按钮
///
///
///
private void button78_Click_1(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Normal)
{
this.WindowState = FormWindowState.Maximized;
//this.button78.BackgroundImage = Image.FromFile(Common.picpath + "取消全屏.png");
}
else
{
this.WindowState = FormWindowState.Normal;
//this.button78.BackgroundImage = Image.FromFile(Common.picpath + "全屏.png");
}
}
///
/// 最小化按钮
///
///
///
private void button79_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
private void YanShi1_Click(object sender, EventArgs e)
{
try
{
if (Common.gi_Yanshi_Flag[0] == false)
{
Common.gi_Yanshi_Flag[0] = true;
YanShi1.Text = "1#暂停";
YanShi1.ForeColor = Color.Blue;
}
else
{
Common.gi_Yanshi_Flag[0] = false;
YanShi1.Text = "1#演示";
YanShi1.ForeColor = Color.Red;
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "YanShi1_Click--1#演示功能出错:" + em.Message);
toolStripStatusLabel4.Text = "1#演示功能出错:" + em.Message;
}
}
private void YanShi2_Click(object sender, EventArgs e)
{
try
{
if (Common.gi_Yanshi_Flag[1] == false)
{
Common.gi_Yanshi_Flag[1] = true;
YanShi2.Text = "2#暂停";
YanShi2.ForeColor = Color.Blue;
}
else
{
Common.gi_Yanshi_Flag[1] = false;
YanShi2.Text = "2#演示";
YanShi2.ForeColor = Color.Red;
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "YanShi2_Click--2#演示功能出错:" + em.Message);
toolStripStatusLabel4.Text = "2#演示功能出错:" + em.Message;
}
}
private void YanShi3_Click(object sender, EventArgs e)
{
{
try
{
if (Common.gi_Yanshi_Flag[2] == false)
{
Common.gi_Yanshi_Flag[2] = true;
YanShi3.Text = "3#暂停";
YanShi3.ForeColor = Color.Blue;
}
else
{
Common.gi_Yanshi_Flag[2] = false;
YanShi3.Text = "3#演示";
YanShi3.ForeColor = Color.Red;
}
}
catch (Exception em)
{
Common.WriteLogFile("WcsError", "YanShi3_Click--3#演示功能出错:" + em.Message);
toolStripStatusLabel4.Text = "3#演示功能出错:" + em.Message;
}
}
}
private void button334_Click(object sender, EventArgs e)
{
timer2.Start();
}
private void button333_Click(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Normal)
{
this.WindowState = FormWindowState.Maximized;
this.button333.BackgroundImage = Image.FromFile(Common.picpath + "取消全屏.png");
}
else
{
this.WindowState = FormWindowState.Normal;
this.button333.BackgroundImage = Image.FromFile(Common.picpath + "全屏.png");
}
}
private void button332_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
private void button337_Click(object sender, EventArgs e)
{
timer2.Start();
}
private void button79_Click_1(object sender, EventArgs e)
{
timer2.Start();
}
private void button340_Click(object sender, EventArgs e)
{
timer2.Start();
}
private void button339_Click(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Normal)
{
this.WindowState = FormWindowState.Maximized;
this.button339.BackgroundImage = Image.FromFile(Common.picpath + "取消全屏.png");
}
else
{
this.WindowState = FormWindowState.Normal;
this.button339.BackgroundImage = Image.FromFile(Common.picpath + "全屏.png");
}
}
private void button78_Click(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Normal)
{
this.WindowState = FormWindowState.Maximized;
this.button78.BackgroundImage = Image.FromFile(Common.picpath + "取消全屏.png");
}
else
{
this.WindowState = FormWindowState.Normal;
this.button78.BackgroundImage = Image.FromFile(Common.picpath + "全屏.png");
}
}
private void button336_Click(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Normal)
{
this.WindowState = FormWindowState.Maximized;
this.button336.BackgroundImage = Image.FromFile(Common.picpath + "取消全屏.png");
}
else
{
this.WindowState = FormWindowState.Normal;
this.button336.BackgroundImage = Image.FromFile(Common.picpath + "全屏.png");
}
}
private void button335_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
private void button59_Click_1(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
private void button338_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
}
}