988 lines
		
	
	
		
			39 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			988 lines
		
	
	
		
			39 KiB
		
	
	
	
		
			C#
		
	
	
	
| 
								 | 
							
								using System;
							 | 
						|||
| 
								 | 
							
								using System.Collections.Generic;
							 | 
						|||
| 
								 | 
							
								using System.Linq;
							 | 
						|||
| 
								 | 
							
								using System.Text;
							 | 
						|||
| 
								 | 
							
								using System.Threading;
							 | 
						|||
| 
								 | 
							
								using System.Data;
							 | 
						|||
| 
								 | 
							
								using System.Windows.Forms;
							 | 
						|||
| 
								 | 
							
								using Model;
							 | 
						|||
| 
								 | 
							
								using DeiNiu.wms.Data;
							 | 
						|||
| 
								 | 
							
								using DeiNiu.wms.Data.Model;
							 | 
						|||
| 
								 | 
							
								using DeiNiu.Utils;
							 | 
						|||
| 
								 | 
							
								 using DeiNiu.wms.Logical;
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								namespace elelab
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    public class pick
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        public delegate void lightReturn(int eleId, int colorPort, int eleAddress, int count);
							 | 
						|||
| 
								 | 
							
								        public static event lightReturn lightOffEvent;
							 | 
						|||
| 
								 | 
							
								        public static Thread pick_work;
							 | 
						|||
| 
								 | 
							
								        public static Thread pick_work_support;
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
								           
							 | 
						|||
| 
								 | 
							
								        public static bool begain_pick = false;
							 | 
						|||
| 
								 | 
							
								        //  public static bool Threads_state;
							 | 
						|||
| 
								 | 
							
								        // public static bool out_start_state;
							 | 
						|||
| 
								 | 
							
								        public static byte[,] ele_lab = new byte[3000, 100];//ele_id address type 0 拣选 1 播种 2 装车
							 | 
						|||
| 
								 | 
							
								        public static uart_dis_data[] ele_lab_data = new uart_dis_data[10000];//ele_id address type 0 拣选 1 播种 2 装车
							 | 
						|||
| 
								 | 
							
								        public static int receive_add = 0;
							 | 
						|||
| 
								 | 
							
								        public static int manage_add = 0;
							 | 
						|||
| 
								 | 
							
								        public static int add_max = 10000;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public static int[] pick_part_task = new int[100];//分区名称 分区结果 0 没有任务 正在处理任务
							 | 
						|||
| 
								 | 
							
								        public static int[] seed_part_task = new int[100];//分区名称 分区结果 0 没有任务 正在处理任务
							 | 
						|||
| 
								 | 
							
								        public static int[] tran_part_task = new int[100];//分区名称 分区结果 0 没有任务 正在处理任务
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								   //     public static int port_max = 100;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public static bool pick_task = true;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public static List<int> activeComports = new List<int>() ;//激活的com口
							 | 
						|||
| 
								 | 
							
								         
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        private static byte get_byte(string data)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            int length = data.Length;
							 | 
						|||
| 
								 | 
							
								            List<string> str = new List<string>();
							 | 
						|||
| 
								 | 
							
								            for (int i = 0; i < length; i++)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                string result = data.Substring(i, 1);
							 | 
						|||
| 
								 | 
							
								                char aaaq = Convert.ToChar(result);
							 | 
						|||
| 
								 | 
							
								                if ((aaaq >= 0x30) && (aaaq <= 0x39))
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    str.Add(data.Substring(i, 1));
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            if (str.Count == 1)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                return Convert.ToByte(str[0]);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            else if (str.Count == 2)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                int len = Convert.ToInt16(str[0]);
							 | 
						|||
| 
								 | 
							
								                int len1 = Convert.ToInt16(str[1]);
							 | 
						|||
| 
								 | 
							
								                len = len * 10 + len1;
							 | 
						|||
| 
								 | 
							
								                return Convert.ToByte(len);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            else if (str.Count == 3)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                int len = Convert.ToInt16(str[0]);
							 | 
						|||
| 
								 | 
							
								                int len1 = Convert.ToInt16(str[1]);
							 | 
						|||
| 
								 | 
							
								                int len2 = Convert.ToInt16(str[2]);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                len = len * 100 + len1 * 10 + len2;
							 | 
						|||
| 
								 | 
							
								                return Convert.ToByte(len);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            return 0;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        private bool send_data(DataTable[] ds, byte byt)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            for (int j = 0; j < ds.Length; j++)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                //string part = ;
							 | 
						|||
| 
								 | 
							
								                byte part_byte = get_byte(ds[j].Rows[0]["part"].ToString());
							 | 
						|||
| 
								 | 
							
								                string port = ds[j].Rows[0]["port"].ToString();
							 | 
						|||
| 
								 | 
							
								                byte port_byte = get_byte(port);
							 | 
						|||
| 
								 | 
							
								                byte led_color = get_byte(ds[j].Rows[0]["color"].ToString());
							 | 
						|||
| 
								 | 
							
								                elelab.pick.make_data(ds[j], led_color, part_byte, port_byte, null, null, null, byt);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            return true;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								       
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        private static void init_sys_port(enumLabelPickType pickType)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								           // activeComports.Clear();
							 | 
						|||
| 
								 | 
							
								            clear_order order = new clear_order();
							 | 
						|||
| 
								 | 
							
								            int port;
							 | 
						|||
| 
								 | 
							
								            for (int i = 0; i < unart_manage.com_count; i++)//init com0-10
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                int com = Convert.ToByte(i);
							 | 
						|||
| 
								 | 
							
								                if (elelab.unart_manage.init_com_sys(com, true) == true)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    port = Convert.ToInt16(i);
							 | 
						|||
| 
								 | 
							
								                    // order = Convert.ToInt16(dt.Rows[i]["ele_order"]);
							 | 
						|||
| 
								 | 
							
								                    order.order = Convert.ToByte(i);
							 | 
						|||
| 
								 | 
							
								                    order.state =Convert.ToByte((int)pickType);
							 | 
						|||
| 
								 | 
							
								                    if (unart_manage.com_manage[port].clear_order(order))
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        activeComports.Add( port);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								             
							 | 
						|||
| 
								 | 
							
								            init_pick();
							 | 
						|||
| 
								 | 
							
								            // clear_order(dt);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        
							 | 
						|||
| 
								 | 
							
								       /* public static bool clear_order(DataTable dt)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            int port;
							 | 
						|||
| 
								 | 
							
								            clear_order order = new clear_order();
							 | 
						|||
| 
								 | 
							
								            for (int i = 0; i < dt.Rows.Count; i++)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                port = Convert.ToInt16(dt.Rows[i]["port"]);
							 | 
						|||
| 
								 | 
							
								                // order = Convert.ToInt16(dt.Rows[i]["ele_order"]);
							 | 
						|||
| 
								 | 
							
								                order.order = Convert.ToByte(dt.Rows[i]["ele_order"]);
							 | 
						|||
| 
								 | 
							
								                order.state = 1;
							 | 
						|||
| 
								 | 
							
								                unart_manage.com_manage[port].clear_order(order);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            return true; 
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        * */
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public static void init_pick()
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            //为数据处理开辟线程
							 | 
						|||
| 
								 | 
							
								            // Thread workTicketThread;
							 | 
						|||
| 
								 | 
							
								            //Thread workTicketThread;
							 | 
						|||
| 
								 | 
							
								            if (pick_work != null)
							 | 
						|||
| 
								 | 
							
								                return;
							 | 
						|||
| 
								 | 
							
								            pick_work = new Thread(pick_sys);
							 | 
						|||
| 
								 | 
							
								            // Make this a background thread, so it will terminate when the main thread/process is de-activated
							 | 
						|||
| 
								 | 
							
								            pick_work.IsBackground = true;
							 | 
						|||
| 
								 | 
							
								            //pick_work.SetApartmentState(ApartmentState.STA);
							 | 
						|||
| 
								 | 
							
								            pick_work.SetApartmentState(ApartmentState.MTA);
							 | 
						|||
| 
								 | 
							
								            // Start the Work
							 | 
						|||
| 
								 | 
							
								            pick_work.Start();
							 | 
						|||
| 
								 | 
							
								            //workerThreads[i] = workTicketThread;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public static void init_pick_support()
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            //为数据处理开辟线程
							 | 
						|||
| 
								 | 
							
								            // Thread workTicketThread;
							 | 
						|||
| 
								 | 
							
								            //Thread workTicketThread;
							 | 
						|||
| 
								 | 
							
								            pick_work_support = new Thread(pick_sys_support);
							 | 
						|||
| 
								 | 
							
								            // Make this a background thread, so it will terminate when the main thread/process is de-activated
							 | 
						|||
| 
								 | 
							
								            pick_work_support.IsBackground = true;
							 | 
						|||
| 
								 | 
							
								            //pick_work.SetApartmentState(ApartmentState.STA);
							 | 
						|||
| 
								 | 
							
								            pick_work_support.SetApartmentState(ApartmentState.MTA);
							 | 
						|||
| 
								 | 
							
								            // Start the Work
							 | 
						|||
| 
								 | 
							
								            pick_work_support.Start();
							 | 
						|||
| 
								 | 
							
								            //workerThreads[i] = workTicketThread;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public static void wake_thread()
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								          //  if (Convert.ToInt16(pick_work.ThreadState) == 68)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                try
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    if (Convert.ToInt16(pick_work.ThreadState) == 68)
							 | 
						|||
| 
								 | 
							
								                    pick_work.Resume();
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                catch(Exception  er)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    LogHelper.WriteLog(typeof(pick), er);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public static void wake_support_thread()
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            if (Convert.ToInt16(pick_work_support.ThreadState) == 68)
							 | 
						|||
| 
								 | 
							
								                pick_work_support.Resume();
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        private static void get_data(string data, out int dot_station, out int total_num)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            data = Convert.ToDouble(data).ToString();
							 | 
						|||
| 
								 | 
							
								            string[] count = data.Split('.');//Out_count
							 | 
						|||
| 
								 | 
							
								            int full = Convert.ToInt16(count[0]);
							 | 
						|||
| 
								 | 
							
								            int dot_num;
							 | 
						|||
| 
								 | 
							
								            dot_station = 0;
							 | 
						|||
| 
								 | 
							
								            total_num = full;
							 | 
						|||
| 
								 | 
							
								            if (count.Length > 1)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                dot_num = Convert.ToInt16(count[1]);
							 | 
						|||
| 
								 | 
							
								                if (dot_num > 0)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    if (dot_num < 10)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        total_num = full * 10 + dot_num;
							 | 
						|||
| 
								 | 
							
								                        dot_station = 1;
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else if ((dot_num > 9) && (dot_num < 100))
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        total_num = full * 100 + dot_num;
							 | 
						|||
| 
								 | 
							
								                        dot_station = 2;
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else if ((dot_num > 99) && (dot_num < 1000))
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        total_num = full * 1000 + dot_num;
							 | 
						|||
| 
								 | 
							
								                        dot_station = 3;
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else if ((dot_num > 999) && (dot_num < 10000))
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        total_num = full * 10000 + dot_num;
							 | 
						|||
| 
								 | 
							
								                        dot_station = 4;
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        dot_station = 0;
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        
							 | 
						|||
| 
								 | 
							
								        public static bool make_data(DataTable ds, byte led_color, byte ele_order_id, byte port,
							 | 
						|||
| 
								 | 
							
								                     string[] ele_lab_id, string[] ele_address, string[] Out_count, byte type)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								             
							 | 
						|||
| 
								 | 
							
								            List<string> statuKeys = new List<string>();
							 | 
						|||
| 
								 | 
							
								            if (ds != null)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                if (ds.Rows.Count == 0)
							 | 
						|||
| 
								 | 
							
								                    return false;
							 | 
						|||
| 
								 | 
							
								                uart_dis_data[] ele_data_comment = new uart_dis_data[ds.Rows.Count];
							 | 
						|||
| 
								 | 
							
								                for (int j = 0; j < ds.Rows.Count; j++)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].channel_id = 0; 
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].dis_type = Convert.ToByte(ds.Rows[j]["color"].ToString()); ; 
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].ele_id =  Convert.ToInt16(ds.Rows[j]["ele_lab_id"].ToString());
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].kucun_id = 0;
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].little_ele_id = Convert.ToByte(ds.Rows[j]["ele_address"].ToString());
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].order = Convert.ToByte(ele_order_id);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].port = "1";
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].receive_count = 0;
							 | 
						|||
| 
								 | 
							
								                    int dot_station;
							 | 
						|||
| 
								 | 
							
								                    int total_num;
							 | 
						|||
| 
								 | 
							
								                    string[] count = ds.Rows[j]["send_count"].ToString().Split('.');//Out_count
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    get_data(ds.Rows[j]["send_count"].ToString(), out dot_station, out total_num);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    //total_num = Convert.ToInt16(count[0]);
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].send_count = total_num;//.ToString());
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].dot = Convert.ToByte(0);
							 | 
						|||
| 
								 | 
							
								                    //ele_data_comment[j].dot = 0;
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].WarehousingID = 0;
							 | 
						|||
| 
								 | 
							
								                    ele_lab[ele_data_comment[j].ele_id, ele_data_comment[j].little_ele_id] = type;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    statuKeys.Add(Util.getLightKey(led_color,  Convert.ToInt16(ds.Rows[j]["ele_lab_id"].ToString()), Convert.ToByte(ds.Rows[j]["ele_address"].ToString())));
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                } 
							 | 
						|||
| 
								 | 
							
								                clear_order order = new clear_order();
							 | 
						|||
| 
								 | 
							
								                order.order = Convert.ToByte(ele_order_id);
							 | 
						|||
| 
								 | 
							
								                order.state = 1;
							 | 
						|||
| 
								 | 
							
								                if (unart_manage.com_manage[port].clear_order(order) == false)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    LogHelper.WriteLog(typeof(pick), string.Format(" port {0} clear fail",port));
							 | 
						|||
| 
								 | 
							
								                    //MessageBox.Show("clear fail");
							 | 
						|||
| 
								 | 
							
								                     return false;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                //elelab.ele_base.usart_send_state = false; //ele .usart_send_state = false;
							 | 
						|||
| 
								 | 
							
								                while (unart_manage.com_manage[port].send_state_finish == false) ;
							 | 
						|||
| 
								 | 
							
								                unart_manage.com_manage[port].send_state_finish = false;
							 | 
						|||
| 
								 | 
							
								                unart_manage.com_manage[port].usart_send_state = false;
							 | 
						|||
| 
								 | 
							
								                unart_manage.com_manage[port].usart_send_result = "";
							 | 
						|||
| 
								 | 
							
								                if (unart_manage.com_manage[port].write_data(ele_data_comment) == false)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    LogHelper.WriteLog(typeof(pick), string.Format(" port {0} send fail", port));
							 | 
						|||
| 
								 | 
							
								                    //MessageBox.Show("send  fail") ;
							 | 
						|||
| 
								 | 
							
								                    unart_manage.com_manage[port].send_state_finish = true;
							 | 
						|||
| 
								 | 
							
								                    unart_manage.com_manage[port].usart_send_state = true;
							 | 
						|||
| 
								 | 
							
								                    unart_manage.com_manage[port].usart_send_result = "";
							 | 
						|||
| 
								 | 
							
								                     return false;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                string result;
							 | 
						|||
| 
								 | 
							
								                bool isLightsSuccess = unart_manage.com_manage[port].wait_ack(out result);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                foreach(string key in statuKeys){
							 | 
						|||
| 
								 | 
							
								                    WmsConstants.WAVE_CURRENT_LIGHTS_STATUS[key] = isLightsSuccess;
							 | 
						|||
| 
								 | 
							
								                } 
							 | 
						|||
| 
								 | 
							
								                return isLightsSuccess;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            else
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                uart_dis_data[] ele_data_comment = new uart_dis_data[ele_lab_id.Length];
							 | 
						|||
| 
								 | 
							
								                for (int j = 0; j < ele_lab_id.Length; j++)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].channel_id = 0; 
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].dis_type = led_color; 
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].ele_id = Convert.ToInt16(ele_lab_id[j].ToString());
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].kucun_id = 0;
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].little_ele_id = Convert.ToByte(ele_address[j].ToString());
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].order = Convert.ToByte(ele_order_id);
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].port = "1";
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].receive_count = 0;
							 | 
						|||
| 
								 | 
							
								                    string[] count = Out_count[j].ToString().Split('.');
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].send_count = Convert.ToInt16(count[0]);//.ToString());
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].state = 1;
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].WarehousingID = 0;
							 | 
						|||
| 
								 | 
							
								                    ele_lab[ele_data_comment[j].ele_id, ele_data_comment[j].little_ele_id] = type;
							 | 
						|||
| 
								 | 
							
								                }// //向串口发送数据
							 | 
						|||
| 
								 | 
							
								                clear_order order = new clear_order();
							 | 
						|||
| 
								 | 
							
								                order.order = Convert.ToByte(ele_order_id);
							 | 
						|||
| 
								 | 
							
								                order.state = 1;
							 | 
						|||
| 
								 | 
							
								                if (unart_manage.com_manage[port].clear_order(order) == false)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    return false;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                if (unart_manage.com_manage[port].write_data(ele_data_comment) == false)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    return false;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                return true;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								         public static bool clear_dis(byte port, byte ele_order_id)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            clear_order order = new clear_order();
							 | 
						|||
| 
								 | 
							
								            order.order = Convert.ToByte(ele_order_id);
							 | 
						|||
| 
								 | 
							
								            order.state = 1;
							 | 
						|||
| 
								 | 
							
								            return unart_manage.com_manage[port].clear_order(order);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        public static bool rest_sys_device(byte port)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            //clear_order order = new clear_order();
							 | 
						|||
| 
								 | 
							
								            //order.order = Convert.ToByte(ele_order_id);
							 | 
						|||
| 
								 | 
							
								            //order.state = 1;
							 | 
						|||
| 
								 | 
							
								            unart_manage.com_manage[port].write_reset_device();
							 | 
						|||
| 
								 | 
							
								            return true;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        //依次点亮数据
							 | 
						|||
| 
								 | 
							
								        private void order_by_desc(string wave_order, string part, bool order)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            //make_data();
							 | 
						|||
| 
								 | 
							
								            // unart_manage.com_manage[port - 1].
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        private static void read_single(int address)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            while (unart_manage.com_manage[address].manage_address != unart_manage.com_manage[address].receive_address)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                ele_lab_data[receive_add] = unart_manage.com_manage[address].return_data[unart_manage.com_manage[address].manage_address];
							 | 
						|||
| 
								 | 
							
								                receive_add++;
							 | 
						|||
| 
								 | 
							
								                if (receive_add >= add_max)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    receive_add = 0;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                unart_manage.com_manage[address].manage_address++;
							 | 
						|||
| 
								 | 
							
								                if (unart_manage.com_manage[address].manage_address >= unart_manage.com_manage[address].return_max)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    unart_manage.com_manage[address].manage_address = 0;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        private static void receive_data()
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            for (int i = 0; i < unart_manage.com_manage.Length; i++)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                if (unart_manage.com_manage[i] != null)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    if (unart_manage.com_manage[i].wait_data == true)
							 | 
						|||
| 
								 | 
							
								                    {//读取数据
							 | 
						|||
| 
								 | 
							
								                        unart_manage.com_manage[i].wait_data = false;
							 | 
						|||
| 
								 | 
							
								                        read_single(i);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        private static string receive_data_dot(int count, int dot_station)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            string result = "0";
							 | 
						|||
| 
								 | 
							
								            if (dot_station == 0)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                result = count.ToString();
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            else if (dot_station == 1)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                result = (count / 10).ToString() + "." + (count % 10).ToString();
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            else if (dot_station == 2)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                result = (count / 100).ToString() + "." + (count % 100).ToString();
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            else if (dot_station == 3)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                result = (count / 1000).ToString() + "." + (count % 1000).ToString();
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            return result;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								      //  static WmsOutPickLable outPick = new WmsOutPickLable();
							 | 
						|||
| 
								 | 
							
								       // static lWmsOutPickRequest lpickRequest = new lWmsOutPickRequest();
							 | 
						|||
| 
								 | 
							
								       /// <summary>
							 | 
						|||
| 
								 | 
							
								       /// send back from elabel
							 | 
						|||
| 
								 | 
							
								       /// </summary>
							 | 
						|||
| 
								 | 
							
								        public static void return_data1()
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            List<string> statuKeys = new List<string>();
							 | 
						|||
| 
								 | 
							
								          //  string sql, table;
							 | 
						|||
| 
								 | 
							
								            int ele_id;
							 | 
						|||
| 
								 | 
							
								            int little_ele_id;
							 | 
						|||
| 
								 | 
							
								            int receive_count;
							 | 
						|||
| 
								 | 
							
								            int little_ele_id_2;
							 | 
						|||
| 
								 | 
							
								            string color;
							 | 
						|||
| 
								 | 
							
								            int seedsId;//[t_wmsOutSeeds_tmp].id 区分同一个标签对应多个货物的情况
							 | 
						|||
| 
								 | 
							
								           // WmsOutPickLable outPick = new WmsOutPickLable();
							 | 
						|||
| 
								 | 
							
								            int orderNo;
							 | 
						|||
| 
								 | 
							
								            enumLabelPickType pickType =enumLabelPickType.pick; //同一个控制器应该拣选类型唯一
							 | 
						|||
| 
								 | 
							
								          //  int cnt = 0;
							 | 
						|||
| 
								 | 
							
								            Dictionary<string, bool> tmp = WmsConstants.WAVE_CURRENT_PICK_STATUS;
							 | 
						|||
| 
								 | 
							
								            while (receive_add != manage_add)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								              //  cnt++;
							 | 
						|||
| 
								 | 
							
								                
							 | 
						|||
| 
								 | 
							
								                receive_count =Convert.ToInt16( receive_data_dot(Convert.ToInt32(ele_lab_data[manage_add].receive_count), Convert.ToInt16(ele_lab_data[manage_add].dot)));
							 | 
						|||
| 
								 | 
							
								                // ele_lab_data[receive_add]
							 | 
						|||
| 
								 | 
							
								                //receive_count = "0";
							 | 
						|||
| 
								 | 
							
								                ele_id = Convert.ToInt16(ele_lab_data[manage_add].ele_id.ToString()); //label id
							 | 
						|||
| 
								 | 
							
								                color = ele_lab_data[manage_add].dis_type.ToString();//.order.ToString();//color
							 | 
						|||
| 
								 | 
							
								                little_ele_id = Convert.ToInt16(ele_lab_data[manage_add].little_ele_id.ToString()); //ele address
							 | 
						|||
| 
								 | 
							
								                little_ele_id_2 = Convert.ToInt16(ele_lab_data[manage_add].little_ele_idH2.ToString()); //ele address
							 | 
						|||
| 
								 | 
							
								                int state = elelab.pick.ele_lab[ele_id, little_ele_id];
							 | 
						|||
| 
								 | 
							
								                pickType = (enumLabelPickType)state;
							 | 
						|||
| 
								 | 
							
								                orderNo = Convert.ToInt16(ele_lab_data[manage_add].order.ToString()); //port
							 | 
						|||
| 
								 | 
							
								                seedsId =  ele_lab_data[manage_add].WarehousingID ; //port
							 | 
						|||
| 
								 | 
							
								                   string key;// = Util.getLightKey(Convert.ToInt16(color), ele_id, little_ele_id);
							 | 
						|||
| 
								 | 
							
								                   lWmsOutPickLable lwp;
							 | 
						|||
| 
								 | 
							
								                   bool isPickOver = false;  
							 | 
						|||
| 
								 | 
							
								                //WmsConstants.WAVE_CURRENT_PICK_STATUS[key] = true;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                   if (ele_id == 0)
							 | 
						|||
| 
								 | 
							
								                   {
							 | 
						|||
| 
								 | 
							
								                       manage_add = receive_add;
							 | 
						|||
| 
								 | 
							
								                       break;
							 | 
						|||
| 
								 | 
							
								                   }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                switch (pickType)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    case enumLabelPickType.pick:
							 | 
						|||
| 
								 | 
							
								                        key = Util.getLightKey(Convert.ToInt16(color), ele_id, little_ele_id);
							 | 
						|||
| 
								 | 
							
								                        if (WmsConstants.WAVE_CURRENT_PICK_STATUS.ContainsKey(key) )
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            manage_add++;
							 | 
						|||
| 
								 | 
							
								                   
							 | 
						|||
| 
								 | 
							
								                            if (manage_add >= add_max)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                manage_add = 0;
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (WmsConstants.WAVE_CURRENT_PICK_STATUS[key])
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                continue;
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                              
							 | 
						|||
| 
								 | 
							
								                             lwp = new lWmsOutPickLable();
							 | 
						|||
| 
								 | 
							
								                             
							 | 
						|||
| 
								 | 
							
								                         //  lwp.getWmsOutPickLable.updatePickingStatus(Convert.ToInt16(color), ele_id, little_ele_id, Convert.ToDecimal(receive_count));
							 | 
						|||
| 
								 | 
							
								                            WmsConstants.WAVE_CURRENT_PICK_STATUS[key] = lwp.getWmsOutPickLable.updatePickingStatus(Convert.ToInt16(color), ele_id,little_ele_id,  Convert.ToDecimal(receive_count)) >0;//本次拣选完毕
							 | 
						|||
| 
								 | 
							
								                              isPickOver =  lwp.getWmsOutPickLable.getCurrentPickList( DeiNiu.Utils.enumPickState.未拣).Tables[0].Rows.Count == 0;//波次是否全部拣选完毕
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                            elelab.pick.pick_task = isPickOver;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                            if (isPickOver)
							 | 
						|||
| 
								 | 
							
								                            { 
							 | 
						|||
| 
								 | 
							
								                                //notice pick finished
							 | 
						|||
| 
								 | 
							
								                                 lwp. finishCurrentWave(WmsConstants.WAVE_CURRENT_ORDER,false); 
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                        break;
							 | 
						|||
| 
								 | 
							
								                     
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                
							 | 
						|||
| 
								 | 
							
								                 
							 | 
						|||
| 
								 | 
							
								                 manage_add++;
							 | 
						|||
| 
								 | 
							
								                if (manage_add >= add_max)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    manage_add = 0;
							 | 
						|||
| 
								 | 
							
								                } 
							 | 
						|||
| 
								 | 
							
								                
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            //统一处理。。。。
							 | 
						|||
| 
								 | 
							
								            /*
							 | 
						|||
| 
								 | 
							
								            if (cnt == 0)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                return;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            switch (pickType)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                case enumLabelPickType.pick:
							 | 
						|||
| 
								 | 
							
								                 
							 | 
						|||
| 
								 | 
							
								                     bool isPickOver = outPick.getCurrentPickList(DeiNiu.Utils.enumLabelPickState.notPicked).Tables[0].Rows.Count ==0;//波次是否全部拣选完毕
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                       elelab.pick.pick_task = isPickOver;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                       if (isPickOver)
							 | 
						|||
| 
								 | 
							
								                       {  
							 | 
						|||
| 
								 | 
							
								                           //lWmsOutPickRequest lpickRequest = new lWmsOutPickRequest();
							 | 
						|||
| 
								 | 
							
								                           lpickRequest.finishCurrentWave(false);  
							 | 
						|||
| 
								 | 
							
								                       }
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								                case enumLabelPickType.seed:
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								                case enumLabelPickType.tran:
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            */
							 | 
						|||
| 
								 | 
							
								         
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        private static void manage_data()
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return_data1();
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        private static bool read_state()
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            for (int i = 0; i < unart_manage.com_manage.Length; i++)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                if (unart_manage.com_manage[i] != null)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    if (unart_manage.com_manage[i].wait_data == true)
							 | 
						|||
| 
								 | 
							
								                    {//读取数据
							 | 
						|||
| 
								 | 
							
								                        return true;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            return false;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        public static void pick_sys()
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            //int count;Threads_state
							 | 
						|||
| 
								 | 
							
								            // Threads_state = true;
							 | 
						|||
| 
								 | 
							
								            //out_start_state = false;
							 | 
						|||
| 
								 | 
							
								            elelab.pick.init_pick_support();
							 | 
						|||
| 
								 | 
							
								            while (true)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                // unart_manage.com_manage[17].return_data();
							 | 
						|||
| 
								 | 
							
								                pick_work_support.Suspend();
							 | 
						|||
| 
								 | 
							
								                //System.Threading.Thread.Sleep(15000);
							 | 
						|||
| 
								 | 
							
								                receive_data();
							 | 
						|||
| 
								 | 
							
								                manage_data();
							 | 
						|||
| 
								 | 
							
								                wake_support_thread();
							 | 
						|||
| 
								 | 
							
								                pick_work.Suspend();
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        public static void pick_sys_support()
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            //int count;Threads_state
							 | 
						|||
| 
								 | 
							
								            while (true)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                System.Threading.Thread.Sleep(2000);
							 | 
						|||
| 
								 | 
							
								                if (read_state() == true)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    wake_thread();
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                pick_work_support.Suspend();
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        public static void test_multe()
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            //while (wms_usartmanage.pick.send_state == true) ;
							 | 
						|||
| 
								 | 
							
								            //wms_usartmanage.pick.send_state = true;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            //// while (get_part_task() == true) ;
							 | 
						|||
| 
								 | 
							
								            //get_part_task();
							 | 
						|||
| 
								 | 
							
								            ////while(led_lamble() == true);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            //wms_usartmanage.pick.send_state = false;
							 | 
						|||
| 
								 | 
							
								            return;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //webserver 接口
							 | 
						|||
| 
								 | 
							
								        //初始化端口
							 | 
						|||
| 
								 | 
							
								        //复位端口
							 | 
						|||
| 
								 | 
							
								        //清除订单
							 | 
						|||
| 
								 | 
							
								        public static void init_port(enumLabelPickType pickType)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            elelab.unart_manage.init_sys();
							 | 
						|||
| 
								 | 
							
								            init_sys_port(pickType);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        public static void init_port(enumLabelPickType pickType,bool isForce)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            if (isForce)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                elelab.unart_manage.clearComs();
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            init_port(pickType);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        public static bool reset_device(int port)
							 | 
						|||
| 
								 | 
							
								        { 
							 | 
						|||
| 
								 | 
							
								            if( elelab.unart_manage.com_manage[port]!=null)
							 | 
						|||
| 
								 | 
							
								                return elelab.unart_manage.com_manage[port].write_reset_device();
							 | 
						|||
| 
								 | 
							
								            return false;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        public static string send_data_pick(DataTable dt,enumLabelPickType pickType)////-----
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								          // init_port(pickType);
							 | 
						|||
| 
								 | 
							
								            if (activeComports.Count ==0 || dt.Rows.Count == 0)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                 return "";
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								          /*
							 | 
						|||
| 
								 | 
							
								            DataView dv = dt.DefaultView ;
							 | 
						|||
| 
								 | 
							
								            dv.Sort ="ele_order,color"; //排序,这里的排序不起作用。。。。
							 | 
						|||
| 
								 | 
							
								            DataTable sortedTable = dv.ToTable();
							 | 
						|||
| 
								 | 
							
								            foreach (DataRow dr in sortedTable.Rows){
							 | 
						|||
| 
								 | 
							
								                LogHelper.debug ("pick", string.Format("sorted: eleOrder:{0} color:{1}", dr["ele_order"].ToString(), dr["color"].ToString()));
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            dt.DefaultView.Sort = "ele_order,color";
							 | 
						|||
| 
								 | 
							
								            foreach (DataRow dr in dt.Rows)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                LogHelper.debug("pick", string.Format(" dt.DefaultView.Sort eleOrder:{0} color:{1}", dr["ele_order"].ToString(), dr["color"].ToString()));
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            }*/
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								         
							 | 
						|||
| 
								 | 
							
								            DataTable[] ds = split_ele_data(dt);
							 | 
						|||
| 
								 | 
							
								          //  DataTable[] ds = split_ele_data(sortedTable);
							 | 
						|||
| 
								 | 
							
								            
							 | 
						|||
| 
								 | 
							
								            int successCnt=0;
							 | 
						|||
| 
								 | 
							
								            int failureCnt=0;
							 | 
						|||
| 
								 | 
							
								            for (int j = 0; j < ds.Length; j++)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                //string part = ;
							 | 
						|||
| 
								 | 
							
								                byte part_byte = get_byte(ds[j].Rows[0]["ele_order"].ToString());
							 | 
						|||
| 
								 | 
							
								                //part_byte = 1;
							 | 
						|||
| 
								 | 
							
								                string port = ds[j].Rows[0]["port"].ToString();
							 | 
						|||
| 
								 | 
							
								                byte port_byte = get_byte(port);
							 | 
						|||
| 
								 | 
							
								                byte led_color = get_byte(ds[j].Rows[0]["color"].ToString());
							 | 
						|||
| 
								 | 
							
								                byte pick_type = get_byte( ((int)pickType).ToString());
							 | 
						|||
| 
								 | 
							
								                if (elelab.pick.make_data(ds[j], led_color, part_byte, port_byte, null, null, null, pick_type))
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    successCnt++;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    failureCnt++;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            elelab.pick.pick_task = false;
							 | 
						|||
| 
								 | 
							
								            if (failureCnt > 0)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                return string.Format("部分标签未点亮");
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            return "";
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        public static bool lightLabels(int[] ele_lab_id, string[] ele_address,  int led_color, 
							 | 
						|||
| 
								 | 
							
								           int[] counts , int port,   enumLabelPickType pickType)////-----
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            // init_port(pickType);
							 | 
						|||
| 
								 | 
							
								            if (activeComports.Count == 0 || ele_lab_id.Length == 0)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                return false;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            
							 | 
						|||
| 
								 | 
							
								             uart_dis_data[] ele_data_comment = new uart_dis_data[ele_lab_id.Length];
							 | 
						|||
| 
								 | 
							
								                for (int j = 0; j < ele_lab_id.Length; j++)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].channel_id = 0;//暂不使用 默认为0
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].dis_type = get_byte( (led_color).ToString());// 灯的颜色 0 不亮 1 红灯 2 绿灯 3 蓝灯 4 红闪 5 绿闪 6 蓝闪 
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].ele_id = Convert.ToInt16(ele_lab_id[j].ToString());
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].kucun_id = 0;
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].little_ele_id = Convert.ToByte(ele_address[j].ToString());
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].order = get_byte((port).ToString());// Convert.ToByte(ele_order_id);
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].port = "1";
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].receive_count = 0;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].send_count =  counts[j]  ;  
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].state = 1;
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment[j].WarehousingID = 0;
							 | 
						|||
| 
								 | 
							
								                    ele_lab[ele_data_comment[j].ele_id, ele_data_comment[j].little_ele_id] = get_byte( ((int)pickType).ToString()) ;
							 | 
						|||
| 
								 | 
							
								                }// //向串口发送数据
							 | 
						|||
| 
								 | 
							
								                clear_order order = new clear_order();
							 | 
						|||
| 
								 | 
							
								                order.order = get_byte((port).ToString());//Convert.ToByte(ele_order_id);
							 | 
						|||
| 
								 | 
							
								                order.state = 1;
							 | 
						|||
| 
								 | 
							
								                if (unart_manage.com_manage[get_byte((port).ToString()  )].clear_order(order) == false)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    return false;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                if (unart_manage.com_manage[get_byte((port).ToString())].write_data(ele_data_comment) == false)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    return false;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                return true;
							 | 
						|||
| 
								 | 
							
								          
							 | 
						|||
| 
								 | 
							
								           
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        public static bool lightLabels(List<DeiNiu.wms.win.ELabel> lables, enumLabelPickType pickType)////-----
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            // init_port(pickType);
							 | 
						|||
| 
								 | 
							
								            if (activeComports.Count == 0 || lables.Count == 0)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                return false;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            int[] ids = new int[lables.Count];
							 | 
						|||
| 
								 | 
							
								            int[] counts = new int[lables.Count];
							 | 
						|||
| 
								 | 
							
								            string[] ele_address = new string[lables.Count];
							 | 
						|||
| 
								 | 
							
								            for (int i = 0; i < lables.Count; i++)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                ids[i] = lables[i].labelId; 
							 | 
						|||
| 
								 | 
							
								                ele_address[i] = lables[i].address.ToString();
							 | 
						|||
| 
								 | 
							
								                counts[i] = lables[i].count;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            return lightLabels(ids, ele_address, lables[0].color, counts, lables[0].port, pickType); 
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/// <summary>
							 | 
						|||
| 
								 | 
							
								/// 以端口号为一组,点亮多个标签
							 | 
						|||
| 
								 | 
							
								/// 适用于分拣墙
							 | 
						|||
| 
								 | 
							
								/// </summary>
							 | 
						|||
| 
								 | 
							
								/// <param name="lables"></param>
							 | 
						|||
| 
								 | 
							
								/// <param name="portNo">分拣墙端口号</param> 
							 | 
						|||
| 
								 | 
							
								/// <param name="orderId">order to clear</param>  -->use color 支持多人
							 | 
						|||
| 
								 | 
							
								/// <param name="pickType"></param>
							 | 
						|||
| 
								 | 
							
								/// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        public static bool lightLabels2(List<DeiNiu.wms.win.ELabel> lables, int portNo,int orderId,enumLabelPickType pickType)////-----
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            // init_port(pickType);
							 | 
						|||
| 
								 | 
							
								            WmsConstants.WAVE_CURRENT_LIGHTS_PORT_STATUS.Clear();
							 | 
						|||
| 
								 | 
							
								          byte orderPort = get_byte(portNo.ToString());
							 | 
						|||
| 
								 | 
							
								            if (activeComports.Count == 0 || lables.Count == 0)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                return false;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            WmsConstants.WAVE_CURRENT_LIGHTS_PORT_STATUS[portNo] = false; ;
							 | 
						|||
| 
								 | 
							
								            //WmsConstants.WAVE_CURRENT_LIGHTS_STATUS.Clear();
							 | 
						|||
| 
								 | 
							
								            WmsConstants.WAVE_CURRENT_PICK_STATUS.Clear();
							 | 
						|||
| 
								 | 
							
								            WmsConstants.SEEDS_LABEL_ID.Clear();
							 | 
						|||
| 
								 | 
							
								            List<string> statuKeys = new List<string>();
							 | 
						|||
| 
								 | 
							
								           /* uart_dis_data[] ele_data_comment1 = new uart_dis_data[10];
							 | 
						|||
| 
								 | 
							
								            int num =0;
							 | 
						|||
| 
								 | 
							
								             for (int i = 1; i <= 2; i++)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                for (int j = 11; j <= 13; j++)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment1[num].dis_type = 1;//Convert.ToByte(textBox4.Text); 电子标签灯的颜色 1 红色 2 绿色 3 蓝色
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment1[num].ele_id = i;     //电子标签id 
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment1[num].order = Convert.ToByte(orderId);//Convert.ToByte(textBox2.Text);  单号
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment1[num].receive_count = 0;  //为0
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment1[num].little_ele_id = Convert.ToByte(j); // 货位号
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment1[num].send_count = i + j;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    ele_data_comment1[num].state = 1;  //都为1
							 | 
						|||
| 
								 | 
							
								                    num++;
							 | 
						|||
| 
								 | 
							
								                    //comment[i*j].
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            */
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								             uart_dis_data[] ele_data_comment = new uart_dis_data[lables.Count]; 
							 | 
						|||
| 
								 | 
							
								               for (int j = 0; j < lables.Count; j++)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                DeiNiu.wms.win.ELabel lb = lables[j];
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                WmsConstants.SEEDS_LABEL_ID[orderId + "-" + lb.labelId] = lb.seedsId;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].dis_type =  get_byte((lb.color).ToString());  //Convert.ToByte(textBox4.Text); 电子标签灯的颜色 1 红色 2 绿色 3 蓝色
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].ele_id = lb.labelId; ;     //电子标签id
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].order = Convert.ToByte(orderId);// get_byte(orderId.ToString());//Convert.ToByte(textBox2.Text);  单号
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].receive_count = 0;  //为0
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].little_ele_id = Convert.ToByte(lb.address);// 货位号
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].send_count = lb.count;
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].state = 1;  //都为1
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                 /* 
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].channel_id = 0;//暂不使用 默认为0
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].dis_type = get_byte((lb.color).ToString());// 灯的颜色 0 不亮 1 红灯 2 绿灯 3 蓝灯 4 红闪 5 绿闪 6 蓝闪 
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].ele_id =lb.labelId;
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].kucun_id = 0;
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].little_ele_id = Convert.ToByte(lb.address);
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].order = get_byte(color.ToString()); //orderPort;// get_byte(lb.port.ToString());// Convert.ToByte(ele_order_id);
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].port = "1";
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].receive_count = 0;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].send_count =lb.count;
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].state = 1;
							 | 
						|||
| 
								 | 
							
								                ele_data_comment[j].WarehousingID = lb.seedsId;
							 | 
						|||
| 
								 | 
							
								                 */
							 | 
						|||
| 
								 | 
							
								                ele_lab[ele_data_comment[j].ele_id, ele_data_comment[j].little_ele_id] = get_byte(((int)pickType).ToString());
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                statuKeys.Add(Util.getLightKey(lb.color, lb.labelId, lb.address));
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            
							 | 
						|||
| 
								 | 
							
								            }// //向串口发送数据
							 | 
						|||
| 
								 | 
							
								          
							 | 
						|||
| 
								 | 
							
								            
							 | 
						|||
| 
								 | 
							
								            /*clear_order order = new clear_order();
							 | 
						|||
| 
								 | 
							
								            order.order = get_byte(orderId.ToString()); //orderPort;// get_byte(portNo.ToString());//Convert.ToByte(ele_order_id);
							 | 
						|||
| 
								 | 
							
								            order.state = 1;
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								          //   if (unart_manage.com_manage[orderPort].clear_order(order) == false)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								          //        return false;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								           
							 | 
						|||
| 
								 | 
							
								            while (unart_manage.com_manage[orderPort].send_state_finish == false) ;
							 | 
						|||
| 
								 | 
							
								            unart_manage.com_manage[orderPort].send_state_finish = false;
							 | 
						|||
| 
								 | 
							
								            unart_manage.com_manage[orderPort].usart_send_state = false;
							 | 
						|||
| 
								 | 
							
								            unart_manage.com_manage[orderPort].usart_send_result = "";
							 | 
						|||
| 
								 | 
							
								            if (unart_manage.com_manage[orderPort].write_data(ele_data_comment) == false)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                LogHelper.WriteLog(typeof(pick), string.Format(" port {0} send fail", orderPort));
							 | 
						|||
| 
								 | 
							
								                //MessageBox.Show("send  fail") ;
							 | 
						|||
| 
								 | 
							
								                unart_manage.com_manage[orderPort].send_state_finish = true;
							 | 
						|||
| 
								 | 
							
								                unart_manage.com_manage[orderPort].usart_send_state = true;
							 | 
						|||
| 
								 | 
							
								                unart_manage.com_manage[orderPort].usart_send_result = "";
							 | 
						|||
| 
								 | 
							
								                return false;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            */
							 | 
						|||
| 
								 | 
							
								            
							 | 
						|||
| 
								 | 
							
								            /*
							 | 
						|||
| 
								 | 
							
								             * clear_order order = new clear_order();
							 | 
						|||
| 
								 | 
							
								             order.order = get_byte(orderId.ToString()); //orderPort;// get_byte(portNo.ToString());//Convert.ToByte(ele_order_id);
							 | 
						|||
| 
								 | 
							
								             order.state = 1;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								             if (unart_manage.com_manage[orderPort].clear_order(order) == false)
							 | 
						|||
| 
								 | 
							
								             {
							 | 
						|||
| 
								 | 
							
								                          return false;
							 | 
						|||
| 
								 | 
							
								             }
							 | 
						|||
| 
								 | 
							
								             * */
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								             if (!clearOrder(orderPort, orderId))
							 | 
						|||
| 
								 | 
							
								             {
							 | 
						|||
| 
								 | 
							
								                 return false;
							 | 
						|||
| 
								 | 
							
								             }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								             unart_manage.com_manage[orderPort].write_data(ele_data_comment);
							 | 
						|||
| 
								 | 
							
								            string result;
							 | 
						|||
| 
								 | 
							
								            bool isLightsSuccess = unart_manage.com_manage[orderPort].wait_ack(out result);
							 | 
						|||
| 
								 | 
							
								           
							 | 
						|||
| 
								 | 
							
								            WmsConstants.WAVE_CURRENT_LIGHTS_PORT_STATUS[portNo] = isLightsSuccess;
							 | 
						|||
| 
								 | 
							
								           
							 | 
						|||
| 
								 | 
							
								            foreach (string key in statuKeys)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                WmsConstants.WAVE_CURRENT_LIGHTS_STATUS[key] = isLightsSuccess;
							 | 
						|||
| 
								 | 
							
								            } 
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            return true;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        public static void displayLabels(int port)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            if (elelab.unart_manage.com_manage[port] != null)
							 | 
						|||
| 
								 | 
							
								                elelab.unart_manage.com_manage[port].displayLabel();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        public static void clearLabels(int port){
							 | 
						|||
| 
								 | 
							
								            if (elelab.unart_manage.com_manage[port] != null)
							 | 
						|||
| 
								 | 
							
								               elelab.unart_manage.com_manage[port].clearLabel();
							 | 
						|||
| 
								 | 
							
								             
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public static bool clearOrder(int port, int orderId)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            clear_order order = new clear_order();
							 | 
						|||
| 
								 | 
							
								            order.order = get_byte(orderId.ToString()); //orderPort;// get_byte(portNo.ToString());//Convert.ToByte(ele_order_id);
							 | 
						|||
| 
								 | 
							
								            order.state = 1;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            if (unart_manage.com_manage[port].clear_order(order) == false)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                return false;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            return true;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        private static DataTable[] split_ele_data(DataTable dt)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								          //  dt.DefaultView.Sort = "ele_order,color";
							 | 
						|||
| 
								 | 
							
								            if (dt.Rows.Count == 1)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                DataTable[] ds1 = new DataTable[1];
							 | 
						|||
| 
								 | 
							
								                ds1[0] = dt;
							 | 
						|||
| 
								 | 
							
								                return ds1;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            int count = 1;
							 | 
						|||
| 
								 | 
							
								            //ele_order
							 | 
						|||
| 
								 | 
							
								            for (int i = 1; i < dt.Rows.Count; i++)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                if ((dt.Rows[i]["port"].ToString() != dt.Rows[i - 1]["port"].ToString()) ||
							 | 
						|||
| 
								 | 
							
								                    (dt.Rows[i]["ele_order"].ToString() != dt.Rows[i - 1]["ele_order"].ToString()))
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    count++;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }//ele_order
							 | 
						|||
| 
								 | 
							
								            DataTable[] ds = new DataTable[count];
							 | 
						|||
| 
								 | 
							
								            for (int i = 0; i < count; i++)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                ds[i] = dt.Clone();
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            int address = 0;
							 | 
						|||
| 
								 | 
							
								            for (int i = 0; i < dt.Rows.Count; i++)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                if (i == 0)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    address = 0;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else if ((dt.Rows[i]["port"].ToString() != dt.Rows[i - 1]["port"].ToString()) ||
							 | 
						|||
| 
								 | 
							
								                    (dt.Rows[i]["ele_order"].ToString() != dt.Rows[i - 1]["ele_order"].ToString()))
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    address++;
							 | 
						|||
| 
								 | 
							
								                    //ds[address].Rows.Add(dr);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                //else
							 | 
						|||
| 
								 | 
							
								                //{
							 | 
						|||
| 
								 | 
							
								                //    ds[address].Rows.Add(dr);
							 | 
						|||
| 
								 | 
							
								                //}
							 | 
						|||
| 
								 | 
							
								                DataRow dr = ds[address].NewRow();
							 | 
						|||
| 
								 | 
							
								                dr[0] = dt.Rows[i][0];
							 | 
						|||
| 
								 | 
							
								                dr[1] = dt.Rows[i][1];
							 | 
						|||
| 
								 | 
							
								                dr[2] = dt.Rows[i][2];
							 | 
						|||
| 
								 | 
							
								                dr[3] = dt.Rows[i][3];
							 | 
						|||
| 
								 | 
							
								                dr[4] = dt.Rows[i][4];
							 | 
						|||
| 
								 | 
							
								                dr[5] = dt.Rows[i][5];
							 | 
						|||
| 
								 | 
							
								                dr[6] = dt.Rows[i][6];
							 | 
						|||
| 
								 | 
							
								              //  dr[7] = dt.Rows[i][7];
							 | 
						|||
| 
								 | 
							
								                ds[address].Rows.Add(dr);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            return ds;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public static bool turnOnLight(int port, channel_led id_data)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            if (unart_manage.com_manage[port] == null)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                return false;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            config_channel_led id;
							 | 
						|||
| 
								 | 
							
								             id.channel_id = id_data.channel_id;
							 | 
						|||
| 
								 | 
							
								            id.config_word = id_data.color;
							 | 
						|||
| 
								 | 
							
								            id.state = 1;
							 | 
						|||
| 
								 | 
							
								            if (unart_manage.com_manage[port].configLightColor(id))
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								               return unart_manage.com_manage[port].turnOnLight(id_data);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            return false;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public static bool turnOffLight(int port, channel_led id_data)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            if (unart_manage.com_manage[port] == null)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                return false;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								           return unart_manage.com_manage[port].turnOffLight(id_data);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |