unsafe public int GetReaderInfo(DataModel.M_Config config)
 {
     try
     {
         string filePath = AppDomain.CurrentDomain.BaseDirectory + "RecvTemp";
         if (Directory.Exists(filePath))
         {
             Directory.Delete(filePath, true);
         }
         Directory.CreateDirectory(filePath);
         filePath = "";
         int recNum = 0;
         XZX_API.AccountMsg accountMsg = new XZX_API.AccountMsg();
         Int16 timeOut = 200;
         int   c       = XZX_API.TA_HazyInqAcc(ref accountMsg, &recNum, filePath, timeOut);
         if (c == 0)
         {
             return(recNum);
         }
         else
         {
             throw new Exception("获取用户信息失败!错误代码:" + c);
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 unsafe public bool LinkDataSourceTest(DataModel.M_Config config)
 {
     try
     {
         ulong  uJnl        = 1;
         UInt16 sSysCode    = UInt16.Parse(config.XzxSetting.SysCode);
         UInt16 sTerminalNo = UInt16.Parse(config.XzxSetting.TerminalNo);
         string ipip        = config.XzxSetting.Ip;
         short  ipport      = short.Parse(config.XzxSetting.Port);
         bool   bOffline    = false;
         bool   b           = XZX_API.TA_Init(ipip, ipport, sSysCode, sTerminalNo, &bOffline, &uJnl);
         SeatManage.SeatManageComm.WriteLog.Write(string.Format("第三方初始化结果:" + b));
         return(b);
     }
     catch (Exception ex)
     {
         SeatManage.SeatManageComm.WriteLog.Write(string.Format("异常:" + ex));
         return(false);
     }
 }
        public static System.Data.DataTable GetReaderList(DataModel.M_Config config)
        {
            try
            {
                string   filePath = AppDomain.CurrentDomain.BaseDirectory + "File\\";
                string[] files    = Directory.GetFiles(filePath);
                if (files.Length < 1)
                {
                    throw new Exception("找不到读者信息文件!");
                }
                string file = files[files.Length - 1];
                GetReaderTypeFile();
                DataTable dt = new DataTable();
                dt.Columns.Add("CardNo");
                dt.Columns.Add("CardID");
                dt.Columns.Add("ReaderName");
                dt.Columns.Add("Sex");
                dt.Columns.Add("ReaderTypeName");
                dt.Columns.Add("ReaderDeptName");
                dt.Columns.Add("ReaderProName");
                dt.Columns.Add("Flag");
                dt.Columns.Add("Password");
                try
                {
                    int          structSize = Marshal.SizeOf(typeof(XZX_API.HazyInqAccMsg));
                    FileStream   fs         = new FileStream(file, FileMode.Open);
                    BinaryReader br         = new BinaryReader(fs);
                    byte[]       abt        = br.ReadBytes((int)br.BaseStream.Length);
                    br.Close();
                    fs.Close();

                    int readerCount = (int)(abt.Length / structSize);
                    for (int i = 0; i < readerCount; i++)
                    {
                        byte[] bt = new byte[structSize];
                        Array.Copy(abt, i * structSize, bt, 0, structSize);

                        IntPtr ptemp = Marshal.AllocHGlobal(structSize);
                        Marshal.Copy(bt, 0, ptemp, structSize);
                        XZX_API.HazyInqAccMsg accMsg = (XZX_API.HazyInqAccMsg)Marshal.PtrToStructure(ptemp, typeof(XZX_API.HazyInqAccMsg));
                        Marshal.FreeHGlobal(ptemp);

                        if (config.XzxSetting.EveryInfoGet)
                        {
                            XZX_API.AccountMsg acc = new XZX_API.AccountMsg();
                            acc.AccountNo = accMsg.AccountNo;
                            int r = XZX_API.TA_InqAcc(ref acc, 10);
                            if (r == 0)
                            {
                                DataRow dr = dt.NewRow();
                                if (config.XzxSetting.SyncAccountNum)
                                {
                                    dr["CardNo"] = acc.AccountNo.ToString();
                                }
                                else if (!string.IsNullOrEmpty(acc.StudentCode.Trim()))
                                {
                                    dr["CardNo"] = acc.StudentCode.Trim();
                                }
                                else if (config.XzxSetting.NoStudentUseAccount)
                                {
                                    dr["CardNo"] = acc.AccountNo.ToString();
                                }
                                else
                                {
                                    continue;
                                }
                                dr["CardID"]     = acc.CardNo.ToString().Trim();
                                dr["ReaderName"] = acc.Name.Trim();
                                dr["Sex"]        = acc.SexNo.Trim();
                                if (readerType != null && readerType.Count > 0 && readerType.ContainsKey(acc.PID))
                                {
                                    dr["ReaderTypeName"] = readerType[acc.PID];
                                }
                                else
                                {
                                    dr["ReaderTypeName"] = acc.PID;
                                }
                                dr["ReaderDeptName"] = acc.DeptCode.Trim();
                                dr["ReaderProName"]  = "";
                                dr["Flag"]           = acc.Flag.Trim();
                                dr["Password"]       = "";
                                if (string.IsNullOrEmpty(dr["CardNo"].ToString()))
                                {
                                    continue;
                                }
                                dt.Rows.Add(dr);
                            }
                        }
                        else
                        {
                            DataRow dr = dt.NewRow();
                            if (config.XzxSetting.SyncAccountNum)
                            {
                                dr["CardNo"] = accMsg.AccountNo.ToString();
                            }
                            else if (!string.IsNullOrEmpty(accMsg.StudentCode.Trim()))
                            {
                                dr["CardNo"] = accMsg.StudentCode.Trim();
                            }
                            else if (config.XzxSetting.NoStudentUseAccount)
                            {
                                dr["CardNo"] = accMsg.AccountNo.ToString();
                            }
                            else
                            {
                                continue;
                            }
                            dr["CardID"]     = accMsg.CardNo.ToString().Trim();
                            dr["ReaderName"] = accMsg.Name.Trim();
                            // dr["Sex"] = accMsg.SexNo.Trim();
                            if (readerType != null && readerType.Count > 0 && readerType.ContainsKey(accMsg.PID))
                            {
                                dr["ReaderTypeName"] = readerType[accMsg.PID];
                            }
                            else
                            {
                                dr["ReaderTypeName"] = accMsg.PID;
                            }
                            dr["ReaderDeptName"] = accMsg.DeptCode.Trim();
                            //dr["ReaderProName"] = "";
                            //dr["Flag"] = accMsg.Flag.Trim();
                            if (string.IsNullOrEmpty(dr["CardNo"].ToString()))
                            {
                                continue;
                            }
                            dt.Rows.Add(dr);

                            //   Display("第" + i + "条cardno+" + dr["CardNo"].ToString() + "&cardid" + dr["CardID"] + "&name" + dr["ReaderName"] + "");
                        }
                    }
                }
                catch (Exception e)
                {
                    SeatManage.SeatManageComm.WriteLog.Write(string.Format("异常e:" + e.ToString()));
                    throw e;
                }
                return(dt);
            }
            catch (Exception ex)
            {
                SeatManage.SeatManageComm.WriteLog.Write(string.Format("异常ex:" + ex.ToString()));
                throw ex;
            }
        }