private XmlElement GetHighSpeedProfileValues() { LJV7IF_GET_PROFILE_REQ req = new LJV7IF_GET_PROFILE_REQ(); req.byTargetBank = (byte)ProfileBank.Active; req.byPosMode = (byte)ProfilePos.Current; req.dwGetProfNo = 0; req.byGetProfCnt = 10; req.byErase = 0; LJV7IF_GET_PROFILE_RSP rsp = new LJV7IF_GET_PROFILE_RSP(); LJV7IF_PROFILE_INFO profileInfo = new LJV7IF_PROFILE_INFO(); int profileDataSize = Define.MAX_PROFILE_COUNT + (Marshal.SizeOf(typeof(LJV7IF_PROFILE_HEADER)) + Marshal.SizeOf(typeof(LJV7IF_PROFILE_FOOTER))) / Marshal.SizeOf(typeof(int)); int[] receiveBuffer = new int[profileDataSize * req.byGetProfCnt]; using (PinnedObject pin = new PinnedObject(receiveBuffer)) { Rc rc = (Rc)NativeMethods.LJV7IF_GetProfile(Define.DEVICE_ID, ref req, ref rsp, ref profileInfo, pin.Pointer, (uint)(receiveBuffer.Length * Marshal.SizeOf(typeof(int)))); if (rc!=Rc.Ok) throw new Exception("Cannot Read High Speed Profile Data"); } // Output the data of each profile List<ProfileData> profileDatas = new List<ProfileData>(); int unitSize = ProfileData.CalculateDataSize(profileInfo); for (int i = 0; i < rsp.byGetProfCnt; i++) { profileDatas.Add(new ProfileData(receiveBuffer, unitSize * i, profileInfo)); } return GetHighSpeedProfileValueXML(profileDatas); }
internal static extern int LJV7IF_GetProfile(int lDeviceId, ref LJV7IF_GET_PROFILE_REQ pReq, ref LJV7IF_GET_PROFILE_RSP pRsp, ref LJV7IF_PROFILE_INFO pProfileInfo, IntPtr pdwProfileData, uint dwDataSize);