using System.Runtime.InteropServices;

namespace SLZ_4
{
    public enum SCANNER_TYPE
    {
        COMMON,             //普通扫码枪
        INDUSTRY_COM,       //工业扫码枪-串口
        INDUSTRY_NETWORK,   //工业扫码枪-网口
    }
    //设备信息
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct DEVICE_PARAM
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string sDevAddr;   //串口时为串口号，网络时为IP地址
        public int iDevType;
        public int iProtocol;
        public int iSlaveId;      //从机id
        public int iPort;         //端口 波特率     
        public int iSwitch;       //是否切换，IP改变
    }
    //存储配置
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct STORAGE_PARAM
    {
        public bool bTxt;           //导出TXT
        public bool bCSV;           //导出CSV
        public bool bSQL;           //导出SQL
        public bool bExcel;         //导出EXCEL
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public string sPath;    //保存路径
    }
    //扫码配置
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct SCAN_PARAM
    {
        public bool bCheckLen;        //扫码长度检测
        public bool bStart;           //扫码启动
        public int iCodeLength;       //条码长度
    }

    //扫码枪配置
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct SCANNER_PARAM
    {
        //串口连接
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string sPort;    //串口
        public int iBaudrate;           //波特率
        //网络
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string sIpaddr;    //IP地址
        public int iPort;           //端口
    }

    //PLC配置
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct PLC_PARAM
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string sPort;    //串口
        public int iBaudrate;           //波特率
    }
    //PLC配置
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct PRINTER_PARAM
    {
        public bool bPrint;           //开启打印
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public string printName;    //打印机名称
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public string printModel;    //打印机模板

        //型号RSFP-76*64A-4*8Q-BL-JS-流水号HT  20240109  0356  -气密  11.747Pa  PASS
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public string codePre;        //条码前缀
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public string snPre;          //序列号前缀 20251022
        public int sn;             //序列号四位数字 0001
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public string codeSuffix;    //条码后缀  -气密
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public string codeSuffix2;    //条码后缀2 PASS
    }

    //MES配置
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct MES_PARAM
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public string sUrl;    //MESUrl
        public int iPort;              //端口号
        public bool bCheckIn;          //MES入站
        public bool bCheckOut;         //MES出站
    }

    //通道统计信息
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct STATISTICS_CHANNEL
    {
        public int iCount;      //测试总量
        public int iPass;       //通过数量
        public int iFailed;     //不良数量
    }

    //统计信息
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct STATISTICS_INFO
    {
        public int iCount;      //测试总量
        public int iPass;       //通过数量
        public int iFailed;     //不良数量
        public STATISTICS_CHANNEL[] ch;      //通道统计信息
    }
}
