FrmRFIPEdit.cs 6.6 KB


using OnlineStore.Common;
using OnlineStore.DeviceLibrary;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace OnlineStore.AssemblyLine
{
    internal partial class FrmRFIPEdit : FrmBase
    {
        internal FrmRFIPEdit()
        {
            InitializeComponent();
        }
        private Dictionary<string, string> rfMap = new Dictionary<string, string>();
        private void FrmPwd_Load(object sender, EventArgs e)
        {
            comboxType.Items.Clear();
            foreach (EquipBase b in LineManager.Line.AllEquipMap.Values)
            {
                if (b.baseConfig.DType.Equals(DeviceType.DischargeLine)) { continue; }
                string key = b.Name + "-托盘RF";
                string value = RFIDManager.GetRFIP(b.DeviceID);
                rfMap.Add(key, value);
                comboxType.Items.Add(key);
            }
            foreach (FeedingEquip b in LineManager.Line.FeedingEquipMap.Values)
            {
                string key = b.Name + "-料架RF";
                string value = RFIDManager.GetRFIP(b.DeviceID, 1);
                rfMap.Add(key, value);
                comboxType.Items.Add(key);
            }
            comboxType.SelectedIndex = 0;
            comType.SelectedIndex = 0;

            if (LineManager.Line.runStatus <= LineRunStatus.Wait)
            {
                RFIDManager.Open();
            }
            string hostN = Dns.GetHostName();

        }


        private void btnBack_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.Cancel;
            this.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string ip = txtIP.Text;
            RFIDData data = RFIDManager.ReadRFID(ip);
            string resul = "";
            if (data != null)
            {
                resul = data.NumStr();
                numNum.Value = data.Num;
                int selIndex = data.RFType - 64;
                if (selIndex >= 0 && selIndex <= comboxType.Items.Count)
                {
                    comboxType.SelectedIndex = selIndex;
                }

            }

            lblResult.Text = ("[" + ip + "]读取到数据:" + resul);
            LogUtil.info("点击RFID[" + ip + "]读取数据测试,结果:" + resul);
        }

        private void comboxType_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboxType.SelectedIndex >= 0)
            {
                string V = rfMap[comboxType.Text];
                if (!txtIP.Text.Equals(V))
                {
                    txtIP.Text = V;
                }
            }
        }

        private void btnReadClear_Click(object sender, EventArgs e)
        {
            string ip = txtIP.Text;
            RFIDData data = RFIDManager.ReadRFID(ip, true);
            string resul = "";
            if (data != null)
            {
                resul = data.NumStr();
                numNum.Value = data.Num;
                int selIndex = data.RFType - 64;
                if (selIndex >= 0 && selIndex <= comboxType.Items.Count)
                {
                    comboxType.SelectedIndex = selIndex;
                }

            }
            lblResult.Text = ("[" + ip + "]读取到数据:" + resul);
            LogUtil.info("点击RFID[" + ip + "]读取数据并清理测试,结果:" + resul);
        }

        private void FrmRFIPEdit_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (LineManager.Line.runStatus <= LineRunStatus.Wait)
            {
                RFIDManager.Close();
            }
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            if (button1.Text.Equals("自动读取测试"))
            {
                button1.Text = "关闭读取测试";
                preRfid = "";
                timer1.Start();
            }
            else
            {
                button1.Text = "自动读取测试";
                preRfid = "";
                timer1.Stop();
            }
        }
        object locObj = new object();
        string preRfid = "";
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (!this.IsHandleCreated) return;
            if (System.Threading.Monitor.TryEnter(locObj, 200))
            {
                try
                {
                    string ip = txtIP.Text;
                    RFIDData data = RFIDManager.ReadRFID(ip, checkBox1.Checked);
                    string resul = "";
                    if (data != null)
                    {
                        resul = data.NumStr();
                        numNum.Value = data.Num;
                        //int selIndex = data.RFType - 64;
                        //if (selIndex >= 0 && selIndex <= comboxType.Items.Count)
                        //{
                        //    comboxType.SelectedIndex = selIndex;
                        //}

                    }
                    if (checkBox1.Checked)
                    {
                        this.Invoke(new Action(() =>
                        {
                            label5.Text = ("[" + ip + "]读取到数据:" + preRfid);
                            lblResult.Text = ("[" + ip + "]读取到数据:" + resul);
                        }));

                        if (!preRfid.Equals(resul))
                        {
                            preRfid = resul;
                            LogUtil.info("RFID[" + ip + "]读取数据并清理测试,结果:" + resul);
                        }

                    }
                    else
                    {
                        this.Invoke(new Action(() =>
                        {
                            label5.Text = ("[" + ip + "]读取到数据:" + preRfid);
                            lblResult.Text = ("[" + ip + "]读取到数据:" + resul);
                        }));
                        if (!preRfid.Equals(resul))
                        {
                            preRfid = resul;
                            LogUtil.info("RFID[" + ip + "]读取数据测试,结果:" + resul);
                        }

                    }
                }
                catch (Exception ex)
                {
                    LogUtil.error("自动读取RFID异常", ex);
                }
                finally
                {
                    System.Threading.Monitor.Exit(locObj);
                }
            }

        }
    }
}