#include "stdafx.h" #include "EpdBaseClr.h" EpdBaseClr::Epd2::Epd2(int port) { epd = new EpdBase::Epd2U(port); b = gcnew sEpdBase(); this->InitRV = epd->InitRv; } EpdBaseClr::Epd2::~Epd2() { delete b; this->!Epd2(); } EpdBaseClr::Epd2::!Epd2() { } int EpdBaseClr::Epd2::Connect() { b->CurrentDeviceID = 0; epd->StartDiscover(); DiscRV = epd->DeviceCount; DeviceCount = epd->DeviceCount; if (epd->DiscRV == 1 && epd->DeviceCount >= 0) b->CurrentDeviceID = epd->DeviceIDs[0]; return DiscRV; } int EpdBaseClr::Epd2::Close() { b->CurrentDeviceID = 0; epd->Close(); delete epd; return 0; } int EpdBaseClr::Epd2::GetStatus() { //ReadStatus StatusRV = 0; Issued = false; WearerID = String::Empty; WearerName = String::Empty; epd->ReadStatus(); StatusRV= epd->ReadStatusRV; Issued = epd->EPDIssued; WearerID = gcnew String((char *)epd->WearerID); WearerName = gcnew String((char *)epd->WearerName); isOn = (epd->DetectorsOn != 0); 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; return StatusRV; } int EpdBaseClr::Epd2::GetDoses() { Hp10 = Hp07 = 0.0; 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; Hp07Total = epd->Hp07Total / 64.0; Hp10Total = epd->Hp10Total / 64.0; } if (epd->Hp10Time > 0) Hp10PeakTime = System::DateTime::Now.AddSeconds(-(epd->EpdClock - epd->Hp10Time)); else Hp10PeakTime = System::Nullable();; if (epd->Hp07Time>0) Hp07PeakTime = System::DateTime::Now.AddSeconds(-(epd->EpdClock - epd->Hp07Time )); else Hp10PeakTime = System::Nullable(); QualityData = epd->QualityData; K1 = epd->K1; K2 = epd->K2; K3 = epd->K3; K4 = epd->K4; K5 = epd->K5; K6 = epd->K6; SG = epd->SG; BC = epd->SG; FB = epd->FB; HG = epd->HG; return ReadDosesRV; } int EpdBaseClr::Epd2::SetDeIssued() { return epd->DeIssue(); } int EpdBaseClr::Epd2::SetIssued() { epd->Hp07THDose = Hp07THDose*64; epd->Hp10THDose1 = Hp10THDose1*64; epd->Hp10THDose2 = Hp10THDose2*64; epd->Hp10Rate1On = Hp10Rate1On; epd->Hp10Rate2On = Hp10Rate2On; epd->Hp07RateOn = Hp07RateOn; epd->Hp10Rate1Off = Hp10Rate1Off; epd->Hp10Rate2Off = Hp10Rate2Off; epd->Hp07RateOff = Hp07RateOff; 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); Runtime::InteropServices::Marshal::FreeHGlobal((IntPtr)str1); memset(epd->WearerName, 0, WearerNameLength + 1); char* str2 = (char*)(void*)Runtime::InteropServices::Marshal::StringToHGlobalAnsi(WearerName); l = strlen(str2); if (l > WearerNameLength) l = WearerNameLength; _memccpy(epd->WearerName, str2, l, WearerNameLength); Runtime::InteropServices::Marshal::FreeHGlobal((IntPtr)str2); epd->Issue(); return 0; } int EpdBaseClr::Epd2::WriteCalibration() { epd->K1 = K1; epd->K2 = K2; epd->K3 = K3; epd->K4 = K4; epd->K5 = K5; epd->K6 = K6; //epd->K1 = 903; //epd->K2 = 613; //epd->K5 = 13100; //epd->K6 = 1310; int rv = epd->WriteCal(); return rv; } int EpdBaseClr::Epd2::ReadTresholds() { epd->ReadTresHolds(); Hp10THDose1 = (double)epd->Hp10THDose1 / 64.0; Hp10THDose2 = (double)epd->Hp10THDose2 / 64.0; Hp07THDose = (double)epd->Hp07THDose / 64.0; Hp10Total = (double)epd->Hp10Total / 64.0; Hp07Total = (double)epd->Hp07Total / 64.0; 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; return 0; } int EpdBaseClr::Epd2::ReadExtraStatus() { int rv = epd->EPDReadExtraStatus(); BatADC = epd->byBatADC; SupplyADC = epd->bySupplyADC; D1 = epd->D1 - epd->BaseD1; D2 = epd->D2 - epd->BaseD2; D3 = epd->D3 - epd->BaseD3; D4 = epd->D4 - epd->BaseD4; CountsClock = epd->CountsClock; return rv; }