eDosStation/EpdBaseClr/EpdBaseClr.cpp

226 lines
4.9 KiB
C++
Raw Normal View History

2019-02-01 17:35:18 +01:00
#include "stdafx.h"
#include "EpdBaseClr.h"
EpdBaseClr::Epd2::Epd2(int port)
{
2019-02-26 16:54:57 +01:00
//HANDLE hMod = LoadLibrary(L"Reader2.dll");
2019-02-01 17:35:18 +01:00
epd = new EpdBase::Epd2U(port);
b = gcnew sEpdBase();
this->InitRV = epd->InitRv;
}
2019-02-04 11:48:08 +01:00
EpdBaseClr::Epd2::~Epd2()
{
delete b;
2019-02-25 09:12:08 +01:00
delete epd;
2019-02-04 11:48:08 +01:00
this->!Epd2();
}
EpdBaseClr::Epd2::!Epd2()
{
}
2019-02-01 17:35:18 +01:00
int EpdBaseClr::Epd2::Connect()
{
2019-02-25 09:12:08 +01:00
epd->StartCom();
2019-02-01 17:35:18 +01:00
b->CurrentDeviceID = 0;
2019-02-27 07:22:39 +01:00
DiscRV = epd->StartDiscover();
if (DiscRV == 1)
{
DeviceCount = epd->DeviceCount;
if (epd->DeviceCount >= 0) b->CurrentDeviceID = epd->DeviceIDs[0];
}
2019-02-01 17:35:18 +01:00
return DiscRV;
}
2019-02-04 11:48:08 +01:00
int EpdBaseClr::Epd2::Close()
{
b->CurrentDeviceID = 0;
epd->Close();
2019-02-25 09:12:08 +01:00
//delete epd;
2019-02-04 11:48:08 +01:00
return 0;
}
2019-02-01 17:35:18 +01:00
int EpdBaseClr::Epd2::GetStatus()
{
//ReadStatus
2019-02-11 11:34:52 +01:00
StatusRV = 0; Issued = false;
WearerID = String::Empty;
WearerName = String::Empty;
2019-02-01 17:35:18 +01:00
epd->ReadStatus();
StatusRV= epd->ReadStatusRV;
Issued = epd->EPDIssued;
WearerID = gcnew String((char *)epd->WearerID);
WearerName = gcnew String((char *)epd->WearerName);
isOn = (epd->DetectorsOn != 0);
2019-02-04 11:48:08 +01:00
epdType = epd->EpdType;
alarmStatus = epd->AlarmStatus;
otherAlarms = epd->OtherAlarms;
errorStatus = epd->ErrorStatus;
operatingStatus = epd->OperatingStatus;
EpdID = epd->EpdID;
HardVersion = epd->HardVersion;
SoftVersion = epd->SoftVersion;
FunctionFlags = epd->FunctionFlags;
2019-02-01 17:35:18 +01:00
return StatusRV;
}
int EpdBaseClr::Epd2::GetDoses()
{
Hp10 = Hp07 = 0.0;
2019-02-04 11:48:08 +01:00
ReadDosesRV = epd->ReadDoses();
if (ReadDosesRV == 1) {
Hp10 = (double)epd->Hp10Dose / 64.0;
Hp07 = (double)epd->Hp07Dose / 64.0;
Hp07Peak = (double)epd->Hp07Peak / 64.0;
Hp10Peak = (double)epd->Hp10Peak / 64.0;
2019-02-11 11:34:52 +01:00
Hp07Total = epd->Hp07Total / 64.0;
Hp10Total = epd->Hp10Total / 64.0;
2019-02-04 11:48:08 +01:00
}
2019-02-14 15:56:23 +01:00
if (epd->Hp10Time > 0)
2019-02-12 07:33:18 +01:00
Hp10PeakTime = System::DateTime::Now.AddSeconds(-(epd->EpdClock - epd->Hp10Time));
else
Hp10PeakTime = System::Nullable<System::DateTime>();;
2019-02-14 15:56:23 +01:00
if (epd->Hp07Time>0)
2019-02-12 07:33:18 +01:00
Hp07PeakTime = System::DateTime::Now.AddSeconds(-(epd->EpdClock - epd->Hp07Time ));
else
Hp10PeakTime = System::Nullable<System::DateTime>();
2019-02-04 11:48:08 +01:00
2019-02-11 11:34:52 +01:00
QualityData = epd->QualityData;
K1 = epd->K1;
K2 = epd->K2;
K3 = epd->K3;
K4 = epd->K4;
2019-02-14 15:56:23 +01:00
K5 = epd->K5;
K6 = epd->K6;
SG = epd->SG;
2019-02-11 11:34:52 +01:00
BC = epd->SG;
FB = epd->FB;
HG = epd->HG;
2019-02-04 11:48:08 +01:00
return ReadDosesRV;
}
2019-02-01 17:35:18 +01:00
int EpdBaseClr::Epd2::SetDeIssued()
{
return epd->DeIssue();
}
int EpdBaseClr::Epd2::PrepareForIssue()
{
return epd->PrepareForIssue();
}
2019-02-01 17:35:18 +01:00
int EpdBaseClr::Epd2::SetIssued()
{
2019-02-12 16:01:47 +01:00
epd->Hp07THDose = Hp07THDose*64;
epd->Hp10THDose1 = Hp10THDose1*64;
epd->Hp10THDose2 = Hp10THDose2*64;
2019-02-11 11:34:52 +01:00
epd->Hp10Rate1On = Hp10Rate1On;
epd->Hp10Rate2On = Hp10Rate2On;
epd->Hp07RateOn = Hp07RateOn;
epd->Hp10Rate1Off = Hp10Rate1Off;
epd->Hp10Rate2Off = Hp10Rate2Off;
epd->Hp07RateOff = Hp07RateOff;
2019-02-01 17:35:18 +01:00
memset(epd->WearerID, ' ', WearerIDLength); epd->WearerID[WearerIDLength] = 0;
char* str1 = (char*)(void *)Runtime::InteropServices::Marshal::StringToHGlobalAnsi(WearerID);
int l = strlen(str1);
if (l > WearerIDLength) l = WearerIDLength;
_memccpy( epd->WearerID + WearerIDLength - l, str1, l, WearerIDLength);
2019-02-01 17:35:18 +01:00
Runtime::InteropServices::Marshal::FreeHGlobal((IntPtr)str1);
memset(epd->WearerName, 0, WearerNameLength + 1);
char* str2 = (char*)(void*)Runtime::InteropServices::Marshal::StringToHGlobalAnsi(WearerName);
2019-02-11 11:34:52 +01:00
l = strlen(str2);
if (l > WearerNameLength) l = WearerNameLength;
_memccpy(epd->WearerName, str2, l, WearerNameLength);
2019-02-01 17:35:18 +01:00
Runtime::InteropServices::Marshal::FreeHGlobal((IntPtr)str2);
epd->Issue();
2019-02-04 11:48:08 +01:00
return 0;
}
2019-02-12 16:01:47 +01:00
int EpdBaseClr::Epd2::WriteCalibration()
{
2019-02-14 15:56:23 +01:00
epd->K1 = K1;
epd->K2 = K2;
2019-02-12 16:01:47 +01:00
epd->K3 = K3;
epd->K4 = K4;
2019-02-14 15:56:23 +01:00
epd->K5 = K5;
epd->K6 = K6;
//epd->K1 = 903;
//epd->K2 = 613;
//epd->K5 = 13100;
//epd->K6 = 1310;
int rv = epd->WriteCal();
2019-02-12 16:01:47 +01:00
return rv;
}
2019-02-04 11:48:08 +01:00
int EpdBaseClr::Epd2::ReadTresholds()
{
epd->ReadTresHolds();
Hp10THDose1 = (double)epd->Hp10THDose1 / 64.0;
Hp10THDose2 = (double)epd->Hp10THDose2 / 64.0;
Hp07THDose = (double)epd->Hp07THDose / 64.0;
2019-02-11 11:34:52 +01:00
Hp10Total = (double)epd->Hp10Total / 64.0;
Hp07Total = (double)epd->Hp07Total / 64.0;
2019-02-04 11:48:08 +01:00
Hp10Rate1On = (double)epd->Hp10Rate1On;
Hp10Rate2On = (double)epd->Hp10Rate2On ;
Hp07RateOn = (double)epd->Hp07RateOn ;
Hp10Rate1Off = (double)epd->Hp10Rate1Off ;
Hp10Rate2Off = (double)epd->Hp10Rate2Off ;
Hp07RateOff = (double)epd->Hp07RateOff ;
K1 = epd->K1;
K2 = epd->K2;
K3 = epd->K3;
K4 = epd->K4;
K5 = epd->K5;
K6 = epd->K6;
SG = epd->SG;
BC = epd->BC;
FB = epd->FB;
HG = epd->HG;
2019-02-01 17:35:18 +01:00
return 0;
2019-02-12 16:01:47 +01:00
}
int EpdBaseClr::Epd2::ReadExtraStatus()
{
int rv = epd->EPDReadExtraStatus();
BatADC = epd->byBatADC;
SupplyADC = epd->bySupplyADC;
2019-02-14 15:56:23 +01:00
D1 = epd->D1 - epd->BaseD1;
D2 = epd->D2 - epd->BaseD2;
D3 = epd->D3 - epd->BaseD3;
D4 = epd->D4 - epd->BaseD4;
CountsClock = epd->CountsClock;
2019-02-12 16:01:47 +01:00
return rv;
2019-02-01 17:35:18 +01:00
}