eDosStation/EpdBaseClr/EpdBaseClr.cpp

78 lines
1.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)
{
epd = new EpdBase::Epd2U(port);
b = gcnew sEpdBase();
this->InitRV = epd->InitRv;
}
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::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);
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;
}
//epd->SoftVersion
return ReadDosesRV;
}
int EpdBaseClr::Epd2::SetDeIssued()
{
return epd->DeIssue();
}
int EpdBaseClr::Epd2::SetIssued()
{
epd->AlarmDoseHP07N = alarmHP07;
epd->AlarmDoseHP101G = alarmHP10;
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;
}