public int GetHdrKneepoints(ref KNEEPOINTARRAY KneepointArray, int KneepointArraySize) { if (m_hCam == 0) return IS_INVALID_CAMERA_HANDLE; // Temporary byte array var pTemp = new byte[KneepointArraySize]; int ret = is_GetHdrKneepoints(m_hCam, pTemp, KneepointArraySize); if (ret == IS_SUCCESS) { KneepointArray.NumberOfUsedKneepoints = BitConverter.ToInt32(pTemp, 0); for (int i = 0; i < 10; i++) { KneepointArray.Kneepoint[i].x = BitConverter.ToDouble(pTemp, 8 + i * 16); KneepointArray.Kneepoint[i].y = BitConverter.ToDouble(pTemp, 16 + i * 16); } } return ret; }
public int SetHdrKneepoints(ref KNEEPOINTARRAY KneepointArray, int KneepointArraySize) { int i, j; if (m_hCam == 0) return IS_INVALID_CAMERA_HANDLE; // Temporary byte array var pTemp = new byte[KneepointArraySize]; var temp = new byte[4]; //Byte [] temp2 = new byte[8]; // Get 4 bytes (NumberOfUsedKneepoints) and copy them to temp temp = BitConverter.GetBytes(KneepointArray.NumberOfUsedKneepoints); for (i = 0; i < 4; i++) pTemp[i] = temp[i]; // The nest 4 bytes are not used (alignment) // copy the kneepoint values to temp for (i = 0; i < 10; i++) { temp = BitConverter.GetBytes(KneepointArray.Kneepoint[i].x); for (j = 0; j < 8; j++) pTemp[8 + 16 * i + j] = temp[j]; temp = BitConverter.GetBytes(KneepointArray.Kneepoint[i].y); for (j = 0; j < 8; j++) pTemp[16 + 16 * i + j] = temp[j]; } int ret = is_SetHdrKneepoints(m_hCam, pTemp, KneepointArraySize); return ret; }