#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->DiscRV; 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; 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; } Hp10PeakTime = System::DateTime::Now.AddSeconds(-(epd->Hp10Time - epd->EpdClock)); Hp07PeakTime = System::DateTime::Now.AddSeconds(-(epd->Hp07Time - epd->EpdClock)); return ReadDosesRV; } int EpdBaseClr::Epd2::SetDeIssued() { return epd->DeIssue(); } int EpdBaseClr::Epd2::SetIssued() { epd->AlarmDoseHP07N = Hp07THDose; epd->AlarmDoseHP101G = Hp10THDose1; epd->AlarmDoseHP102G = Hp10THDose1; 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); _memccpy(epd->WearerName, str2, strlen(str2), WearerNameLength); Runtime::InteropServices::Marshal::FreeHGlobal((IntPtr)str2); epd->Issue(); return 0; } int EpdBaseClr::Epd2::ReadTresholds() { epd->ReadTresHolds(); Hp10THDose1 = (double)epd->Hp10THDose1 / 64.0; Hp10THDose2 = (double)epd->Hp10THDose2 / 64.0; Hp07THDose = (double)epd->Hp07THDose / 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; }