LabelParam.cs 5.1 KB
using CodeLibrary;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;

namespace DeviceLibrary
{
    [Serializable]
    public class BoxParam
    {
        /// <summary>
        /// 创建新出入库信息
        /// </summary>
        /// <param name="wareNo">二维码内容</param>
        /// <param name="platew">宽度</param>
        /// <param name="plateh">高度</param>
        /// <param name="IsNg">是否是入库NG料</param>
        /// <param name="ngMsg">NG消息</param>
        public BoxParam(string wareNo = "", int platew = 0, int plateh = 0, bool _IsNg = false, string ngMsg = "")
        {
            WareCode = wareNo;
            PlateW = platew;
            PlateH = plateh;
            IsNg = _IsNg;
            NgMsg = ngMsg;
        }
        /// <summary>
        /// 物品二维码信息
        /// </summary>
        public string WareCode { get; set; }
        /// <summary>
        /// 库位号
        /// </summary>
        public string PosID { get; set; }
        public string bitmapfilename = "";
        public List<CodeInfo> codeInfos { get; set; }
        /// <summary>
        /// 料盘高度
        /// </summary>
        public int PlateH { get; set; }
        /// <summary>
        /// 料盘宽度
        /// </summary>
        public int PlateW { get; set; }
        /// <summary>
        /// 是否是入料NG料
        /// </summary>
        public bool IsNg = false;
        /// <summary>
        /// 入料NG消息
        /// </summary>
        public string NgMsg = "";
        /// <summary>
        /// 物料编码
        /// </summary>
        public string PN { get; set; }
        /// <summary>
        /// 数量
        /// </summary>
        public int QTY { get; set; } = 0;
        /// <summary>
        /// 厂家代码
        /// </summary>
        public string FC { get; set; }
        /// <summary>
        /// 唯一序列号
        /// </summary>
        public string RI { get; set; }
        /// <summary>
        /// 批次号
        /// </summary>
        public string Batch { get; set; }

        public int HeightPos = 0;
        public BoxParam clone()
        {
            BoxParam dstobject;
            using (MemoryStream mStream = new MemoryStream())
            {
                BinaryFormatter bf = new BinaryFormatter();
                bf.Serialize(mStream, this);
                mStream.Seek(0, SeekOrigin.Begin);//指定当前流的位置为流的开头。
                dstobject = (BoxParam)bf.Deserialize(mStream);
                mStream.Close();
            }
            return dstobject;
        }

        public string ToStr()
        {
            if (IsNg)
            {
                return $"入库NG:{NgMsg}[{WareCode}]";
            }
            else
            {

                return $"库位号:[{PosID}][{WareCode}] ";
            }
        }

    }
    [Serializable]
    class BoxStorePosition {
        
        /// <summary>
        /// 行走机构取料点
        /// </summary>
        public int Xaxis_P2;

        /// <summary>
        /// 升降轴取料高点
        /// </summary>
        public int Yaxis_PH;
        /// <summary>
        /// 升降轴取料低点
        /// </summary>
        public int Yaxis_PL;

        /// <summary>
        /// 进出轴取料点
        /// </summary>
        public int Zaxis_P2;

        public string posid;
        public BoxStorePosition(ACStorePosition aCStorePosition) {
            Xaxis_P2 = aCStorePosition.XAxis_Position_P2;
            Zaxis_P2 = aCStorePosition.InOutAxis_Position_P3;
            Yaxis_PH = aCStorePosition.UpDownAxis_IHPosition_P3;
            Yaxis_PL = aCStorePosition.UpDownAxis_ILPosition_P4;
            posid = aCStorePosition.PositionNum;
        }
        public const string indoor = "入料口";
        public const string outdoor = "出料口";

        public BoxStorePosition(Robot_Config Config, StoreSide storeSide)
        {
            if (storeSide == StoreSide.A)
            {
                Xaxis_P2 = Config.Xaxis_P2;
                Zaxis_P2 = Config.Zaxis_P2;
                Yaxis_PH = Config.Yaxis_P4;
                Yaxis_PL = Config.Yaxis_P2;
                posid = indoor;
            }
            else {
                Xaxis_P2 = Config.Xaxis_P3;
                Zaxis_P2 = Config.Zaxis_P3;
                Yaxis_PH = Config.Yaxis_P5;
                Yaxis_PL = Config.Yaxis_P3;
                posid = outdoor;
            }

        }
        public BoxStorePosition clone()
        {
            BoxStorePosition dstobject;
            using (MemoryStream mStream = new MemoryStream())
            {
                BinaryFormatter bf = new BinaryFormatter();
                bf.Serialize(mStream, this);
                mStream.Seek(0, SeekOrigin.Begin);//指定当前流的位置为流的开头。
                dstobject = (BoxStorePosition)bf.Deserialize(mStream);
                mStream.Close();
            }
            return dstobject;
        }
    }
    public enum StoreSide
    {
        A, B
    }
}