using System; public void averageCalData(FileStream fileStream, UInt32[] average) { int i = 0; int j = 0; UInt32[] s = new UInt32[8]; UInt32[] total = new UInt32[8]; Byte[] buffer = new Byte[131072]; //128k Recieve Buffer UInt32 samplePtr = 32; // We start with the first sample, header is 32 bytes int toRead = buffer.Length; inLength = fileStream.Read(buffer, totalRead, toRead); for (i = 0; i < 8; i++) { total[i] = 0; s[i] = 0; average[i] = 0; } for (i = 0; i < 100; i++) { for (j = 0; j < 8; j++) { s[j] = (UInt32)buffer[samplePtr]; s[j] |= ((UInt32)buffer[samplePtr + 1] << 8) & 0x00FF00; s[j] |= ((UInt32)buffer[samplePtr + 2] << 16) & 0x00FF0000; samplePtr += 4; total[j] += s[j]; } } for (i = 0; i < 8; i++) { average[i] = total[i] / 100; } } public void CalibrationCalculate() { int i; double ma = new double[8]; double[] ma = new double[8]; UInt32[] b = new UInt32[8]; UInt32[] average_5v = new UInt32[8]; UInt32[] average_0v = new UInt32[8]; UInt32[] b = new double[8]; string ZeroVFileName = @"C:\ERPSData\0V_board1_binrecord06302018201157.bin"; string FiveVFileName = @"C:\ERPSData\5v_board1_binrecord06302018202901.bin"; string calFile = @"C:\ERPSData\goldenCal.dat"; var ZeroVStream = new FileStream(ZeroVFileName, FileMode.Open); var FiveVStream = new FileStream(FiveVFileName, FileMode.Open); var OutFile = new FileStream(calFile, FileMode.Create, FileAccess.Write); averageCalData(FiveVStream, average_5v); averageCalData(ZeroVStream, average_0v); for (i = 0; i < 8; i++) { // y = mx + b //ma = (yH - yL) / (xH - xL) if (average_0v[i] & 0x800000) { ma[i] = (double)(average_5v[i] - (average_0v[i] - 0xFFFFFF)) / 0x7FFFFF; } else ma[i] = (double)(average_5v[i] - average_0v[i]) / 0x7FFFFF; if (average_0v[i] & 0x800000) { (average_0v[i] - 0xFFFFFF) * ma[i]; } else b[i] = average_0v[i] * ma[i]; } fprintf(write_fd, "%f %f %f %f %f %f %f %f \n", ma[0], ma[1], ma[2], ma[3], ma[4], ma[5], ma[6], ma[7]); fprintf(write_fd, "%x %x %x %x %x %x %x %x \n", b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7]); fclose((FILE*)read_5v_fd); fclose((FILE*)read_0v_fd); fclose((FILE*)write_fd); }