KISS Data Aquisition and Control System
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

91 lines
2.5 KiB

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);
}