Здравствуйте.
Возникает проблема с некорректностью полученных с ацп данных. В режиме без межкадровой(в режиме с задержкой тоже возникают,но реже) задержки возникают числа не совпадающие с тем что подключено к каналам. Например, на третьем канале подключена батарейка 1.5в, в тоже время появляются цифры типа 0,00056 и тд. Прошу помочь с этой проблемой
#define SLOT_NUM CC_MODULE1
#define FRAME_CNT 1000 //количество принимаемых кадров за один вызов LTR114_Read()
#define RECV_TIMEOUT 1010
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
TLTR114 ltr;
ofstream fout;
fout.open("data.txt");
WORD ver = LTR114_GetDllVer();
if (ver != LTR114_HDR_VER)
{
cout << "Версия библиотеки не совпадает!" << endl;
}
if (LTR114_Init(<r) != LTR_OK)
{
cout << LTR114_GetErrorString(LTR114_Init(<r)) << endl;
}
if (LTR114_Open(<r, SADDR_DEFAULT, SPORT_DEFAULT, "", SLOT_NUM) != LTR_OK)
{
cout << LTR114_GetErrorString(LTR114_Open(<r, SADDR_DEFAULT, SPORT_DEFAULT, "", SLOT_NUM));
}
if (LTR114_GetConfig(<r) != LTR_OK)
{
cout << LTR114_GetErrorString(LTR114_GetConfig(<r)) << endl;
}
else
{
cout << "Название модуля:" << ltr.ModuleInfo.Name << endl << "Серийный номер:" << ltr.ModuleInfo.Serial << endl;
}
ltr.FreqDivider = 2; //частота дискретизации АЦП 4Кгц
ltr.LChQnt = 3; //3 логических канала
//снимаем напряжение с первого канала, диапазон +/- 0.4 В
ltr.LChTbl[0] = LTR114_CreateLChannel(LTR114_MEASMODE_U, 0, LTR114_URANGE_04);
ltr.LChTbl[1] = LTR114_CreateLChannel(LTR114_MEASMODE_U, 1, LTR114_URANGE_04);
ltr.LChTbl[2] = LTR114_CreateLChannel(LTR114_MEASMODE_U, 2, LTR114_URANGE_2);
ltr.SyncMode = LTR114_SYNCMODE_INTERNAL; //внутренняя синхронизация
ltr.Interval = 0;// без задержки
if (LTR114_SetADC(<r)!= LTR_OK)
{
cout << LTR114_GetErrorString(LTR114_SetADC(<r))<<endl;
}
if (LTR114_Calibrate(<r) != LTR_OK)
{
cout << LTR114_GetErrorString(LTR114_Calibrate(<r))<<endl;
}
DWORD * initial_data;
double* processed_data;
INT size = FRAME_CNT * ltr.FrameLength;
initial_data = (DWORD*)malloc(size*sizeof(DWORD));
processed_data = (double*)malloc(FRAME_CNT*ltr.LChQnt*sizeof(double));
if ((initial_data == NULL) && (processed_data == NULL))
{
cout << "память не выделена!";
}
if (LTR114_Start(<r) != LTR_OK)
{
cout << LTR114_GetErrorString(LTR114_Start(<r))<<endl;
}
if (LTR114_Recv(<r, initial_data, NULL, size, RECV_TIMEOUT) == LTR_OK)
{
cout << LTR114_GetErrorString(LTR114_Recv(<r, initial_data, NULL, size, RECV_TIMEOUT))<<endl;
}
LTR114_ProcessData(<r, initial_data, processed_data, &size, LTR114_CORRECTION_MODE_INIT, LTR114_PROCF_VALUE);
LTR114_Stop(<r);
for (int i = 0; i < size; i+=ltr.LChQnt)
{
fout << processed_data[i] << " " << processed_data[i + 1] << " " << processed_data[i + 2] << endl;
}
free(processed_data);
free(initial_data);
system("pause");
}