Settings en Chirp MK3 (te valideren)

This commit is contained in:
Luc Vandenbroucke 2022-08-24 11:42:03 +02:00
parent 8ec5fa518b
commit a9156b0033
21 changed files with 7138 additions and 6690 deletions

View file

@ -84,8 +84,6 @@ Epd3Base::Epd3U::Epd3U(int _comport)
if (_comport == 0) return;
if (hCompletion == 0) hCompletion = CreateEvent(NULL, TRUE, FALSE, NULL);
//if (hWaitTimer == 0) hWaitTimer = CreateEvent(NULL, TRUE, FALSE, NULL);
}
Epd3Base::Epd3U::~Epd3U()
@ -137,7 +135,6 @@ void Epd3Base::Epd3U::EndCom()
epdComsHandle = INVALID_HANDLE_VALUE;
}
/// <summary>
///
/// </summary>
@ -229,16 +226,19 @@ BYTE checkStatus(OpStatusFlags status, OpStatusFlags flag)
{
if (((uint32_t)status & (uint32_t)flag) == (uint32_t)flag) return 1; else return 0;
}
BYTE checkStatus(FaultStatusFlags status, FaultStatusFlags flag)
{
if (((uint32_t)status & (uint32_t)flag) == (uint32_t)flag) return 1; else return 0;
}
BYTE checkStatus(AlarmStatusFlags status, AlarmStatusFlags flag)
{
uint32_t ustatus = (uint32_t)status;
uint32_t uflag = (uint32_t)flag;
if ((ustatus & uflag) == uflag) return 1; else return 0;
}
BYTE checkStatus(DoseAlarmFlags status, DoseAlarmFlags flag)
{
if (((uint32_t)status & (uint32_t)flag) == (uint32_t)flag) return 1; else return 0;
@ -246,7 +246,6 @@ BYTE checkStatus(DoseAlarmFlags status, DoseAlarmFlags flag)
void Epd3Base::Epd3U::DecodeStatus()
{
eDosDose07Warning = eDosDose07Alarm = eDosDose10Warning = eDosDose10Alarm = eDosRate07Warning = eDosRate07Alarm = eDosRate10Warning = eDosRate10Alarm = eDosBatteryWarning = eDosDoseAlarm = eDosRateAlarm = 0;
hasAlarm = hasFault = false;
@ -469,6 +468,7 @@ int Epd3Base::Epd3U::ConnectAndStatus(int tokenSourceTimeout)
/// K1 = K2 = K3 = K4 = K4 = K6 (*100000 )
/// </summary>
/// <param name="count"></param>
void Epd3Base::Epd3U::decodeSensitivities(int count) {
K1 = K2 = K3 = K4 = K4 = K6 = 0.0F;
@ -485,6 +485,7 @@ void Epd3Base::Epd3U::decodeSensitivities(int count) {
}
}
}
void Epd3Base::Epd3U::decodetotDoses(int count)
{
//doses
@ -513,6 +514,7 @@ void Epd3Base::Epd3U::decodeDoses(int count)
}
}
}
void Epd3Base::Epd3U::decodePeakRates(int count)
{
//Rates
@ -540,6 +542,7 @@ void Epd3Base::Epd3U::decodePeakRates(int count)
}
}
}
void Epd3Base::Epd3U::decodeCounters(int count)
{
HG = SG = BC = FB = 0;
@ -553,6 +556,7 @@ void Epd3Base::Epd3U::decodeCounters(int count)
}
}
}
void Epd3Base::Epd3U::decodeBaseCounters(int count)
{
D1 = D2 = D3 = D4 = 0;
@ -566,6 +570,7 @@ void Epd3Base::Epd3U::decodeBaseCounters(int count)
}
}
}
void Epd3Base::Epd3U::decodeTreshold(Mk3AlarmThresholds_t* th)
{
float* pThDose = nullptr, * pThRate = nullptr, * pTHDoseWarning = nullptr, * pTHRateWarning = nullptr;
@ -599,6 +604,7 @@ void Epd3Base::Epd3U::decodeTreshold(Mk3AlarmThresholds_t* th)
}
}
}
void Epd3Base::Epd3U::encodeTreshold(Mk3AlarmThresholds_t* th)
{
//th.MeasId
@ -834,7 +840,6 @@ error:
return r;
}
int Epd3Base::Epd3U::ClearAlarms()
{
int r = 0;
@ -860,13 +865,13 @@ int Epd3Base::Epd3U::ClearAlarms()
error:
//-102 is permissieprobleem (65434)
return r;
}
WORD Epd3Base::Epd3U::PrepareForIssue()
{
int rv = 0;
if (port == 0) return 0;
//CommitRV = WriteConfig();
rv = WriteConfig();
if (DetectorsOn) {
token = BeginEpdOnOff(epdComsHandle, 0, nullptr);
@ -886,6 +891,7 @@ WORD Epd3Base::Epd3U::PrepareForIssue()
error:
return rv;
}
WORD Epd3Base::Epd3U::ReadAlarmConfig() {
//Alleen MK3 ? leeg bij MK2
token = BeginReadAlarmConfiguration(epdComsHandle, nullptr, 0, nullptr);
@ -893,6 +899,7 @@ WORD Epd3Base::Epd3U::ReadAlarmConfig() {
r = EndReadAlarmConfiguration(epdComsHandle, token, alarmConfig, MaxAlarmConfig, &numAlarm);
return numAlarm;
}
WORD Epd3Base::Epd3U::ReadAlarmTresholds() {
//Alleen MK3 ? leeg bij MK2
bool isNeutron = (EpdType == EpdTypes::Mk2Neutron || EpdType == EpdTypes::Mk3Neutron);
@ -917,6 +924,7 @@ WORD Epd3Base::Epd3U::ReadAlarmTresholds() {
return r;
}
WORD Epd3Base::Epd3U::WriteAlarmTresholds() {
//Alleen MK3 ? leeg bij MK2
uint32_t r;
@ -963,6 +971,7 @@ error:
return r;
}
WORD Epd3Base::Epd3U::DeIssue()
{
int r = 1;
@ -991,6 +1000,7 @@ WORD Epd3Base::Epd3U::DeIssue()
error:
return r;
}
WORD Epd3Base::Epd3U::WriteWearer() {
int32_t r = 0;
@ -1032,6 +1042,7 @@ WORD Epd3Base::Epd3U::WriteWearer() {
///
/// </summary>
/// <returns>0 Success</returns>
WORD Epd3Base::Epd3U::Issue()
{
int r=0;
@ -1110,6 +1121,7 @@ WORD Epd3Base::Epd3U::Issue()
error:
return r;
}
WORD Epd3Base::Epd3U::EPDReadExtraStatus()
{
if (port == 0) return 1;
@ -1131,6 +1143,7 @@ WORD Epd3Base::Epd3U::EPDReadExtraStatus()
//if (CommitRV == 1) CommitRV = Commit3();
return r;
}
WORD Epd3Base::Epd3U::WriteCal()
{
uint32_t r = 0;
@ -1167,6 +1180,7 @@ WORD Epd3Base::Epd3U::WriteCal()
error:
return r;
}
int Epd3Base::Epd3U::GetAll(bool Closeconnection)
{
int rv = 0, step=1;
@ -1188,7 +1202,7 @@ int Epd3Base::Epd3U::GetAllDeissue()
return rv;
}
int Epd3Base::Epd3U::IssueAndCheck(float gain)
int Epd3Base::Epd3U::IssueAndCheck(float gain,float ChirpRate)
{
int rv = 0;
if (isNG) {
@ -1202,9 +1216,71 @@ int Epd3Base::Epd3U::IssueAndCheck(float gain)
if (rv != 0) goto error;
}
}
SetChirp( ChirpRate);
rv = PrepareForIssue();
if (!rv) rv = Issue(); // data already loaded
return rv;
error:
return rv;
}
int Epd3Base::Epd3U::WriteConfig(void)
{
if (port == 0) return 1;
int32_t r = 0;
ECLen = 32;
token = BeginWriteAccessLevel(epdComsHandle, AccessLevel_t::Admin, EC, ECLen, , nullptr);
r = Commit3(epdComsHandle);
r = EndWriteAccessLevel(epdComsHandle, token);
displayIds = new QuickAccessDisplay_t[6]{
{ 0,0x0021 },
{ 1,0x0022 },
{ 2,0x0031 },
{ 3,0x0032 },
{ 4,0x0051 },
{ 5,0x0062 }
};
numDisplays = 6;
token = BeginWriteQuickAccessDisplays_R3(epdComsHandle, displayIds, 6, , nullptr);
r = Commit3(epdComsHandle);
r = EndWriteQuickAccessDisplays_R3(epdComsHandle, token);
numItems = 9;
enables = new DisplayAttributeMap_t[9]{
{ 0, 0x5E96, 0xFFFF },
{ 1, 0x5E96, 0xFFE1 },
{ 2, 0x5E96, 0xFFFF },
{ 3, 0x5E96, 0xFF0F },
{ 4, 0x5E96, 0xFE01 },
{ 5, 0x5E96, 0xFF03 },
{ 6, 0x5E96, 0xFFFF },
{ 7, 0x5E96, 0xFF81 },
{ 8, 0x5E96, 0xFFFF }
};
token = BeginWriteDisplayEnables_R3(epdComsHandle, enables, numItems, nullptr);
r = Commit3(epdComsHandle);
r = EndWriteDisplayEnables_R3(epdComsHandle, token);
return r;
}
int Epd3Base::Epd3U::SetChirp(float Sensitivity)
{
uint32_t r = 1;
uint8_t enable = 0;
if (Sensitivity > 0.001F) {
enable = 1;
token = BeginWriteChirpSensitivity(epdComsHandle, Sensitivity, nullptr);
r = Commit3(epdComsHandle);
r = EndWriteChirpSensitivity(epdComsHandle, token);
}
token = BeginWriteChirpEnable_R3(epdComsHandle, enable, nullptr);
r = Commit3(epdComsHandle);
r = EndWriteChirpEnable_R3(epdComsHandle, token);
return r;
}

View file

@ -224,6 +224,16 @@ namespace Epd3Base {
DetectorThreshold_t dTresholds[MaxTresholds];
DisplayAttributeMap_t* enables;
uint8_t numItems;
QuickAccessDisplay_t* displayIds;
uint8_t numDisplays;
EncryptionKey EC;
uint8_t ECLen;
//Functions
int OpenDev(DiscoveryId DeviceID);
int DisCon(UINT16 alarm);
@ -247,7 +257,8 @@ namespace Epd3Base {
public:
int GetAll(bool Closeconnection);
int GetAllDeissue();
int IssueAndCheck(float gain);
int IssueAndCheck(float gain, float ChirpRate);
int SetChirp(float Sensitivity);
WORD ReadCal();
WORD ReadSensitivitiesAndTresholds();
WORD ReadDoses();
@ -264,6 +275,8 @@ namespace Epd3Base {
WORD EPDReadExtraStatus();
WORD WriteCal();
int WriteConfig(void);
int SetChirp(float Sensitivity);
};
}

View file

@ -746,7 +746,7 @@ int EpdBaseClr::Epd2::GetAllDeissue()
/// </summary>
/// <param name="gain"></param>
/// <returns></returns>
int EpdBaseClr::Epd2::IssueAndCheck(float gain)
int EpdBaseClr::Epd2::IssueAndCheck(float gain,float ChirpRate)
{
int rv = 0;
if (!isMK3) {
@ -756,7 +756,7 @@ int EpdBaseClr::Epd2::IssueAndCheck(float gain)
else
{
BeforeSetIssued(epd3);
rv = epd3->IssueAndCheck(gain);
rv = epd3->IssueAndCheck(gain, ChirpRate);
}
return rv;
}

View file

@ -309,6 +309,7 @@ namespace EpdBaseClr {
int AfterGetStatus(EpdBase::Epd2U* epd);
int AfterGetStatus(Epd3Base::Epd3U* epd);
int AfterGetStatus();
int IssueAndCheck(float gain, float ChirpRate);
int SwitchCon();
void InitData();

View file

@ -1,366 +1,401 @@
#include "pch.h"
#include "MK3.h"
#pragma managed
namespace MK3 {
Epd2::Epd2(int port)
{
//epdBase = gcnew sEpdBase(this);
epd = new Epd2U(port);
Jan2000 = gcnew DateTime(2000, 1, 1);
this->InitRV = epd->InitRv;
epd->StartCom();
Issued=isOn=isBG=isMK3=0;
}
Epd2::~Epd2()
{
delete epd;
this->!Epd2();
}
Epd2::!Epd2()
{
}
int Epd2::Connect(bool reinit)
{
ConnectError = 0;
EpdID = 0;
DeviceCount = 0;
DiscRV = 0;
if (epd != nullptr) {
if (epd->CommsInitialized == 0) epd->StartCom();
DiscRV = epd->StartDiscover();
if (DiscRV == 1)
{
DeviceCount = epd->DeviceCount;
if (epd->DeviceCount >= 0)
{
EpdID = epd->DeviceIDs[0];
}
}
else {
ConnectError = epd->Error;
}
}
return DiscRV;
}
int Epd2::Close()
{
EpdID = 0;
if (epd != nullptr) epd->CloseDev();
return 0;
}
int Epd2::DecodeStatus()
{
epd->DecodeStatus();
//OperatingStatus
DetectorsOn = epd->DetectorsOn;
EPDIssued = epd->EPDIssued;
EPDLocked = epd->EPDLocked;
EPDTesting = epd->EPDTesting;
EPDProcSec = epd->EPDProcSec;
EPDFaulty = epd->EPDFaulty;
EPDNewFault = epd->EPDNewFault;
EPDComFault = epd->EPDComFault;
EPDCalFault = epd->EPDCalFault;
EPDDetFault = epd->EPDDetFault;
EPDEprFault = epd->EPDEprFault;
EPDTrhFault = epd->EPDTrhFault;
EPDOthFault = epd->EPDOthFault;
AlarmDoseHP101G = epd->AlarmDoseHP101G;
AlarmDoseHP102G = epd->AlarmDoseHP102G;
AlarmDoseHP07N = epd->AlarmDoseHP07N;
AlarmRateHP101G = epd->AlarmRateHP101G;
AlarmRateHP102G = epd->AlarmRateHP102G;
AlarmRateHP07N = epd->AlarmRateHP07N;
OtherAlarmRateHp101G = epd->OtherAlarmRateHp101G;
OtherAlarmRateHp102G = epd->OtherAlarmRateHp102G;
OtherAlarmRateHp07N = epd->OtherAlarmRateHp07N;
OtherAlarmReturn = epd->OtherAlarmReturn;
OtherAlarmBatLow = epd->OtherAlarmBatLow;
OtherAlarmCarrier = epd->OtherAlarmCarrier;
OtherAlarmBatVolt = epd->OtherAlarmBatVolt;
return 1;
}
int Epd2::SetTime() {
epd->SetTime();
return epd->utc;
}
int Epd2::ReadAlarmConfig() {
epd->ReadAlarmConfig();
return epd->numAlarm;
}
int Epd2::ReadAlarmTresholds() {
epd->ReadAlarmTresholds();
return 0;
}
int Epd2::GetStatus()
{
GetStatusError = 0; StatusRV = 0; Issued = false;
WearerID = String::Empty;
WearerName = String::Empty;
StatusRV = epd->ReadStatus();
if (StatusRV != 0)
GetStatusError = epd->Error;
Issued = epd->EPDIssued;
WearerID = gcnew String((char*)epd->WearerID);
WearerName = gcnew String((char*)epd->WearerName);
isOn = (epd->DetectorsOn != 0);
epdType = (int)epd->EpdType;
isBG = (epd->EpdType == EpdTypes::Mk2BetaGamma || epd->EpdType == EpdTypes::Mk3BetaGamma);
alarmStatus = epd->AlarmStatus;
otherAlarms = epd->OtherAlarms;
errorStatus = epd->ErrorStatus;
operatingStatus = epd->OperatingStatus;
EpdID = epd->EpdID;
HardVersion = epd->HardVersion;
SoftVersion = epd->SoftVersion;
FunctionFlags = epd->FunctionFlags;
CountsClock = epd->EpdClock;
DecodeStatus();
return StatusRV;
}
int Epd2::GetDoses()
{
Hp10 = Hp07 = 0.0;
int ReadDosesRV = epd->ReadDoses();
if (ReadDosesRV == 1) {
GetDosesError = 0;
Hp10 = (double)epd->Hp10Dose;
Hp07 = (double)epd->Hp07Dose;
Hp07Peak = (double)epd->Hp07Peak;
Hp10Peak = (double)epd->Hp10Peak;
Hp07Total = epd->Hp07Total;
Hp10Total = epd->Hp10Total;
}
else {
GetDosesError = epd->Error;
}
if (epd->Hp10Time > 0) {
//seconds since 2000 ?
//double x = (epd->EpdClock - epd->Hp10Time) * -1.0;
Hp10PeakTime = Jan2000->AddSeconds(epd->Hp10Time);
}
else
Hp10PeakTime = System::Nullable<System::DateTime>();;
if (epd->Hp07Time > 0) {
//double x = (epd->EpdClock - epd->Hp07Time) * -1.0;
Hp07PeakTime = Jan2000->AddSeconds(epd->Hp07Time);
}
else
Hp07PeakTime = System::Nullable<System::DateTime>();
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 Epd2::SetDeIssued()
{
return epd->DeIssue();
}
int Epd2::PrepareForIssue()
{
PrepareForIssueError = 0;
int rv = epd->PrepareForIssue();
if (rv != 1) PrepareForIssueError = epd->Error;
return rv;
}
int Epd2::SetIssued()
{
SetIssuedError = 0;
epd->Hp07THDose = (float)Hp07THDose;
epd->Hp10THDose1 = (float)Hp10THDose1;
epd->Hp10THDose2 = (float)Hp10THDose2;
epd->Hp10Rate1On = (float)(Hp10Rate1On);
epd->Hp10Rate2On = (float)(Hp10Rate2On);
epd->Hp07RateOn = (float)(Hp07RateOn);
epd->Hp10Rate1Off = (float)(Hp10Rate1Off);
epd->Hp10Rate2Off = (float)(Hp10Rate2Off);
epd->Hp07RateOff = (float)(Hp07RateOff);
epd->K3 = K3;
epd->K4 = K4;
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 - l);
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);
int rv = epd->Issue();
if (rv != 0)
SetIssuedError = epd->Error;
return rv;
}
int 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 Epd2::ReadTresholds()
{
ReadTresholdsError = 0;
int rv = epd->ReadAlarmTresholds();
if (rv != 0) ReadTresholdsError = epd->Error;
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 rv;
}
int Epd2::ReadExtraStatus()
{
int rv = epd->EPDReadExtraStatus();
BatADC = epd->byBatADC;
SupplyADC = epd->bySupplyADC;
D1 = epd->D1;
D2 = epd->D2;
D3 = epd->D3;
D4 = epd->D4;
CountsClock = epd->CountsClock;
CountsClockBase = epd->BaseCountsClock;
return rv;
}
int Epd2::ConnectAndStatus()
{
int rv = Connect(false);
if (rv == 0)
{
EpdID= epd->Epd.Id;
isMK3 = (epd->EpdGen == EpdGeneration::Mk3);
rv = GetStatus();
}
return rv;
}
void Epd2::WaitEpd()
{
int rv = 0; //start
System::Threading::CancellationToken^ token = tokenSource->Token;
do {
rv = ConnectAndStatus();
} while (rv != 0 && --readRetries > 0 && !token->IsCancellationRequested);
//if (token->IsCancellationRequested) lastStatusRV = 7;
if (rv == 0) {
if (_EpdRead != nullptr)
_EpdRead(this, gcnew EpdEventArgs(EpdID,Issued,isBG,isMK3));
} else if (rv > 0 && _EpdError != nullptr) {
_EpdError(this, gcnew EpdErrorEventArgs(rv));
}
return ;
}
System::Threading::Tasks::Task^ Epd2::Wait(int timeout, int Retries)
{
if (waitTask == nullptr)
{
tokenSourceTimeout = timeout;
tokenSource = gcnew System::Threading::CancellationTokenSource(tokenSourceTimeout - 1000);
readRetries = Retries;
waitTask = System::Threading::Tasks::Task::Run(gcnew Action(this, &Epd2::WaitEpd)); // System::Threading::Tasks::Task::Factory->cre(gcnew Action(this, &CCard::WaitBadge), tokenSource->Token);
}
else {
readRetries = Retries + 1;
}
return waitTask;
}
void Epd2::WaitEnd()
{
if (waitTask != nullptr)
{
tokenSource->Cancel();
//cbCard->Cancel();
Sleep(500);
delete waitTask; waitTask = nullptr;
delete tokenSource; tokenSource = nullptr;
}
}
#include "pch.h"
#include "MK3.h"
#pragma managed
namespace MK3 {
Epd2::Epd2(int port)
{
//epdBase = gcnew sEpdBase(this);
epd = new Epd2U(port);
Jan2000 = gcnew DateTime(2000, 1, 1);
this->InitRV = epd->InitRv;
epd->StartCom();
Issued=isOn=isBG=isMK3=0;
}
Epd2::~Epd2()
{
delete epd;
this->!Epd2();
}
Epd2::!Epd2()
{
}
int Epd2::Connect(bool reinit)
{
ConnectError = 0;
EpdID = 0;
DeviceCount = 0;
DiscRV = 0;
if (epd != nullptr) {
if (epd->CommsInitialized == 0) epd->StartCom();
DiscRV = epd->StartDiscover();
if (DiscRV == 1)
{
DeviceCount = epd->DeviceCount;
if (epd->DeviceCount >= 0)
{
EpdID = epd->DeviceIDs[0];
}
}
else {
ConnectError = epd->Error;
}
}
return DiscRV;
}
int Epd2::Close()
{
EpdID = 0;
if (epd != nullptr) epd->CloseDev();
return 0;
}
int Epd2::DecodeStatus()
{
epd->DecodeStatus();
//OperatingStatus
DetectorsOn = epd->DetectorsOn;
EPDIssued = epd->EPDIssued;
EPDLocked = epd->EPDLocked;
EPDTesting = epd->EPDTesting;
EPDProcSec = epd->EPDProcSec;
EPDFaulty = epd->EPDFaulty;
EPDNewFault = epd->EPDNewFault;
EPDComFault = epd->EPDComFault;
EPDCalFault = epd->EPDCalFault;
EPDDetFault = epd->EPDDetFault;
EPDEprFault = epd->EPDEprFault;
EPDTrhFault = epd->EPDTrhFault;
EPDOthFault = epd->EPDOthFault;
AlarmDoseHP101G = epd->AlarmDoseHP101G;
AlarmDoseHP102G = epd->AlarmDoseHP102G;
AlarmDoseHP07N = epd->AlarmDoseHP07N;
AlarmRateHP101G = epd->AlarmRateHP101G;
AlarmRateHP102G = epd->AlarmRateHP102G;
AlarmRateHP07N = epd->AlarmRateHP07N;
OtherAlarmRateHp101G = epd->OtherAlarmRateHp101G;
OtherAlarmRateHp102G = epd->OtherAlarmRateHp102G;
OtherAlarmRateHp07N = epd->OtherAlarmRateHp07N;
OtherAlarmReturn = epd->OtherAlarmReturn;
OtherAlarmBatLow = epd->OtherAlarmBatLow;
OtherAlarmCarrier = epd->OtherAlarmCarrier;
OtherAlarmBatVolt = epd->OtherAlarmBatVolt;
return 1;
}
int Epd2::SetTime() {
epd->SetTime();
return epd->utc;
}
int Epd2::ReadAlarmConfig() {
epd->ReadAlarmConfig();
return epd->numAlarm;
}
int Epd2::ReadAlarmTresholds() {
epd->ReadAlarmTresholds();
return 0;
}
int Epd2::GetStatus()
{
GetStatusError = 0; StatusRV = 0; Issued = false;
WearerID = String::Empty;
WearerName = String::Empty;
StatusRV = epd->ReadStatus();
if (StatusRV != 0)
GetStatusError = epd->Error;
Issued = epd->EPDIssued;
WearerID = gcnew String((char*)epd->WearerID);
WearerName = gcnew String((char*)epd->WearerName);
isOn = (epd->DetectorsOn != 0);
epdType = (int)epd->EpdType;
isBG = (epd->EpdType == EpdTypes::Mk2BetaGamma || epd->EpdType == EpdTypes::Mk3BetaGamma);
alarmStatus = epd->AlarmStatus;
otherAlarms = epd->OtherAlarms;
errorStatus = epd->ErrorStatus;
operatingStatus = epd->OperatingStatus;
EpdID = epd->EpdID;
HardVersion = epd->HardVersion;
SoftVersion = epd->SoftVersion;
FunctionFlags = epd->FunctionFlags;
CountsClock = epd->EpdClock;
DecodeStatus();
return StatusRV;
}
int Epd2::GetDoses()
{
Hp10 = Hp07 = 0.0;
int ReadDosesRV = epd->ReadDoses();
if (ReadDosesRV == 1) {
GetDosesError = 0;
Hp10 = (double)epd->Hp10Dose;
Hp07 = (double)epd->Hp07Dose;
Hp07Peak = (double)epd->Hp07Peak;
Hp10Peak = (double)epd->Hp10Peak;
Hp07Total = epd->Hp07Total;
Hp10Total = epd->Hp10Total;
}
else {
GetDosesError = epd->Error;
}
if (epd->Hp10Time > 0) {
//seconds since 2000 ?
//double x = (epd->EpdClock - epd->Hp10Time) * -1.0;
Hp10PeakTime = Jan2000->AddSeconds(epd->Hp10Time);
}
else
Hp10PeakTime = System::Nullable<System::DateTime>();;
if (epd->Hp07Time > 0) {
//double x = (epd->EpdClock - epd->Hp07Time) * -1.0;
Hp07PeakTime = Jan2000->AddSeconds(epd->Hp07Time);
}
else
Hp07PeakTime = System::Nullable<System::DateTime>();
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 Epd2::SetDeIssued()
{
return epd->DeIssue();
}
int Epd2::PrepareForIssue()
{
PrepareForIssueError = 0;
int rv = epd->PrepareForIssue();
if (rv != 1) PrepareForIssueError = epd->Error;
return rv;
}
int Epd2::SetIssued()
{
SetIssuedError = 0;
epd->Hp07THDose = (float)Hp07THDose;
epd->Hp10THDose1 = (float)Hp10THDose1;
epd->Hp10THDose2 = (float)Hp10THDose2;
epd->Hp10Rate1On = (float)(Hp10Rate1On);
epd->Hp10Rate2On = (float)(Hp10Rate2On);
epd->Hp07RateOn = (float)(Hp07RateOn);
epd->Hp10Rate1Off = (float)(Hp10Rate1Off);
epd->Hp10Rate2Off = (float)(Hp10Rate2Off);
epd->Hp07RateOff = (float)(Hp07RateOff);
epd->K3 = K3;
epd->K4 = K4;
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 - l);
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);
int rv = epd->Issue();
if (rv != 0)
SetIssuedError = epd->Error;
return rv;
}
int 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 Epd2::ReadTresholds()
{
ReadTresholdsError = 0;
int rv = epd->ReadAlarmTresholds();
if (rv != 0) ReadTresholdsError = epd->Error;
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 rv;
}
int Epd2::ReadExtraStatus()
{
int rv = epd->EPDReadExtraStatus();
BatADC = epd->byBatADC;
SupplyADC = epd->bySupplyADC;
D1 = epd->D1;
D2 = epd->D2;
D3 = epd->D3;
D4 = epd->D4;
CountsClock = epd->CountsClock;
CountsClockBase = epd->BaseCountsClock;
return rv;
}
int Epd2::ConnectAndStatus()
{
int rv = Connect(false);
if (rv == 0)
{
EpdID= epd->Epd.Id;
isMK3 = (epd->EpdGen == EpdGeneration::Mk3);
rv = GetStatus();
}
return rv;
}
void Epd2::WaitEpd()
{
int rv = 0; //start
System::Threading::CancellationToken^ token = tokenSource->Token;
do {
rv = ConnectAndStatus();
} while (rv != 0 && --readRetries > 0 && !token->IsCancellationRequested);
//if (token->IsCancellationRequested) lastStatusRV = 7;
if (rv == 0) {
if (_EpdRead != nullptr)
_EpdRead(this, gcnew EpdEventArgs(EpdID,Issued,isBG,isMK3));
} else if (rv > 0 && _EpdError != nullptr) {
_EpdError(this, gcnew EpdErrorEventArgs(rv));
}
return ;
}
System::Threading::Tasks::Task^ Epd2::Wait(int timeout, int Retries)
{
if (waitTask == nullptr)
{
tokenSourceTimeout = timeout;
tokenSource = gcnew System::Threading::CancellationTokenSource(tokenSourceTimeout - 1000);
readRetries = Retries;
waitTask = System::Threading::Tasks::Task::Run(gcnew Action(this, &Epd2::WaitEpd)); // System::Threading::Tasks::Task::Factory->cre(gcnew Action(this, &CCard::WaitBadge), tokenSource->Token);
}
else {
readRetries = Retries + 1;
}
return waitTask;
}
void Epd2::WaitEnd()
{
if (waitTask != nullptr)
{
tokenSource->Cancel();
//cbCard->Cancel();
Sleep(500);
delete waitTask; waitTask = nullptr;
delete tokenSource; tokenSource = nullptr;
}
}
int Epd2::ReadDisplay()
{
int rv = epd->ReadDisplay();
String^ s = System::String::Format("numItems: {0}", epd->numItems);
System::Diagnostics::Debug::WriteLine(s);
for (int i = 0; i < epd->numItems; i++) {
s = System::String::Format("{{ {0},0x{1:X4},0x{2:X4} }}", epd->enables[i].MenuId, epd->enables[i].EnableMask, epd->enables[i].Enables);
System::Diagnostics::Debug::WriteLine(s);
}
s = System::String::Format("numDisplays: {0}", epd->numDisplays);
System::Diagnostics::Debug::WriteLine(s);
for (int i = 0; i < epd->numDisplays; i++) {
s = System::String::Format("{{ {0},0x{1:X4} }}", epd->displayIds[i].Position, epd->displayIds[i].DisplayId);
System::Diagnostics::Debug::WriteLine(s);
}
return rv;
}
int Epd2::SetSettings()
{
pin_ptr<Byte> p = &this->ECIn[0];
for (int i = 0; i < 32; i++) epd->EC[i] = p[i];
int rv = epd->SetSettings();
return rv;
}
int Epd2::SetChirp(float Sensitivity)
{
int rv = epd->SetChirp(Sensitivity);
return rv;
}
}

520
MK3/MK3.h
View file

@ -1,256 +1,264 @@
#pragma once
#include "MK3Base.h"
#pragma comment(lib,"Reader3.lib")
#pragma managed
using namespace System;
using namespace System::Collections::Generic;
using namespace System::Runtime::InteropServices;
#include <msclr\marshal.h>
#include <msclr\marshal_cppstd.h>
namespace MK3 {
const char* cEpdError = "Setreader Error";
ref class Epd2;
public ref class EpdEventArgs : EventArgs
{
public:
int deviceID;
bool isIssued, isBG, isMK3;
EpdEventArgs(int epdID,bool epdIssued, bool isBG, bool isMK3) : EventArgs()
{
this->deviceID = epdID;
this->isIssued = epdIssued;
this->isBG = isBG;
this->isMK3 = isMK3;
}
};
public ref struct EpdException : System::Exception
{
public:
int errorCode;
EpdException(int r) : System::Exception(gcnew String(cEpdError))
{
this->errorCode = r;
}
};
public ref class EpdErrorEventArgs : EventArgs
{
public:
int returnValue;
EpdErrorEventArgs(int ReturnValue) : EventArgs()
{
this->returnValue = ReturnValue;
}
};
public ref class Epd2
{
private:
DateTime^ Jan2000;
public:
delegate void dEpdRead(Epd2^ Sender, EpdEventArgs^ e);
delegate void dEpdTO(Epd2^ Sender, EventArgs^ e);
delegate void dEpdError(Epd2^ Sender, EpdErrorEventArgs^ e);
dEpdRead^ _EpdRead;
dEpdTO^ _EpdTO;
dEpdError^ _EpdError;
event dEpdRead^ EpdRead
{
void add(dEpdRead^ handler)
{
_EpdRead += handler;
}
void remove(dEpdRead^ handler)
{
_EpdRead -= handler;
}
}
event dEpdError^ EpdError
{
void add(dEpdError^ handler)
{
_EpdError += handler;
}
void remove(dEpdError^ handler)
{
_EpdError -= handler;
}
}
event dEpdTO^ EpdTO
{
void add(dEpdTO^ handler)
{
_EpdTO += handler;
}
void remove(dEpdTO^ handler)
{
_EpdTO -= handler;
}
}
Epd2U* epd;
//int CurrentDeviceID; ==> is EpdID
DateTime^ RealTime;
String^ WearerName;
String^ WearerID;
bool Issued;
bool isOn;
bool isBG;
bool isMK3;
int InitRV;
int DiscRV;
int StatusRV;
int GetStatusError;
int GetDosesError;
int ReadTresholdsError;
int PrepareForIssueError;
int SetIssuedError;
int ConnectError;
int ReadDosesRV;
int DeviceCount = 0;
double Hp07;
double Hp10;
double Hp07Peak;
double Hp10Peak;
System::Nullable<System::DateTime> Hp10PeakTime;
System::Nullable<System::DateTime> Hp07PeakTime;
double Hp07Total;
double Hp10Total;
double alarmHP07;
double alarmHP10;
double Hp10THDose1;
double Hp10THDose2;
double Hp07THDose;
double Hp10Rate1On;
double Hp10Rate2On;
double Hp07RateOn;
double Hp10Rate1Off;
double Hp10Rate2Off;
double Hp07RateOff;
float K1;
float K2;
float K3;
float K4;
float K5;
float K6;
int SG;
int BC;
int FB;
int HG;
int QualityData;
unsigned int D1, D2, D3, D4, CountsClock, CountsClockBase;
int epdType;
AlarmStatusFlags alarmStatus;
int otherAlarms;
FaultStatusFlags errorStatus;
OpStatusFlags operatingStatus;
unsigned int EpdID;
int HardVersion;
int SoftVersion;
int FunctionFlags;
unsigned short BatADC;
unsigned short SupplyADC;
//OperatingStatus
BYTE DetectorsOn = 0;
BYTE EPDIssued = 0;
BYTE EPDLocked = 0;
BYTE EPDTesting = 0;
BYTE EPDProcSec = 0;
BYTE EPDFaulty = 0;
//ERrrostatus
BYTE EPDNewFault = 0;
BYTE EPDComFault = 0;
BYTE EPDCalFault = 0;
BYTE EPDDetFault = 0;
BYTE EPDEprFault = 0;
BYTE EPDTrhFault = 0;
BYTE EPDOthFault = 0;
//AlarmStatus
BYTE AlarmDoseHP101G = 0;
BYTE AlarmDoseHP102G = 0;
BYTE AlarmDoseHP07N = 0;
BYTE AlarmRateHP101G = 0;
BYTE AlarmRateHP102G = 0;
BYTE AlarmRateHP07N = 0;
//OtherAlarm
BYTE OtherAlarmRateHp101G = 0;
BYTE OtherAlarmRateHp102G = 0;
BYTE OtherAlarmRateHp07N = 0;
BYTE OtherAlarmReturn = 0;
BYTE OtherAlarmBatLow = 0;
BYTE OtherAlarmCarrier = 0;
BYTE OtherAlarmBatVolt = 0;
Epd2(int port);
~Epd2();
!Epd2();
int Connect(bool reinit);
int Close();
int DecodeStatus();
int SetTime();
int ReadAlarmConfig();
int ReadAlarmTresholds();
int GetStatus();
int GetDoses();
int SetDeIssued();
int SetIssued();
int PrepareForIssue();
int WriteCalibration();
int ReadTresholds();
int ReadExtraStatus();
int ConnectAndStatus();
void WaitEpd();
System::Threading::CancellationTokenSource^ tokenSource;
int tokenSourceTimeout;
int readRetries;
System::Threading::Tasks::Task^ waitTask;
System::Threading::Tasks::Task^ Wait(int timeout, int Retries);
void WaitEnd();
};
}
#pragma once
#include "MK3Base.h"
#pragma comment(lib,"Reader3.lib")
#pragma managed
using namespace System;
using namespace System::Collections::Generic;
using namespace System::Runtime::InteropServices;
#include <msclr\marshal.h>
#include <msclr\marshal_cppstd.h>
namespace MK3 {
const char* cEpdError = "Setreader Error";
ref class Epd2;
public ref class EpdEventArgs : EventArgs
{
public:
int deviceID;
bool isIssued, isBG, isMK3;
EpdEventArgs(int epdID,bool epdIssued, bool isBG, bool isMK3) : EventArgs()
{
this->deviceID = epdID;
this->isIssued = epdIssued;
this->isBG = isBG;
this->isMK3 = isMK3;
}
};
public ref struct EpdException : System::Exception
{
public:
int errorCode;
EpdException(int r) : System::Exception(gcnew String(cEpdError))
{
this->errorCode = r;
}
};
public ref class EpdErrorEventArgs : EventArgs
{
public:
int returnValue;
EpdErrorEventArgs(int ReturnValue) : EventArgs()
{
this->returnValue = ReturnValue;
}
};
public ref class Epd2
{
private:
DateTime^ Jan2000;
public:
delegate void dEpdRead(Epd2^ Sender, EpdEventArgs^ e);
delegate void dEpdTO(Epd2^ Sender, EventArgs^ e);
delegate void dEpdError(Epd2^ Sender, EpdErrorEventArgs^ e);
dEpdRead^ _EpdRead;
dEpdTO^ _EpdTO;
dEpdError^ _EpdError;
event dEpdRead^ EpdRead
{
void add(dEpdRead^ handler)
{
_EpdRead += handler;
}
void remove(dEpdRead^ handler)
{
_EpdRead -= handler;
}
}
event dEpdError^ EpdError
{
void add(dEpdError^ handler)
{
_EpdError += handler;
}
void remove(dEpdError^ handler)
{
_EpdError -= handler;
}
}
event dEpdTO^ EpdTO
{
void add(dEpdTO^ handler)
{
_EpdTO += handler;
}
void remove(dEpdTO^ handler)
{
_EpdTO -= handler;
}
}
Epd2U* epd;
//int CurrentDeviceID; ==> is EpdID
DateTime^ RealTime;
String^ WearerName;
String^ WearerID;
bool Issued;
bool isOn;
bool isBG;
bool isMK3;
int InitRV;
int DiscRV;
int StatusRV;
int GetStatusError;
int GetDosesError;
int ReadTresholdsError;
int PrepareForIssueError;
int SetIssuedError;
int ConnectError;
int ReadDosesRV;
int DeviceCount = 0;
double Hp07;
double Hp10;
double Hp07Peak;
double Hp10Peak;
System::Nullable<System::DateTime> Hp10PeakTime;
System::Nullable<System::DateTime> Hp07PeakTime;
double Hp07Total;
double Hp10Total;
double alarmHP07;
double alarmHP10;
double Hp10THDose1;
double Hp10THDose2;
double Hp07THDose;
double Hp10Rate1On;
double Hp10Rate2On;
double Hp07RateOn;
double Hp10Rate1Off;
double Hp10Rate2Off;
double Hp07RateOff;
float K1;
float K2;
float K3;
float K4;
float K5;
float K6;
int SG;
int BC;
int FB;
int HG;
int QualityData;
unsigned int D1, D2, D3, D4, CountsClock, CountsClockBase;
int epdType;
AlarmStatusFlags alarmStatus;
int otherAlarms;
FaultStatusFlags errorStatus;
OpStatusFlags operatingStatus;
unsigned int EpdID;
int HardVersion;
int SoftVersion;
int FunctionFlags;
unsigned short BatADC;
unsigned short SupplyADC;
//OperatingStatus
BYTE DetectorsOn = 0;
BYTE EPDIssued = 0;
BYTE EPDLocked = 0;
BYTE EPDTesting = 0;
BYTE EPDProcSec = 0;
BYTE EPDFaulty = 0;
//ERrrostatus
BYTE EPDNewFault = 0;
BYTE EPDComFault = 0;
BYTE EPDCalFault = 0;
BYTE EPDDetFault = 0;
BYTE EPDEprFault = 0;
BYTE EPDTrhFault = 0;
BYTE EPDOthFault = 0;
//AlarmStatus
BYTE AlarmDoseHP101G = 0;
BYTE AlarmDoseHP102G = 0;
BYTE AlarmDoseHP07N = 0;
BYTE AlarmRateHP101G = 0;
BYTE AlarmRateHP102G = 0;
BYTE AlarmRateHP07N = 0;
//OtherAlarm
BYTE OtherAlarmRateHp101G = 0;
BYTE OtherAlarmRateHp102G = 0;
BYTE OtherAlarmRateHp07N = 0;
BYTE OtherAlarmReturn = 0;
BYTE OtherAlarmBatLow = 0;
BYTE OtherAlarmCarrier = 0;
BYTE OtherAlarmBatVolt = 0;
Epd2(int port);
~Epd2();
!Epd2();
int Connect(bool reinit);
int Close();
int DecodeStatus();
int SetTime();
int ReadAlarmConfig();
int ReadAlarmTresholds();
int GetStatus();
int GetDoses();
int SetDeIssued();
int SetIssued();
int PrepareForIssue();
int WriteCalibration();
int ReadTresholds();
int ReadExtraStatus();
int ConnectAndStatus();
void WaitEpd();
System::Threading::CancellationTokenSource^ tokenSource;
int tokenSourceTimeout;
int readRetries;
System::Threading::Tasks::Task^ waitTask;
System::Threading::Tasks::Task^ Wait(int timeout, int Retries);
void WaitEnd();
int ReadDisplay();
int SetSettings();
int SetChirp(float Sensitivity);
array<Byte>^ ECIn;
};
}

File diff suppressed because it is too large Load diff

View file

@ -1,305 +1,316 @@
#pragma once
#pragma unmanaged
#include <windows.h>
#include "EpdCommon.h"
#include "Epd3.h"
#include "Epd2.h"
#include "TimeFunctions.h"
#define MaxPeakRates 10
#define MaxSensitivities 10
#define MaxDoses 4
#define MaxCounts 6
#define MaxAlarmConfig 10
#define MaxTresholds 10
namespace MK3
{
class Epd2U
{
public:
char comPort[5] = {"COM4"};
CommsHandle epdComsHandle;
uint32_t CurrentDeviceID;
EpdGeneration EpdGen;
DiscoveryId Epd;
CompletionToken token;
WORD port = 3;
const WORD MaxDevices = 10;
WORD DeviceCount = 0;
DWORD DeviceIDs[10];
//DWORD CurrentDeviceID;
//WORD AlarmCtrl = 0b01111110;
WORD AlarmCtrl = 0b01111010; // NO sound
WORD EndSessionControl = 0b00010010;
BYTE displayConfig[56] = { 0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
DWORD EpdClock;
DWORD RealTime;
WORD IssueCount;
DWORD OffTime;
OpStatusFlags OperatingStatus;
FaultStatusFlags ErrorStatus;
AlarmStatusFlags AlarmStatus;
WORD OtherAlarms;
WORD EEPROMBadSectors;
WORD CommsInitialized = 0;
WORD InitRv = 0;
WORD DiscRV = 0;
WORD ConRV = 0;
WORD OpenRV = 0;
WORD ReadStatusRV = 0;
WORD CommitRV = 0;
WORD OffRV = 0;
WORD OnRV = 0;
WORD EndSessionRV = 0;
WORD ReadConfigRV = 0;
WORD ReadDoseTresholdRV = 0;
WORD ReadAlarmRateThresholdsRV = 0;
WORD ReadCalibrationDataRV = 0;
WORD ReadWearerRV = 0;
WORD ReadEpdIDRV = 0;
WORD ReadDosesQualityRV;
WORD ReadPeaksRV = 0;
WORD ClearDoseRV;
WORD ClearTotalDoseRV;
WORD ClearPeakRatesRV;
WORD DeIssueEpdRV = 0;
WORD WriteAlarmDoseThresholdsRV = 0;
WORD WriteAlarmRateThresholdsRV = 0;
WORD WriteWearerNameRV = 0;
WORD IssueEpdRV = 0;
WORD Error = 0;
WORD ErrorSource;
WORD ErrorReason;
WORD ErrorData;
//Identification
DWORD EpdID = 0;
WORD HardVersion;
WORD SoftVersion;
WORD FunctionFlags;
EpdTypes EpdType = EpdTypes::Mk2Gamma;
bool isBG = false;
SYSTEMTIME tRealTime;
//Wearer
#define WearerIDLength 12
BYTE WearerID[(WearerIDLength)+1];
#define WearerNameLength 22
BYTE WearerName[WearerNameLength + 1];
// Dose
float Hp10Dose;
float Hp07Dose;
float Hp10Total;
float Hp07Total;
WORD Knocks;
WORD Resets;
WORD QualityData;
//Peaks
float Hp10Peak;
float Hp07Peak;
DWORD Hp10Time;
DWORD Hp07Time;
//AlarmDoseTreshold
float Hp10THDose1;
float Hp10THDose2;
float Hp07THDose;
float Hp10Rate1On;
float Hp10Rate2On;
float Hp07RateOn;
float Hp10Rate1Off;
float Hp10Rate2Off;
float Hp07RateOff;
float K1;
float K2;
float K3;
float K4;
float K5;
float K6;
uint32_t SG;
uint32_t BC;
uint32_t FB;
uint32_t HG;
DWORD D1;
DWORD D2;
DWORD D3;
DWORD D4;
DWORD CountsClock;
DWORD BaseD1;
DWORD BaseD2;
DWORD BaseD3;
DWORD BaseD4;
DWORD BaseCountsClock;
//Config
WORD CountDownTime;
DWORD ReturnTime;
WORD ChirpRate;
WORD TeleBaudSetting;
WORD SelfTestInterval;
WORD BatteryLoadTestInt;
WORD GeneralControl;
WORD CommsTimeout;
WORD InhibitTimeout;
WORD MinTxInterval;
WORD MaxTxIntervals;
WORD RandomiseWindow;
WORD DoseIncThresh;
//OperatingStatus
BYTE DetectorsOn = 0;
BYTE EPDIssued = 0;
BYTE EPDLocked = 0;
BYTE EPDTesting = 0;
BYTE EPDProcSec = 0;
BYTE EPDFaulty = 0;
//ERrrostatus
BYTE EPDNewFault = 0;
BYTE EPDComFault = 0;
BYTE EPDCalFault = 0;
BYTE EPDDetFault = 0;
BYTE EPDEprFault = 0;
BYTE EPDTrhFault = 0;
BYTE EPDOthFault = 0;
//AlarmStatus
BYTE AlarmDoseHP101G = 0;
BYTE AlarmDoseHP102G = 0;
BYTE AlarmDoseHP07N = 0;
BYTE AlarmRateHP101G = 0;
BYTE AlarmRateHP102G = 0;
BYTE AlarmRateHP07N = 0;
//OtherAlarm
BYTE OtherAlarmRateHp101G = 0;
BYTE OtherAlarmRateHp102G = 0;
BYTE OtherAlarmRateHp07N = 0;
BYTE OtherAlarmReturn = 0;
BYTE OtherAlarmBatLow = 0;
BYTE OtherAlarmCarrier = 0;
BYTE OtherAlarmBatVolt = 0;
DWORD Password = 9;
BYTE byBatADC;
BYTE bySupplyADC;
BYTE byStatus3;
BYTE byStatus4;
MeasurementId mIDs[MAX_MEASUREMENTS];
uint8_t nmIDs = 0;
MeasValue_t doses[MaxDoses];
MeasValue_t totdoses[MaxDoses];
PeakRate_t peakRates[MaxPeakRates];
AlarmConfig_t alarmConfig[MaxAlarmConfig];
CalSensitivity_t sensitivities[MaxSensitivities];
Counter_t Counts[MaxCounts];
uint8_t countsRead;
uint32_t seconds;
uint8_t numDoses, numtotDoses, numRates, numSensitivities, numTresholds;
uint16_t numAlarm;
uint32_t utc;
Mk3QualityData_t quality;
Mk3AlarmThresholds_t hp07tresholds;
Mk3RatePercentage_t RatePct[2];
Mk3AlarmThresholds_t hp10tresholds;
DetectorThreshold_t dTresholds[MaxTresholds];
int StartDiscover();
void Open(DiscoveryId DeviceID);
void CloseDev();
void DecodeFunctionFlags();
void DecodeStatus();
void decodeTreshold(Mk3AlarmThresholds_t *th);
void encodeTreshold(Mk3AlarmThresholds_t* th);
void decodedTresholds(int numdTresholds);
Epd2U(int comport);
WORD WriteConfig();
DWORD StartCom();
void EndCom();
WORD ReadStatus();
//WORD EPDReadExtraStatus();
WORD EPDReadConfig();
WORD TurnOff();
WORD TurnOn();
WORD WriteCal();
WORD ReadSensitivitiesAndTresholds();
//WORD ReadTresHolds();
WORD ReadDoses();
void decodetotDoses(int count);
void decodeDoses(int count);
void decodeSensitivities(int count);
void decodePeakRates(int count);
void decodeCounters(int count);
void decodeBaseCounters(int count);
void SetTime();
WORD ReadAlarmConfig();
WORD ReadAlarmTresholds();
WORD WriteAlarmTresholds();
WORD WriteWearer();
void ClearDoses();
void ClearAlarms();
WORD PrepareForIssue();
WORD DeIssue();
WORD Issue();
~Epd2U();
StatusData_t epd3status;
uint8_t counterIds[MaxCounts]; //max 6 for mk3
uint8_t counterIdLen;
//Voor read counters
WORD EPDReadExtraStatus();
//static HANDLE Ev1 ;
//static Epd2U* current;
//void WINAPI discovery (CommsHandle hComms, DiscoveryId const discovered[], int32_t count);
};
}
#pragma once
#pragma unmanaged
#include <windows.h>
#include "EpdCommon.h"
#include "Epd3.h"
#include "Epd2.h"
#include "TimeFunctions.h"
#define MaxPeakRates 10
#define MaxSensitivities 10
#define MaxDoses 4
#define MaxCounts 6
#define MaxAlarmConfig 10
#define MaxTresholds 10
namespace MK3
{
class Epd2U
{
public:
char comPort[5] = {"COM4"};
CommsHandle epdComsHandle;
uint32_t CurrentDeviceID;
EpdGeneration EpdGen;
DiscoveryId Epd;
CompletionToken token;
WORD port = 3;
const WORD MaxDevices = 10;
WORD DeviceCount = 0;
DWORD DeviceIDs[10];
//DWORD CurrentDeviceID;
//WORD AlarmCtrl = 0b01111110;
WORD AlarmCtrl = 0b01111010; // NO sound
WORD EndSessionControl = 0b00010010;
BYTE displayConfig[56] = { 0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
DWORD EpdClock;
DWORD RealTime;
WORD IssueCount;
DWORD OffTime;
OpStatusFlags OperatingStatus;
FaultStatusFlags ErrorStatus;
AlarmStatusFlags AlarmStatus;
WORD OtherAlarms;
WORD EEPROMBadSectors;
WORD CommsInitialized = 0;
WORD InitRv = 0;
WORD DiscRV = 0;
WORD ConRV = 0;
WORD OpenRV = 0;
WORD ReadStatusRV = 0;
WORD CommitRV = 0;
WORD OffRV = 0;
WORD OnRV = 0;
WORD EndSessionRV = 0;
WORD ReadConfigRV = 0;
WORD ReadDoseTresholdRV = 0;
WORD ReadAlarmRateThresholdsRV = 0;
WORD ReadCalibrationDataRV = 0;
WORD ReadWearerRV = 0;
WORD ReadEpdIDRV = 0;
WORD ReadDosesQualityRV;
WORD ReadPeaksRV = 0;
WORD ClearDoseRV;
WORD ClearTotalDoseRV;
WORD ClearPeakRatesRV;
WORD DeIssueEpdRV = 0;
WORD WriteAlarmDoseThresholdsRV = 0;
WORD WriteAlarmRateThresholdsRV = 0;
WORD WriteWearerNameRV = 0;
WORD IssueEpdRV = 0;
WORD Error = 0;
WORD ErrorSource;
WORD ErrorReason;
WORD ErrorData;
//Identification
DWORD EpdID = 0;
WORD HardVersion;
WORD SoftVersion;
WORD FunctionFlags;
EpdTypes EpdType = EpdTypes::Mk2Gamma;
bool isBG = false;
SYSTEMTIME tRealTime;
//Wearer
#define WearerIDLength 12
BYTE WearerID[(WearerIDLength)+1];
#define WearerNameLength 22
BYTE WearerName[WearerNameLength + 1];
// Dose
float Hp10Dose;
float Hp07Dose;
float Hp10Total;
float Hp07Total;
WORD Knocks;
WORD Resets;
WORD QualityData;
//Peaks
float Hp10Peak;
float Hp07Peak;
DWORD Hp10Time;
DWORD Hp07Time;
//AlarmDoseTreshold
float Hp10THDose1;
float Hp10THDose2;
float Hp07THDose;
float Hp10Rate1On;
float Hp10Rate2On;
float Hp07RateOn;
float Hp10Rate1Off;
float Hp10Rate2Off;
float Hp07RateOff;
float K1;
float K2;
float K3;
float K4;
float K5;
float K6;
uint32_t SG;
uint32_t BC;
uint32_t FB;
uint32_t HG;
DWORD D1;
DWORD D2;
DWORD D3;
DWORD D4;
DWORD CountsClock;
DWORD BaseD1;
DWORD BaseD2;
DWORD BaseD3;
DWORD BaseD4;
DWORD BaseCountsClock;
//Config
WORD CountDownTime;
DWORD ReturnTime;
WORD ChirpRate;
WORD TeleBaudSetting;
WORD SelfTestInterval;
WORD BatteryLoadTestInt;
WORD GeneralControl;
WORD CommsTimeout;
WORD InhibitTimeout;
WORD MinTxInterval;
WORD MaxTxIntervals;
WORD RandomiseWindow;
WORD DoseIncThresh;
//OperatingStatus
BYTE DetectorsOn = 0;
BYTE EPDIssued = 0;
BYTE EPDLocked = 0;
BYTE EPDTesting = 0;
BYTE EPDProcSec = 0;
BYTE EPDFaulty = 0;
//ERrrostatus
BYTE EPDNewFault = 0;
BYTE EPDComFault = 0;
BYTE EPDCalFault = 0;
BYTE EPDDetFault = 0;
BYTE EPDEprFault = 0;
BYTE EPDTrhFault = 0;
BYTE EPDOthFault = 0;
//AlarmStatus
BYTE AlarmDoseHP101G = 0;
BYTE AlarmDoseHP102G = 0;
BYTE AlarmDoseHP07N = 0;
BYTE AlarmRateHP101G = 0;
BYTE AlarmRateHP102G = 0;
BYTE AlarmRateHP07N = 0;
//OtherAlarm
BYTE OtherAlarmRateHp101G = 0;
BYTE OtherAlarmRateHp102G = 0;
BYTE OtherAlarmRateHp07N = 0;
BYTE OtherAlarmReturn = 0;
BYTE OtherAlarmBatLow = 0;
BYTE OtherAlarmCarrier = 0;
BYTE OtherAlarmBatVolt = 0;
DWORD Password = 9;
BYTE byBatADC;
BYTE bySupplyADC;
BYTE byStatus3;
BYTE byStatus4;
MeasurementId mIDs[MAX_MEASUREMENTS];
uint8_t nmIDs = 0;
MeasValue_t doses[MaxDoses];
MeasValue_t totdoses[MaxDoses];
PeakRate_t peakRates[MaxPeakRates];
AlarmConfig_t alarmConfig[MaxAlarmConfig];
CalSensitivity_t sensitivities[MaxSensitivities];
Counter_t Counts[MaxCounts];
uint8_t countsRead;
uint32_t seconds;
uint8_t numDoses, numtotDoses, numRates, numSensitivities, numTresholds;
uint16_t numAlarm;
uint32_t utc;
Mk3QualityData_t quality;
Mk3AlarmThresholds_t hp07tresholds;
Mk3RatePercentage_t RatePct[2];
Mk3AlarmThresholds_t hp10tresholds;
DetectorThreshold_t dTresholds[MaxTresholds];
int StartDiscover();
void Open(DiscoveryId DeviceID);
void CloseDev();
void DecodeFunctionFlags();
void DecodeStatus();
void decodeTreshold(Mk3AlarmThresholds_t *th);
void encodeTreshold(Mk3AlarmThresholds_t* th);
void decodedTresholds(int numdTresholds);
Epd2U(int comport);
WORD WriteConfig();
DWORD StartCom();
void EndCom();
WORD ReadStatus();
//WORD EPDReadExtraStatus();
WORD EPDReadConfig();
WORD TurnOff();
WORD TurnOn();
WORD WriteCal();
WORD SetSettings();
WORD SetChirp(float Sensitivity);
WORD ReadDisplay();
WORD ReadSensitivitiesAndTresholds();
//WORD ReadTresHolds();
WORD ReadDoses();
void decodetotDoses(int count);
void decodeDoses(int count);
void decodeSensitivities(int count);
void decodePeakRates(int count);
void decodeCounters(int count);
void decodeBaseCounters(int count);
void SetTime();
WORD ReadAlarmConfig();
WORD ReadAlarmTresholds();
WORD WriteAlarmTresholds();
WORD WriteWearer();
void ClearDoses();
void ClearAlarms();
WORD PrepareForIssue();
WORD DeIssue();
WORD Issue();
~Epd2U();
StatusData_t epd3status;
uint8_t counterIds[MaxCounts]; //max 6 for mk3
uint8_t counterIdLen;
//Voor read counters
WORD EPDReadExtraStatus();
DisplayAttributeMap_t *enables;
uint8_t numItems;
QuickAccessDisplay_t *displayIds;
uint8_t numDisplays;
EncryptionKey EC;
uint8_t ECLen;
//static HANDLE Ev1 ;
//static Epd2U* current;
//void WINAPI discovery (CommsHandle hComms, DiscoveryId const discovered[], int32_t count);
};
}

View file

@ -1,56 +1,65 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestEPD3Dll
{
class Program
{
static void Main(string[] args)
{
DateTime jan1970 = new DateTime(1970, 1, 1);
var snow = (DateTime.Now - jan1970).TotalSeconds;
DateTime dt2 = DateTime.Now.AddSeconds(-254246887);
//254245176
int rv;
MK3.Epd2 x = new MK3.Epd2(4);
x.Connect(false);
//var rv = x.SetTime();
rv = x.GetStatus();
//x.ReadAlarmTresholds();
//rv = x.GetDoses();
rv = x.SetDeIssued();
x.Connect(false);
//x.WriteCalibration();
x.Hp07THDose = 1;
x.Hp10THDose1 = 2;
x.Hp10THDose2 = 3;
x.Hp07RateOn = 4;
x.Hp07RateOff = 5;
x.Hp10Rate1On = 6;
x.Hp10Rate1Off = 7;
x.Hp10Rate2On = 8;
x.Hp10Rate2Off = 9;
//x.AlarmDoseHP07N = 11;
//x.AlarmDoseHP101G = 12;
//x.AlarmDoseHP102G = 13;
//x.AlarmRateHP07N = 14;
//x.AlarmRateHP101G = 15;
//x.AlarmRateHP102G = 16;
x.K3 = 4; x.K4 = 3;
x.WearerName = "12345678";
x.WearerID = "12";
x.SetIssued();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestEPD3Dll
{
class Program
{
static void Main(string[] args)
{
DateTime jan1970 = new DateTime(1970, 1, 1);
var snow = (DateTime.Now - jan1970).TotalSeconds;
DateTime dt2 = DateTime.Now.AddSeconds(-254246887);
//254245176
int rv;
MK3.Epd2 x = new MK3.Epd2(6);
x.Connect(false);
x.ECIn = System.Security.Cryptography.SHA256.Create().ComputeHash(System.Text.Encoding.UTF8.GetBytes("Administrator"));
rv= x.SetChirp(5);
x.SetSettings();
x.ReadDisplay(); // ToDo list
//x.Connect(false);
////var rv = x.SetTime();
//rv = x.GetStatus();
////x.ReadAlarmTresholds();
////rv = x.GetDoses();
//rv = x.SetDeIssued();
//x.Connect(false);
////x.WriteCalibration();
//x.Hp07THDose = 1;
//x.Hp10THDose1 = 2;
//x.Hp10THDose2 = 3;
//x.Hp07RateOn = 4;
//x.Hp07RateOff = 5;
//x.Hp10Rate1On = 6;
//x.Hp10Rate1Off = 7;
//x.Hp10Rate2On = 8;
//x.Hp10Rate2Off = 9;
////x.AlarmDoseHP07N = 11;
////x.AlarmDoseHP101G = 12;
////x.AlarmDoseHP102G = 13;
////x.AlarmRateHP07N = 14;
////x.AlarmRateHP101G = 15;
////x.AlarmRateHP102G = 16;
//x.K3 = 4; x.K4 = 3;
//x.WearerName = "12345678";
//x.WearerID = "12";
//x.SetIssued();
}
}
}

View file

@ -331,7 +331,8 @@ go
CREATE OR ALTER PROCEDURE [dbo].[VisitInfo] @EPDVisitID INT = 51905,
@hasExited BIT = 0 OUT,
@isManualExit BIT = 0 OUT
@isManualExit BIT = 0 OUT,
@name VARCHAR(100) = NULL OUT
AS
--DECLARE @EPDVisitID INT= 51905
BEGIN
@ -339,7 +340,8 @@ BEGIN
DECLARE
@ID_Visit INT,
@ID_Station INT;
@ID_Station INT,
@PersID INT;
SET @ID_Station = @EPDVisitID % 100;
SET @ID_Visit = @EPDVisitID / 100;
@ -348,7 +350,8 @@ BEGIN
SELECT
@hasExited = CONVERT(BIT, CASE WHEN [ReturnTime] IS NOT NULL OR [isManualExit] = 1 THEN 1 ELSE 0 END),
@isManualExit = ISNULL([isManualExit], 0)
@isManualExit = ISNULL([isManualExit], 0),
@PersID = @PersID
FROM [dbo].[Visit]
WHERE [ID_Visit] = @ID_Visit
AND [ID_Station] = @ID_Station;
@ -357,8 +360,14 @@ BEGIN
SELECT [hasExited] = @hasExited;
SELECT
@name = ISNULL([name] + ' ' + ISNULL([callingname], [firstname]), '?')
FROM [dbo].[PersonAll]
WHERE [persid] = @PersID;
RETURN CASE WHEN ISNULL(@hasExited, 0) = 1 THEN 1 ELSE 0 END + CASE WHEN ISNULL(@isManualExit, 0) = 1 THEN 2 ELSE 0 END;
END;
GO
GRANT EXECUTE ON [dbo].[VisitInfo] TO [eDosStation];

View file

@ -20,6 +20,10 @@ GO
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id=OBJECT_ID('[dbo].[PersonInfoSnapshot]') AND name='isAgent')
ALTER TABLE [dbo].[PersonInfoSnapshot] ADD isAgent BIT NULL;
GO
--2022-08-24 ChirpRate
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id=OBJECT_ID('[dbo].[TaskInfoSnapshot]') AND name='ChirpRate')
ALTER TABLE [dbo].[TaskInfoSnapshot] ADD ChirpRate REAL NULL;
GO
ALTER PROCEDURE [dbo].[GetPersonInfo] @CSN CHAR(14) = NULL,
@PersID INT = NULL,
@ -360,3 +364,41 @@ END;
GO
GRANT EXECUTE ON [syncLoc].[UpdateRemoteReturns] TO [eDosStation];
GO
--2022-08-24 ChirpRate
ALTER PROCEDURE [dbo].[GetTaskInfo] @ID_Task INT = NULL, @WorkerDosisMargin FLOAT = NULL AS
--DECLARE @ID_Task INT =5,@WorkerDosisMargin FLOAT=10
SELECT
[t].[ID_Task],
[t].[Inst_CODE],
[t].[TaskType_CODE],
[t].[Task_Name],
[t].[TaskDescription],
[t].[EPDRad],
[t].[ID_AlarmEPD],
[t].[TaskDateStart],
[t].[TaskDateEnd],
[t].[TaskEnable],
[t].[ID_FNGainANGain],
[t].[Hp10Dose1],
[t].[Hp10Dose2],
[t].[Hp07Dose],
[t].[HP10Rate1ON],
[t].[HP10Rate1OFF],
[t].[HP10Rate2ON],
[t].[HP10Rate2OFF],
[t].[HP07RateON],
[t].[HP07RateOFF],
[t].[FNGain_ANGainValue],
[t].[InstallationActivity],
[t].[Description],
[t].[Inst_CODE],
[t].[MinWorkerDosisMargin],
[MarginExceeded] = CONVERT(BIT, CASE WHEN @WorkerDosisMargin IS NULL
OR [t].[MinWorkerDosisMargin] > @WorkerDosisMargin THEN 1 ELSE 0 END),
[ChirpRate] = CONVERT(REAL,ISNULL([t].[ChirpRate],0.0))
FROM [dbo].[TaskInfoSnapshot] [t]
WHERE @ID_Task IS NULL
OR [t].[ID_Task] = @ID_Task;
go

View file

@ -268,9 +268,9 @@ namespace eDosStation
,new System.Data.SqlClient.SqlParameter("EPDVisitID",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
,new System.Data.SqlClient.SqlParameter("hasExited",SqlDbType.Bit,0,System.Data.ParameterDirection.Output,false,0,0,null,System.Data.DataRowVersion.Default,null)
,new System.Data.SqlClient.SqlParameter("isManualExit",SqlDbType.Bit,0,System.Data.ParameterDirection.Output,false,0,0,null,System.Data.DataRowVersion.Default,null)
,new System.Data.SqlClient.SqlParameter("name",SqlDbType.VarChar,100,System.Data.ParameterDirection.Output,true,0,0,null,System.Data.DataRowVersion.Default,null)
});
ReverseSyncCommand = new System.Data.SqlClient.SqlCommand("syncLoc.UpdateRemoteReturns", localConnection) { CommandType = System.Data.CommandType.StoredProcedure };
SqlCommandBuilder.DeriveParameters(ReverseSyncCommand);
ReverseSyncCommand.Parameters["@ID_LocalStation"].Value = DBNull.Value;
@ -281,10 +281,11 @@ namespace eDosStation
if (oldState == ConnectionState.Closed) localConnection.Close();
}
public int VisitInfo(int EpdVisitID)
public int VisitInfo(int EpdVisitID, out string name)
{
int? rv = 0;
const string taskName = "VisitInfo";
name = string.Empty;
try
{
VisitInfoCommand.Parameters["EPDVisitID"].Value = EpdVisitID;
@ -294,6 +295,7 @@ namespace eDosStation
rv = (int?)VisitInfoCommand.Parameters["RETURN_VALUE"].Value;
bool? hasExited = (bool?)VisitInfoCommand.Parameters["hasExited"].Value;
bool? isManualExit = (bool?)VisitInfoCommand.Parameters["isManualExit"].Value;
name = (string )VisitInfoCommand.Parameters["name"].Value;
}
catch (System.Exception ex)
{

File diff suppressed because it is too large Load diff

View file

@ -1,9 +1,9 @@
namespace eDosStation
{
partial class DataSet1
{
}
}
namespace eDosStation
{
partial class DataSet1
{
}
}

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DataSetUISetting Version="1.00" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TableUISettings />
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DataSetUISetting Version="1.00" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TableUISettings />
</DataSetUISetting>

View file

@ -1,293 +1,295 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="DataSet1" targetNamespace="http://tempuri.org/DataSet1.xsd" xmlns:mstns="http://tempuri.org/DataSet1.xsd" xmlns="http://tempuri.org/DataSet1.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:annotation>
<xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
<DataSource DefaultConnectionIndex="1" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<Connections>
<Connection AppSettingsObjectName="Settings" AppSettingsPropertyName="eDosConnectionString" IsAppSettingsProperty="true" Modifier="Assembly" Name="eDosConnectionString (Settings)" ParameterPrefix="@" PropertyReference="ApplicationSettings.eDosStation.Properties.Settings.GlobalReference.Default.eDosConnectionString" Provider="System.Data.SqlClient" />
<Connection AppSettingsObjectName="Settings" AppSettingsPropertyName="localConnectionString" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="localConnectionString (Settings)" ParameterPrefix="@" PropertyReference="ApplicationSettings.eDosStation.Properties.Settings.GlobalReference.Default.localConnectionString" Provider="System.Data.SqlClient" />
</Connections>
<Tables>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="GetTaskInfoTableAdapter" GeneratorDataComponentClassName="GetTaskInfoTableAdapter" Name="GetTaskInfo" UserDataComponentName="GetTaskInfoTableAdapter">
<MainSource>
<DbSource ConnectionRef="localConnectionString (Settings)" DbObjectName="eDosLocal.dbo.GetTaskInfo" DbObjectType="StoredProcedure" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="false" UserGetMethodName="GetData" UserSourceName="Fill">
<SelectCommand>
<DbCommand CommandType="StoredProcedure" ModifiedByUser="false">
<CommandText>dbo.GetTaskInfo</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="ReturnValue" ParameterName="@RETURN_VALUE" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="Input" ParameterName="@ID_Task" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="float" DbType="Double" Direction="Input" ParameterName="@WorkerDosisMargin" Precision="53" ProviderType="Float" Scale="0" Size="8" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</SelectCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="ID_Task" DataSetColumn="ID_Task" />
<Mapping SourceColumn="Inst_CODE" DataSetColumn="Inst_CODE" />
<Mapping SourceColumn="TaskType_CODE" DataSetColumn="TaskType_CODE" />
<Mapping SourceColumn="Task_Name" DataSetColumn="Task_Name" />
<Mapping SourceColumn="TaskDescription" DataSetColumn="TaskDescription" />
<Mapping SourceColumn="EPDRad" DataSetColumn="EPDRad" />
<Mapping SourceColumn="ID_AlarmEPD" DataSetColumn="ID_AlarmEPD" />
<Mapping SourceColumn="TaskDateStart" DataSetColumn="TaskDateStart" />
<Mapping SourceColumn="TaskDateEnd" DataSetColumn="TaskDateEnd" />
<Mapping SourceColumn="TaskEnable" DataSetColumn="TaskEnable" />
<Mapping SourceColumn="ID_FNGainANGain" DataSetColumn="ID_FNGainANGain" />
<Mapping SourceColumn="Hp10Dose1" DataSetColumn="Hp10Dose1" />
<Mapping SourceColumn="Hp10Dose2" DataSetColumn="Hp10Dose2" />
<Mapping SourceColumn="Hp07Dose" DataSetColumn="Hp07Dose" />
<Mapping SourceColumn="HP10Rate1ON" DataSetColumn="HP10Rate1ON" />
<Mapping SourceColumn="HP10Rate1OFF" DataSetColumn="HP10Rate1OFF" />
<Mapping SourceColumn="HP10Rate2ON" DataSetColumn="HP10Rate2ON" />
<Mapping SourceColumn="HP10Rate2OFF" DataSetColumn="HP10Rate2OFF" />
<Mapping SourceColumn="HP07RateON" DataSetColumn="HP07RateON" />
<Mapping SourceColumn="HP07RateOFF" DataSetColumn="HP07RateOFF" />
<Mapping SourceColumn="FNGain_ANGainValue" DataSetColumn="FNGain_ANGainValue" />
<Mapping SourceColumn="InstallationActivity" DataSetColumn="InstallationActivity" />
<Mapping SourceColumn="Description" DataSetColumn="Description" />
<Mapping SourceColumn="Inst_CODE1" DataSetColumn="Inst_CODE1" />
<Mapping SourceColumn="MinWorkerDosisMargin" DataSetColumn="MinWorkerDosisMargin" />
<Mapping SourceColumn="MarginExceeded" DataSetColumn="MarginExceeded" />
</Mappings>
<Sources />
</TableAdapter>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="GetTaskListTableAdapter" GeneratorDataComponentClassName="GetTaskListTableAdapter" Name="GetTaskList" UserDataComponentName="GetTaskListTableAdapter">
<MainSource>
<DbSource ConnectionRef="localConnectionString (Settings)" DbObjectName="eDosLocal.dbo.GetTaskList" DbObjectType="StoredProcedure" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="false" UserGetMethodName="GetData" UserSourceName="Fill">
<SelectCommand>
<DbCommand CommandType="StoredProcedure" ModifiedByUser="false">
<CommandText>dbo.GetTaskList</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="ReturnValue" ParameterName="@RETURN_VALUE" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</SelectCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="ID_Task" DataSetColumn="ID_Task" />
<Mapping SourceColumn="Inst_CODE" DataSetColumn="Inst_CODE" />
<Mapping SourceColumn="TaskType_CODE" DataSetColumn="TaskType_CODE" />
<Mapping SourceColumn="Task_Name" DataSetColumn="Task_Name" />
<Mapping SourceColumn="TaskDescription" DataSetColumn="TaskDescription" />
<Mapping SourceColumn="EPDRad" DataSetColumn="EPDRad" />
</Mappings>
<Sources />
</TableAdapter>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="CommentOnEventTableAdapter" GeneratorDataComponentClassName="CommentOnEventTableAdapter" Name="CommentOnEvent" UserDataComponentName="CommentOnEventTableAdapter">
<MainSource>
<DbSource ConnectionRef="localConnectionString (Settings)" DbObjectName="eDosLocal.dbo.CommentOnEventSelect" DbObjectType="StoredProcedure" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="false" UserGetMethodName="GetData" UserSourceName="Fill">
<SelectCommand>
<DbCommand CommandType="StoredProcedure" ModifiedByUser="false">
<CommandText>dbo.CommentOnEventSelect</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="ReturnValue" ParameterName="@RETURN_VALUE" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</SelectCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="ID_CommnentOnEvent" DataSetColumn="ID_CommnentOnEvent" />
<Mapping SourceColumn="TriggerTable" DataSetColumn="TriggerTable" />
<Mapping SourceColumn="TriggerField" DataSetColumn="TriggerField" />
<Mapping SourceColumn="TriggerStatus" DataSetColumn="TriggerStatus" />
<Mapping SourceColumn="Comment_FR" DataSetColumn="Comment_FR" />
<Mapping SourceColumn="Comment_NL" DataSetColumn="Comment_NL" />
<Mapping SourceColumn="Comment_EN" DataSetColumn="Comment_EN" />
</Mappings>
<Sources />
</TableAdapter>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="InstallationTableAdapter" GeneratorDataComponentClassName="InstallationTableAdapter" Name="Installation" UserDataComponentName="InstallationTableAdapter">
<MainSource>
<DbSource ConnectionRef="localConnectionString (Settings)" DbObjectName="eDosLocal.dbo.Installation" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="false" UserGetMethodName="GetData" UserSourceName="Fill">
<SelectCommand>
<DbCommand CommandType="Text" ModifiedByUser="true">
<CommandText>SELECT [Inst_CODE] ,[InstallationName]
FROM [eDosLocal].[dbo].[Installation] order by [InstallationName]</CommandText>
<Parameters />
</DbCommand>
</SelectCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="Inst_CODE" DataSetColumn="Inst_CODE" />
<Mapping SourceColumn="InstallationName" DataSetColumn="InstallationName" />
</Mappings>
<Sources />
</TableAdapter>
</Tables>
<Sources />
</DataSource>
</xs:appinfo>
</xs:annotation>
<xs:element name="DataSet1" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:EnableTableAdapterManager="true" msprop:Generator_DataSetName="DataSet1" msprop:Generator_UserDSName="DataSet1">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="GetTaskInfo" msprop:Generator_TableClassName="GetTaskInfoDataTable" msprop:Generator_TableVarName="tableGetTaskInfo" msprop:Generator_TablePropName="GetTaskInfo" msprop:Generator_RowDeletingName="GetTaskInfoRowDeleting" msprop:Generator_RowChangingName="GetTaskInfoRowChanging" msprop:Generator_RowEvHandlerName="GetTaskInfoRowChangeEventHandler" msprop:Generator_RowDeletedName="GetTaskInfoRowDeleted" msprop:Generator_UserTableName="GetTaskInfo" msprop:Generator_RowChangedName="GetTaskInfoRowChanged" msprop:Generator_RowEvArgName="GetTaskInfoRowChangeEvent" msprop:Generator_RowClassName="GetTaskInfoRow">
<xs:complexType>
<xs:sequence>
<xs:element name="ID_Task" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnID_Task" msprop:Generator_ColumnPropNameInRow="ID_Task" msprop:Generator_ColumnPropNameInTable="ID_TaskColumn" msprop:Generator_UserColumnName="ID_Task" type="xs:int" />
<xs:element name="Inst_CODE" msprop:Generator_ColumnVarNameInTable="columnInst_CODE" msprop:Generator_ColumnPropNameInRow="Inst_CODE" msprop:Generator_ColumnPropNameInTable="Inst_CODEColumn" msprop:Generator_UserColumnName="Inst_CODE" type="xs:int" minOccurs="0" />
<xs:element name="TaskType_CODE" msprop:Generator_ColumnVarNameInTable="columnTaskType_CODE" msprop:Generator_ColumnPropNameInRow="TaskType_CODE" msprop:Generator_ColumnPropNameInTable="TaskType_CODEColumn" msprop:Generator_UserColumnName="TaskType_CODE" type="xs:int" minOccurs="0" />
<xs:element name="Task_Name" msprop:Generator_ColumnVarNameInTable="columnTask_Name" msprop:Generator_ColumnPropNameInRow="Task_Name" msprop:Generator_ColumnPropNameInTable="Task_NameColumn" msprop:Generator_UserColumnName="Task_Name" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TaskDescription" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnTaskDescription" msprop:Generator_ColumnPropNameInRow="TaskDescription" msprop:Generator_ColumnPropNameInTable="TaskDescriptionColumn" msprop:Generator_UserColumnName="TaskDescription">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="EPDRad" msprop:Generator_ColumnVarNameInTable="columnEPDRad" msprop:Generator_ColumnPropNameInRow="EPDRad" msprop:Generator_ColumnPropNameInTable="EPDRadColumn" msprop:Generator_UserColumnName="EPDRad">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ID_AlarmEPD" msprop:Generator_ColumnVarNameInTable="columnID_AlarmEPD" msprop:Generator_ColumnPropNameInRow="ID_AlarmEPD" msprop:Generator_ColumnPropNameInTable="ID_AlarmEPDColumn" msprop:Generator_UserColumnName="ID_AlarmEPD" type="xs:int" minOccurs="0" />
<xs:element name="TaskDateStart" msprop:Generator_ColumnVarNameInTable="columnTaskDateStart" msprop:Generator_ColumnPropNameInRow="TaskDateStart" msprop:Generator_ColumnPropNameInTable="TaskDateStartColumn" msprop:Generator_UserColumnName="TaskDateStart" type="xs:dateTime" minOccurs="0" />
<xs:element name="TaskDateEnd" msprop:Generator_ColumnVarNameInTable="columnTaskDateEnd" msprop:Generator_ColumnPropNameInRow="TaskDateEnd" msprop:Generator_ColumnPropNameInTable="TaskDateEndColumn" msprop:Generator_UserColumnName="TaskDateEnd" type="xs:dateTime" minOccurs="0" />
<xs:element name="TaskEnable" msprop:Generator_ColumnVarNameInTable="columnTaskEnable" msprop:Generator_ColumnPropNameInRow="TaskEnable" msprop:Generator_ColumnPropNameInTable="TaskEnableColumn" msprop:Generator_UserColumnName="TaskEnable" type="xs:boolean" minOccurs="0" />
<xs:element name="ID_FNGainANGain" msprop:Generator_ColumnVarNameInTable="columnID_FNGainANGain" msprop:Generator_ColumnPropNameInRow="ID_FNGainANGain" msprop:Generator_ColumnPropNameInTable="ID_FNGainANGainColumn" msprop:Generator_UserColumnName="ID_FNGainANGain" type="xs:int" minOccurs="0" />
<xs:element name="Hp10Dose1" msprop:Generator_ColumnVarNameInTable="columnHp10Dose1" msprop:Generator_ColumnPropNameInRow="Hp10Dose1" msprop:Generator_ColumnPropNameInTable="Hp10Dose1Column" msprop:Generator_UserColumnName="Hp10Dose1" type="xs:double" minOccurs="0" />
<xs:element name="Hp10Dose2" msprop:Generator_ColumnVarNameInTable="columnHp10Dose2" msprop:Generator_ColumnPropNameInRow="Hp10Dose2" msprop:Generator_ColumnPropNameInTable="Hp10Dose2Column" msprop:Generator_UserColumnName="Hp10Dose2" type="xs:double" minOccurs="0" />
<xs:element name="Hp07Dose" msprop:Generator_ColumnVarNameInTable="columnHp07Dose" msprop:Generator_ColumnPropNameInRow="Hp07Dose" msprop:Generator_ColumnPropNameInTable="Hp07DoseColumn" msprop:Generator_UserColumnName="Hp07Dose" type="xs:double" minOccurs="0" />
<xs:element name="HP10Rate1ON" msprop:Generator_ColumnVarNameInTable="columnHP10Rate1ON" msprop:Generator_ColumnPropNameInRow="HP10Rate1ON" msprop:Generator_ColumnPropNameInTable="HP10Rate1ONColumn" msprop:Generator_UserColumnName="HP10Rate1ON" type="xs:double" minOccurs="0" />
<xs:element name="HP10Rate1OFF" msprop:Generator_ColumnVarNameInTable="columnHP10Rate1OFF" msprop:Generator_ColumnPropNameInRow="HP10Rate1OFF" msprop:Generator_ColumnPropNameInTable="HP10Rate1OFFColumn" msprop:Generator_UserColumnName="HP10Rate1OFF" type="xs:double" minOccurs="0" />
<xs:element name="HP10Rate2ON" msprop:Generator_ColumnVarNameInTable="columnHP10Rate2ON" msprop:Generator_ColumnPropNameInRow="HP10Rate2ON" msprop:Generator_ColumnPropNameInTable="HP10Rate2ONColumn" msprop:Generator_UserColumnName="HP10Rate2ON" type="xs:double" minOccurs="0" />
<xs:element name="HP10Rate2OFF" msprop:Generator_ColumnVarNameInTable="columnHP10Rate2OFF" msprop:Generator_ColumnPropNameInRow="HP10Rate2OFF" msprop:Generator_ColumnPropNameInTable="HP10Rate2OFFColumn" msprop:Generator_UserColumnName="HP10Rate2OFF" type="xs:double" minOccurs="0" />
<xs:element name="HP07RateON" msprop:Generator_ColumnVarNameInTable="columnHP07RateON" msprop:Generator_ColumnPropNameInRow="HP07RateON" msprop:Generator_ColumnPropNameInTable="HP07RateONColumn" msprop:Generator_UserColumnName="HP07RateON" type="xs:double" minOccurs="0" />
<xs:element name="HP07RateOFF" msprop:Generator_ColumnVarNameInTable="columnHP07RateOFF" msprop:Generator_ColumnPropNameInRow="HP07RateOFF" msprop:Generator_ColumnPropNameInTable="HP07RateOFFColumn" msprop:Generator_UserColumnName="HP07RateOFF" type="xs:double" minOccurs="0" />
<xs:element name="FNGain_ANGainValue" msprop:Generator_ColumnVarNameInTable="columnFNGain_ANGainValue" msprop:Generator_ColumnPropNameInRow="FNGain_ANGainValue" msprop:Generator_ColumnPropNameInTable="FNGain_ANGainValueColumn" msprop:Generator_UserColumnName="FNGain_ANGainValue" type="xs:double" minOccurs="0" />
<xs:element name="InstallationActivity" msprop:Generator_ColumnVarNameInTable="columnInstallationActivity" msprop:Generator_ColumnPropNameInRow="InstallationActivity" msprop:Generator_ColumnPropNameInTable="InstallationActivityColumn" msprop:Generator_UserColumnName="InstallationActivity" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Description" msprop:Generator_ColumnVarNameInTable="columnDescription" msprop:Generator_ColumnPropNameInRow="Description" msprop:Generator_ColumnPropNameInTable="DescriptionColumn" msprop:Generator_UserColumnName="Description" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Inst_CODE1" msprop:Generator_ColumnVarNameInTable="columnInst_CODE1" msprop:Generator_ColumnPropNameInRow="Inst_CODE1" msprop:Generator_ColumnPropNameInTable="Inst_CODE1Column" msprop:Generator_UserColumnName="Inst_CODE1" type="xs:int" minOccurs="0" />
<xs:element name="MinWorkerDosisMargin" msprop:Generator_ColumnVarNameInTable="columnMinWorkerDosisMargin" msprop:Generator_ColumnPropNameInRow="MinWorkerDosisMargin" msprop:Generator_ColumnPropNameInTable="MinWorkerDosisMarginColumn" msprop:Generator_UserColumnName="MinWorkerDosisMargin" type="xs:double" minOccurs="0" />
<xs:element name="MarginExceeded" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnMarginExceeded" msprop:Generator_ColumnPropNameInRow="MarginExceeded" msprop:Generator_ColumnPropNameInTable="MarginExceededColumn" msprop:Generator_UserColumnName="MarginExceeded" type="xs:boolean" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GetTaskList" msprop:Generator_TableClassName="GetTaskListDataTable" msprop:Generator_TableVarName="tableGetTaskList" msprop:Generator_TablePropName="GetTaskList" msprop:Generator_RowDeletingName="GetTaskListRowDeleting" msprop:Generator_RowChangingName="GetTaskListRowChanging" msprop:Generator_RowEvHandlerName="GetTaskListRowChangeEventHandler" msprop:Generator_RowDeletedName="GetTaskListRowDeleted" msprop:Generator_UserTableName="GetTaskList" msprop:Generator_RowChangedName="GetTaskListRowChanged" msprop:Generator_RowEvArgName="GetTaskListRowChangeEvent" msprop:Generator_RowClassName="GetTaskListRow">
<xs:complexType>
<xs:sequence>
<xs:element name="ID_Task" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnID_Task" msprop:Generator_ColumnPropNameInRow="ID_Task" msprop:Generator_ColumnPropNameInTable="ID_TaskColumn" msprop:Generator_UserColumnName="ID_Task" type="xs:int" />
<xs:element name="Inst_CODE" msprop:Generator_ColumnVarNameInTable="columnInst_CODE" msprop:Generator_ColumnPropNameInRow="Inst_CODE" msprop:Generator_ColumnPropNameInTable="Inst_CODEColumn" msprop:Generator_UserColumnName="Inst_CODE" type="xs:int" minOccurs="0" />
<xs:element name="TaskType_CODE" msprop:Generator_ColumnVarNameInTable="columnTaskType_CODE" msprop:Generator_ColumnPropNameInRow="TaskType_CODE" msprop:Generator_ColumnPropNameInTable="TaskType_CODEColumn" msprop:Generator_UserColumnName="TaskType_CODE" type="xs:int" minOccurs="0" />
<xs:element name="Task_Name" msprop:Generator_ColumnVarNameInTable="columnTask_Name" msprop:Generator_ColumnPropNameInRow="Task_Name" msprop:Generator_ColumnPropNameInTable="Task_NameColumn" msprop:Generator_UserColumnName="Task_Name" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TaskDescription" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnTaskDescription" msprop:Generator_ColumnPropNameInRow="TaskDescription" msprop:Generator_ColumnPropNameInTable="TaskDescriptionColumn" msprop:Generator_UserColumnName="TaskDescription">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="EPDRad" msprop:Generator_ColumnVarNameInTable="columnEPDRad" msprop:Generator_ColumnPropNameInRow="EPDRad" msprop:Generator_ColumnPropNameInTable="EPDRadColumn" msprop:Generator_UserColumnName="EPDRad">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CommentOnEvent" msprop:Generator_TableClassName="CommentOnEventDataTable" msprop:Generator_TableVarName="tableCommentOnEvent" msprop:Generator_TablePropName="CommentOnEvent" msprop:Generator_RowDeletingName="CommentOnEventRowDeleting" msprop:Generator_RowChangingName="CommentOnEventRowChanging" msprop:Generator_RowEvHandlerName="CommentOnEventRowChangeEventHandler" msprop:Generator_RowDeletedName="CommentOnEventRowDeleted" msprop:Generator_UserTableName="CommentOnEvent" msprop:Generator_RowChangedName="CommentOnEventRowChanged" msprop:Generator_RowEvArgName="CommentOnEventRowChangeEvent" msprop:Generator_RowClassName="CommentOnEventRow">
<xs:complexType>
<xs:sequence>
<xs:element name="ID_CommnentOnEvent" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnID_CommnentOnEvent" msprop:Generator_ColumnPropNameInRow="ID_CommnentOnEvent" msprop:Generator_ColumnPropNameInTable="ID_CommnentOnEventColumn" msprop:Generator_UserColumnName="ID_CommnentOnEvent" type="xs:int" />
<xs:element name="TriggerTable" msprop:Generator_ColumnVarNameInTable="columnTriggerTable" msprop:Generator_ColumnPropNameInRow="TriggerTable" msprop:Generator_ColumnPropNameInTable="TriggerTableColumn" msprop:Generator_UserColumnName="TriggerTable" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TriggerField" msprop:Generator_ColumnVarNameInTable="columnTriggerField" msprop:Generator_ColumnPropNameInRow="TriggerField" msprop:Generator_ColumnPropNameInTable="TriggerFieldColumn" msprop:Generator_UserColumnName="TriggerField" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TriggerStatus" msprop:Generator_ColumnVarNameInTable="columnTriggerStatus" msprop:Generator_ColumnPropNameInRow="TriggerStatus" msprop:Generator_ColumnPropNameInTable="TriggerStatusColumn" msprop:Generator_UserColumnName="TriggerStatus" type="xs:boolean" minOccurs="0" />
<xs:element name="Comment_FR" msprop:Generator_ColumnVarNameInTable="columnComment_FR" msprop:Generator_ColumnPropNameInRow="Comment_FR" msprop:Generator_ColumnPropNameInTable="Comment_FRColumn" msprop:Generator_UserColumnName="Comment_FR" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Comment_NL" msprop:Generator_ColumnVarNameInTable="columnComment_NL" msprop:Generator_ColumnPropNameInRow="Comment_NL" msprop:Generator_ColumnPropNameInTable="Comment_NLColumn" msprop:Generator_UserColumnName="Comment_NL" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Comment_EN" msprop:Generator_ColumnVarNameInTable="columnComment_EN" msprop:Generator_ColumnPropNameInRow="Comment_EN" msprop:Generator_ColumnPropNameInTable="Comment_ENColumn" msprop:Generator_UserColumnName="Comment_EN" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Installation" msprop:Generator_TableClassName="InstallationDataTable" msprop:Generator_TableVarName="tableInstallation" msprop:Generator_TablePropName="Installation" msprop:Generator_RowDeletingName="InstallationRowDeleting" msprop:Generator_RowChangingName="InstallationRowChanging" msprop:Generator_RowEvHandlerName="InstallationRowChangeEventHandler" msprop:Generator_RowDeletedName="InstallationRowDeleted" msprop:Generator_UserTableName="Installation" msprop:Generator_RowChangedName="InstallationRowChanged" msprop:Generator_RowEvArgName="InstallationRowChangeEvent" msprop:Generator_RowClassName="InstallationRow">
<xs:complexType>
<xs:sequence>
<xs:element name="Inst_CODE" msprop:Generator_ColumnVarNameInTable="columnInst_CODE" msprop:Generator_ColumnPropNameInRow="Inst_CODE" msprop:Generator_ColumnPropNameInTable="Inst_CODEColumn" msprop:Generator_UserColumnName="Inst_CODE" type="xs:int" />
<xs:element name="InstallationName" msprop:Generator_ColumnVarNameInTable="columnInstallationName" msprop:Generator_ColumnPropNameInRow="InstallationName" msprop:Generator_ColumnPropNameInTable="InstallationNameColumn" msprop:Generator_UserColumnName="InstallationName" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:unique name="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:GetTaskInfo" />
<xs:field xpath="mstns:ID_Task" />
</xs:unique>
<xs:unique name="GetTaskList_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:GetTaskList" />
<xs:field xpath="mstns:ID_Task" />
</xs:unique>
<xs:unique name="CommentOnEvent_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:CommentOnEvent" />
<xs:field xpath="mstns:ID_CommnentOnEvent" />
</xs:unique>
</xs:element>
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="DataSet1" targetNamespace="http://tempuri.org/DataSet1.xsd" xmlns:mstns="http://tempuri.org/DataSet1.xsd" xmlns="http://tempuri.org/DataSet1.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:annotation>
<xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
<DataSource DefaultConnectionIndex="1" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<Connections>
<Connection AppSettingsObjectName="Settings" AppSettingsPropertyName="eDosConnectionString" IsAppSettingsProperty="true" Modifier="Assembly" Name="eDosConnectionString (Settings)" ParameterPrefix="@" PropertyReference="ApplicationSettings.eDosStation.Properties.Settings.GlobalReference.Default.eDosConnectionString" Provider="System.Data.SqlClient" />
<Connection AppSettingsObjectName="Settings" AppSettingsPropertyName="localConnectionString" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="localConnectionString (Settings)" ParameterPrefix="@" PropertyReference="ApplicationSettings.eDosStation.Properties.Settings.GlobalReference.Default.localConnectionString" Provider="System.Data.SqlClient" />
</Connections>
<Tables>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="GetTaskInfoTableAdapter" GeneratorDataComponentClassName="GetTaskInfoTableAdapter" Name="GetTaskInfo" UserDataComponentName="GetTaskInfoTableAdapter">
<MainSource>
<DbSource ConnectionRef="localConnectionString (Settings)" DbObjectName="eDosLocal.dbo.GetTaskInfo" DbObjectType="StoredProcedure" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="false" UserGetMethodName="GetData" UserSourceName="Fill">
<SelectCommand>
<DbCommand CommandType="StoredProcedure" ModifiedByUser="false">
<CommandText>dbo.GetTaskInfo</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="ReturnValue" ParameterName="@RETURN_VALUE" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="Input" ParameterName="@ID_Task" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="float" DbType="Double" Direction="Input" ParameterName="@WorkerDosisMargin" Precision="53" ProviderType="Float" Scale="0" Size="8" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</SelectCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="ID_Task" DataSetColumn="ID_Task" />
<Mapping SourceColumn="Inst_CODE" DataSetColumn="Inst_CODE" />
<Mapping SourceColumn="TaskType_CODE" DataSetColumn="TaskType_CODE" />
<Mapping SourceColumn="Task_Name" DataSetColumn="Task_Name" />
<Mapping SourceColumn="TaskDescription" DataSetColumn="TaskDescription" />
<Mapping SourceColumn="EPDRad" DataSetColumn="EPDRad" />
<Mapping SourceColumn="ID_AlarmEPD" DataSetColumn="ID_AlarmEPD" />
<Mapping SourceColumn="TaskDateStart" DataSetColumn="TaskDateStart" />
<Mapping SourceColumn="TaskDateEnd" DataSetColumn="TaskDateEnd" />
<Mapping SourceColumn="TaskEnable" DataSetColumn="TaskEnable" />
<Mapping SourceColumn="ID_FNGainANGain" DataSetColumn="ID_FNGainANGain" />
<Mapping SourceColumn="Hp10Dose1" DataSetColumn="Hp10Dose1" />
<Mapping SourceColumn="Hp10Dose2" DataSetColumn="Hp10Dose2" />
<Mapping SourceColumn="Hp07Dose" DataSetColumn="Hp07Dose" />
<Mapping SourceColumn="HP10Rate1ON" DataSetColumn="HP10Rate1ON" />
<Mapping SourceColumn="HP10Rate1OFF" DataSetColumn="HP10Rate1OFF" />
<Mapping SourceColumn="HP10Rate2ON" DataSetColumn="HP10Rate2ON" />
<Mapping SourceColumn="HP10Rate2OFF" DataSetColumn="HP10Rate2OFF" />
<Mapping SourceColumn="HP07RateON" DataSetColumn="HP07RateON" />
<Mapping SourceColumn="HP07RateOFF" DataSetColumn="HP07RateOFF" />
<Mapping SourceColumn="FNGain_ANGainValue" DataSetColumn="FNGain_ANGainValue" />
<Mapping SourceColumn="InstallationActivity" DataSetColumn="InstallationActivity" />
<Mapping SourceColumn="Description" DataSetColumn="Description" />
<Mapping SourceColumn="Inst_CODE1" DataSetColumn="Inst_CODE1" />
<Mapping SourceColumn="MinWorkerDosisMargin" DataSetColumn="MinWorkerDosisMargin" />
<Mapping SourceColumn="MarginExceeded" DataSetColumn="MarginExceeded" />
<Mapping SourceColumn="ChirpRate" DataSetColumn="ChirpRate" />
</Mappings>
<Sources />
</TableAdapter>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="GetTaskListTableAdapter" GeneratorDataComponentClassName="GetTaskListTableAdapter" Name="GetTaskList" UserDataComponentName="GetTaskListTableAdapter">
<MainSource>
<DbSource ConnectionRef="localConnectionString (Settings)" DbObjectName="eDosLocal.dbo.GetTaskList" DbObjectType="StoredProcedure" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="false" UserGetMethodName="GetData" UserSourceName="Fill">
<SelectCommand>
<DbCommand CommandType="StoredProcedure" ModifiedByUser="false">
<CommandText>dbo.GetTaskList</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="ReturnValue" ParameterName="@RETURN_VALUE" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</SelectCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="ID_Task" DataSetColumn="ID_Task" />
<Mapping SourceColumn="Inst_CODE" DataSetColumn="Inst_CODE" />
<Mapping SourceColumn="TaskType_CODE" DataSetColumn="TaskType_CODE" />
<Mapping SourceColumn="Task_Name" DataSetColumn="Task_Name" />
<Mapping SourceColumn="TaskDescription" DataSetColumn="TaskDescription" />
<Mapping SourceColumn="EPDRad" DataSetColumn="EPDRad" />
</Mappings>
<Sources />
</TableAdapter>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="CommentOnEventTableAdapter" GeneratorDataComponentClassName="CommentOnEventTableAdapter" Name="CommentOnEvent" UserDataComponentName="CommentOnEventTableAdapter">
<MainSource>
<DbSource ConnectionRef="localConnectionString (Settings)" DbObjectName="eDosLocal.dbo.CommentOnEventSelect" DbObjectType="StoredProcedure" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="false" UserGetMethodName="GetData" UserSourceName="Fill">
<SelectCommand>
<DbCommand CommandType="StoredProcedure" ModifiedByUser="false">
<CommandText>dbo.CommentOnEventSelect</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="ReturnValue" ParameterName="@RETURN_VALUE" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</SelectCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="ID_CommnentOnEvent" DataSetColumn="ID_CommnentOnEvent" />
<Mapping SourceColumn="TriggerTable" DataSetColumn="TriggerTable" />
<Mapping SourceColumn="TriggerField" DataSetColumn="TriggerField" />
<Mapping SourceColumn="TriggerStatus" DataSetColumn="TriggerStatus" />
<Mapping SourceColumn="Comment_FR" DataSetColumn="Comment_FR" />
<Mapping SourceColumn="Comment_NL" DataSetColumn="Comment_NL" />
<Mapping SourceColumn="Comment_EN" DataSetColumn="Comment_EN" />
</Mappings>
<Sources />
</TableAdapter>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="InstallationTableAdapter" GeneratorDataComponentClassName="InstallationTableAdapter" Name="Installation" UserDataComponentName="InstallationTableAdapter">
<MainSource>
<DbSource ConnectionRef="localConnectionString (Settings)" DbObjectName="eDosLocal.dbo.Installation" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="false" UserGetMethodName="GetData" UserSourceName="Fill">
<SelectCommand>
<DbCommand CommandType="Text" ModifiedByUser="true">
<CommandText>SELECT [Inst_CODE] ,[InstallationName]
FROM [eDosLocal].[dbo].[Installation] order by [InstallationName]</CommandText>
<Parameters />
</DbCommand>
</SelectCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="Inst_CODE" DataSetColumn="Inst_CODE" />
<Mapping SourceColumn="InstallationName" DataSetColumn="InstallationName" />
</Mappings>
<Sources />
</TableAdapter>
</Tables>
<Sources />
</DataSource>
</xs:appinfo>
</xs:annotation>
<xs:element name="DataSet1" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:EnableTableAdapterManager="true" msprop:Generator_DataSetName="DataSet1" msprop:Generator_UserDSName="DataSet1">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="GetTaskInfo" msprop:Generator_TableClassName="GetTaskInfoDataTable" msprop:Generator_TableVarName="tableGetTaskInfo" msprop:Generator_RowChangedName="GetTaskInfoRowChanged" msprop:Generator_TablePropName="GetTaskInfo" msprop:Generator_RowDeletingName="GetTaskInfoRowDeleting" msprop:Generator_RowChangingName="GetTaskInfoRowChanging" msprop:Generator_RowEvHandlerName="GetTaskInfoRowChangeEventHandler" msprop:Generator_RowDeletedName="GetTaskInfoRowDeleted" msprop:Generator_RowClassName="GetTaskInfoRow" msprop:Generator_UserTableName="GetTaskInfo" msprop:Generator_RowEvArgName="GetTaskInfoRowChangeEvent">
<xs:complexType>
<xs:sequence>
<xs:element name="ID_Task" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnID_Task" msprop:Generator_ColumnPropNameInRow="ID_Task" msprop:Generator_ColumnPropNameInTable="ID_TaskColumn" msprop:Generator_UserColumnName="ID_Task" type="xs:int" />
<xs:element name="Inst_CODE" msprop:Generator_ColumnVarNameInTable="columnInst_CODE" msprop:Generator_ColumnPropNameInRow="Inst_CODE" msprop:Generator_ColumnPropNameInTable="Inst_CODEColumn" msprop:Generator_UserColumnName="Inst_CODE" type="xs:int" minOccurs="0" />
<xs:element name="TaskType_CODE" msprop:Generator_ColumnVarNameInTable="columnTaskType_CODE" msprop:Generator_ColumnPropNameInRow="TaskType_CODE" msprop:Generator_ColumnPropNameInTable="TaskType_CODEColumn" msprop:Generator_UserColumnName="TaskType_CODE" type="xs:int" minOccurs="0" />
<xs:element name="Task_Name" msprop:Generator_ColumnVarNameInTable="columnTask_Name" msprop:Generator_ColumnPropNameInRow="Task_Name" msprop:Generator_ColumnPropNameInTable="Task_NameColumn" msprop:Generator_UserColumnName="Task_Name" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TaskDescription" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnTaskDescription" msprop:Generator_ColumnPropNameInRow="TaskDescription" msprop:Generator_ColumnPropNameInTable="TaskDescriptionColumn" msprop:Generator_UserColumnName="TaskDescription">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="EPDRad" msprop:Generator_ColumnVarNameInTable="columnEPDRad" msprop:Generator_ColumnPropNameInRow="EPDRad" msprop:Generator_ColumnPropNameInTable="EPDRadColumn" msprop:Generator_UserColumnName="EPDRad">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ID_AlarmEPD" msprop:Generator_ColumnVarNameInTable="columnID_AlarmEPD" msprop:Generator_ColumnPropNameInRow="ID_AlarmEPD" msprop:Generator_ColumnPropNameInTable="ID_AlarmEPDColumn" msprop:Generator_UserColumnName="ID_AlarmEPD" type="xs:int" minOccurs="0" />
<xs:element name="TaskDateStart" msprop:Generator_ColumnVarNameInTable="columnTaskDateStart" msprop:Generator_ColumnPropNameInRow="TaskDateStart" msprop:Generator_ColumnPropNameInTable="TaskDateStartColumn" msprop:Generator_UserColumnName="TaskDateStart" type="xs:dateTime" minOccurs="0" />
<xs:element name="TaskDateEnd" msprop:Generator_ColumnVarNameInTable="columnTaskDateEnd" msprop:Generator_ColumnPropNameInRow="TaskDateEnd" msprop:Generator_ColumnPropNameInTable="TaskDateEndColumn" msprop:Generator_UserColumnName="TaskDateEnd" type="xs:dateTime" minOccurs="0" />
<xs:element name="TaskEnable" msprop:Generator_ColumnVarNameInTable="columnTaskEnable" msprop:Generator_ColumnPropNameInRow="TaskEnable" msprop:Generator_ColumnPropNameInTable="TaskEnableColumn" msprop:Generator_UserColumnName="TaskEnable" type="xs:boolean" minOccurs="0" />
<xs:element name="ID_FNGainANGain" msprop:Generator_ColumnVarNameInTable="columnID_FNGainANGain" msprop:Generator_ColumnPropNameInRow="ID_FNGainANGain" msprop:Generator_ColumnPropNameInTable="ID_FNGainANGainColumn" msprop:Generator_UserColumnName="ID_FNGainANGain" type="xs:int" minOccurs="0" />
<xs:element name="Hp10Dose1" msprop:Generator_ColumnVarNameInTable="columnHp10Dose1" msprop:Generator_ColumnPropNameInRow="Hp10Dose1" msprop:Generator_ColumnPropNameInTable="Hp10Dose1Column" msprop:Generator_UserColumnName="Hp10Dose1" type="xs:double" minOccurs="0" />
<xs:element name="Hp10Dose2" msprop:Generator_ColumnVarNameInTable="columnHp10Dose2" msprop:Generator_ColumnPropNameInRow="Hp10Dose2" msprop:Generator_ColumnPropNameInTable="Hp10Dose2Column" msprop:Generator_UserColumnName="Hp10Dose2" type="xs:double" minOccurs="0" />
<xs:element name="Hp07Dose" msprop:Generator_ColumnVarNameInTable="columnHp07Dose" msprop:Generator_ColumnPropNameInRow="Hp07Dose" msprop:Generator_ColumnPropNameInTable="Hp07DoseColumn" msprop:Generator_UserColumnName="Hp07Dose" type="xs:double" minOccurs="0" />
<xs:element name="HP10Rate1ON" msprop:Generator_ColumnVarNameInTable="columnHP10Rate1ON" msprop:Generator_ColumnPropNameInRow="HP10Rate1ON" msprop:Generator_ColumnPropNameInTable="HP10Rate1ONColumn" msprop:Generator_UserColumnName="HP10Rate1ON" type="xs:double" minOccurs="0" />
<xs:element name="HP10Rate1OFF" msprop:Generator_ColumnVarNameInTable="columnHP10Rate1OFF" msprop:Generator_ColumnPropNameInRow="HP10Rate1OFF" msprop:Generator_ColumnPropNameInTable="HP10Rate1OFFColumn" msprop:Generator_UserColumnName="HP10Rate1OFF" type="xs:double" minOccurs="0" />
<xs:element name="HP10Rate2ON" msprop:Generator_ColumnVarNameInTable="columnHP10Rate2ON" msprop:Generator_ColumnPropNameInRow="HP10Rate2ON" msprop:Generator_ColumnPropNameInTable="HP10Rate2ONColumn" msprop:Generator_UserColumnName="HP10Rate2ON" type="xs:double" minOccurs="0" />
<xs:element name="HP10Rate2OFF" msprop:Generator_ColumnVarNameInTable="columnHP10Rate2OFF" msprop:Generator_ColumnPropNameInRow="HP10Rate2OFF" msprop:Generator_ColumnPropNameInTable="HP10Rate2OFFColumn" msprop:Generator_UserColumnName="HP10Rate2OFF" type="xs:double" minOccurs="0" />
<xs:element name="HP07RateON" msprop:Generator_ColumnVarNameInTable="columnHP07RateON" msprop:Generator_ColumnPropNameInRow="HP07RateON" msprop:Generator_ColumnPropNameInTable="HP07RateONColumn" msprop:Generator_UserColumnName="HP07RateON" type="xs:double" minOccurs="0" />
<xs:element name="HP07RateOFF" msprop:Generator_ColumnVarNameInTable="columnHP07RateOFF" msprop:Generator_ColumnPropNameInRow="HP07RateOFF" msprop:Generator_ColumnPropNameInTable="HP07RateOFFColumn" msprop:Generator_UserColumnName="HP07RateOFF" type="xs:double" minOccurs="0" />
<xs:element name="FNGain_ANGainValue" msprop:Generator_ColumnVarNameInTable="columnFNGain_ANGainValue" msprop:Generator_ColumnPropNameInRow="FNGain_ANGainValue" msprop:Generator_ColumnPropNameInTable="FNGain_ANGainValueColumn" msprop:Generator_UserColumnName="FNGain_ANGainValue" type="xs:double" minOccurs="0" />
<xs:element name="InstallationActivity" msprop:Generator_ColumnVarNameInTable="columnInstallationActivity" msprop:Generator_ColumnPropNameInRow="InstallationActivity" msprop:Generator_ColumnPropNameInTable="InstallationActivityColumn" msprop:Generator_UserColumnName="InstallationActivity" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Description" msprop:Generator_ColumnVarNameInTable="columnDescription" msprop:Generator_ColumnPropNameInRow="Description" msprop:Generator_ColumnPropNameInTable="DescriptionColumn" msprop:Generator_UserColumnName="Description" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Inst_CODE1" msprop:Generator_ColumnVarNameInTable="columnInst_CODE1" msprop:Generator_ColumnPropNameInRow="Inst_CODE1" msprop:Generator_ColumnPropNameInTable="Inst_CODE1Column" msprop:Generator_UserColumnName="Inst_CODE1" type="xs:int" minOccurs="0" />
<xs:element name="MinWorkerDosisMargin" msprop:Generator_ColumnVarNameInTable="columnMinWorkerDosisMargin" msprop:Generator_ColumnPropNameInRow="MinWorkerDosisMargin" msprop:Generator_ColumnPropNameInTable="MinWorkerDosisMarginColumn" msprop:Generator_UserColumnName="MinWorkerDosisMargin" type="xs:double" minOccurs="0" />
<xs:element name="MarginExceeded" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnMarginExceeded" msprop:Generator_ColumnPropNameInRow="MarginExceeded" msprop:Generator_ColumnPropNameInTable="MarginExceededColumn" msprop:Generator_UserColumnName="MarginExceeded" type="xs:boolean" minOccurs="0" />
<xs:element name="ChirpRate" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnChirpRate" msprop:Generator_ColumnPropNameInRow="ChirpRate" msprop:Generator_ColumnPropNameInTable="ChirpRateColumn" msprop:Generator_UserColumnName="ChirpRate" type="xs:float" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GetTaskList" msprop:Generator_TableClassName="GetTaskListDataTable" msprop:Generator_TableVarName="tableGetTaskList" msprop:Generator_RowChangedName="GetTaskListRowChanged" msprop:Generator_TablePropName="GetTaskList" msprop:Generator_RowDeletingName="GetTaskListRowDeleting" msprop:Generator_RowChangingName="GetTaskListRowChanging" msprop:Generator_RowEvHandlerName="GetTaskListRowChangeEventHandler" msprop:Generator_RowDeletedName="GetTaskListRowDeleted" msprop:Generator_RowClassName="GetTaskListRow" msprop:Generator_UserTableName="GetTaskList" msprop:Generator_RowEvArgName="GetTaskListRowChangeEvent">
<xs:complexType>
<xs:sequence>
<xs:element name="ID_Task" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnID_Task" msprop:Generator_ColumnPropNameInRow="ID_Task" msprop:Generator_ColumnPropNameInTable="ID_TaskColumn" msprop:Generator_UserColumnName="ID_Task" type="xs:int" />
<xs:element name="Inst_CODE" msprop:Generator_ColumnVarNameInTable="columnInst_CODE" msprop:Generator_ColumnPropNameInRow="Inst_CODE" msprop:Generator_ColumnPropNameInTable="Inst_CODEColumn" msprop:Generator_UserColumnName="Inst_CODE" type="xs:int" minOccurs="0" />
<xs:element name="TaskType_CODE" msprop:Generator_ColumnVarNameInTable="columnTaskType_CODE" msprop:Generator_ColumnPropNameInRow="TaskType_CODE" msprop:Generator_ColumnPropNameInTable="TaskType_CODEColumn" msprop:Generator_UserColumnName="TaskType_CODE" type="xs:int" minOccurs="0" />
<xs:element name="Task_Name" msprop:Generator_ColumnVarNameInTable="columnTask_Name" msprop:Generator_ColumnPropNameInRow="Task_Name" msprop:Generator_ColumnPropNameInTable="Task_NameColumn" msprop:Generator_UserColumnName="Task_Name" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TaskDescription" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnTaskDescription" msprop:Generator_ColumnPropNameInRow="TaskDescription" msprop:Generator_ColumnPropNameInTable="TaskDescriptionColumn" msprop:Generator_UserColumnName="TaskDescription">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="EPDRad" msprop:Generator_ColumnVarNameInTable="columnEPDRad" msprop:Generator_ColumnPropNameInRow="EPDRad" msprop:Generator_ColumnPropNameInTable="EPDRadColumn" msprop:Generator_UserColumnName="EPDRad">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CommentOnEvent" msprop:Generator_TableClassName="CommentOnEventDataTable" msprop:Generator_TableVarName="tableCommentOnEvent" msprop:Generator_RowChangedName="CommentOnEventRowChanged" msprop:Generator_TablePropName="CommentOnEvent" msprop:Generator_RowDeletingName="CommentOnEventRowDeleting" msprop:Generator_RowChangingName="CommentOnEventRowChanging" msprop:Generator_RowEvHandlerName="CommentOnEventRowChangeEventHandler" msprop:Generator_RowDeletedName="CommentOnEventRowDeleted" msprop:Generator_RowClassName="CommentOnEventRow" msprop:Generator_UserTableName="CommentOnEvent" msprop:Generator_RowEvArgName="CommentOnEventRowChangeEvent">
<xs:complexType>
<xs:sequence>
<xs:element name="ID_CommnentOnEvent" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnID_CommnentOnEvent" msprop:Generator_ColumnPropNameInRow="ID_CommnentOnEvent" msprop:Generator_ColumnPropNameInTable="ID_CommnentOnEventColumn" msprop:Generator_UserColumnName="ID_CommnentOnEvent" type="xs:int" />
<xs:element name="TriggerTable" msprop:Generator_ColumnVarNameInTable="columnTriggerTable" msprop:Generator_ColumnPropNameInRow="TriggerTable" msprop:Generator_ColumnPropNameInTable="TriggerTableColumn" msprop:Generator_UserColumnName="TriggerTable" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TriggerField" msprop:Generator_ColumnVarNameInTable="columnTriggerField" msprop:Generator_ColumnPropNameInRow="TriggerField" msprop:Generator_ColumnPropNameInTable="TriggerFieldColumn" msprop:Generator_UserColumnName="TriggerField" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TriggerStatus" msprop:Generator_ColumnVarNameInTable="columnTriggerStatus" msprop:Generator_ColumnPropNameInRow="TriggerStatus" msprop:Generator_ColumnPropNameInTable="TriggerStatusColumn" msprop:Generator_UserColumnName="TriggerStatus" type="xs:boolean" minOccurs="0" />
<xs:element name="Comment_FR" msprop:Generator_ColumnVarNameInTable="columnComment_FR" msprop:Generator_ColumnPropNameInRow="Comment_FR" msprop:Generator_ColumnPropNameInTable="Comment_FRColumn" msprop:Generator_UserColumnName="Comment_FR" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Comment_NL" msprop:Generator_ColumnVarNameInTable="columnComment_NL" msprop:Generator_ColumnPropNameInRow="Comment_NL" msprop:Generator_ColumnPropNameInTable="Comment_NLColumn" msprop:Generator_UserColumnName="Comment_NL" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Comment_EN" msprop:Generator_ColumnVarNameInTable="columnComment_EN" msprop:Generator_ColumnPropNameInRow="Comment_EN" msprop:Generator_ColumnPropNameInTable="Comment_ENColumn" msprop:Generator_UserColumnName="Comment_EN" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Installation" msprop:Generator_TableClassName="InstallationDataTable" msprop:Generator_TableVarName="tableInstallation" msprop:Generator_RowChangedName="InstallationRowChanged" msprop:Generator_TablePropName="Installation" msprop:Generator_RowDeletingName="InstallationRowDeleting" msprop:Generator_RowChangingName="InstallationRowChanging" msprop:Generator_RowEvHandlerName="InstallationRowChangeEventHandler" msprop:Generator_RowDeletedName="InstallationRowDeleted" msprop:Generator_RowClassName="InstallationRow" msprop:Generator_UserTableName="Installation" msprop:Generator_RowEvArgName="InstallationRowChangeEvent">
<xs:complexType>
<xs:sequence>
<xs:element name="Inst_CODE" msprop:Generator_ColumnVarNameInTable="columnInst_CODE" msprop:Generator_ColumnPropNameInRow="Inst_CODE" msprop:Generator_ColumnPropNameInTable="Inst_CODEColumn" msprop:Generator_UserColumnName="Inst_CODE" type="xs:int" />
<xs:element name="InstallationName" msprop:Generator_ColumnVarNameInTable="columnInstallationName" msprop:Generator_ColumnPropNameInRow="InstallationName" msprop:Generator_ColumnPropNameInTable="InstallationNameColumn" msprop:Generator_UserColumnName="InstallationName" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:unique name="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:GetTaskInfo" />
<xs:field xpath="mstns:ID_Task" />
</xs:unique>
<xs:unique name="GetTaskList_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:GetTaskList" />
<xs:field xpath="mstns:ID_Task" />
</xs:unique>
<xs:unique name="CommentOnEvent_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:CommentOnEvent" />
<xs:field xpath="mstns:ID_CommnentOnEvent" />
</xs:unique>
</xs:element>
</xs:schema>

View file

@ -1,15 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool to store the dataset designer's layout information.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="0" ViewPortY="45" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes>
<Shape ID="DesignTable:GetTaskInfo" ZOrder="4" X="285" Y="59" Height="305" Width="269" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:GetTaskList" ZOrder="3" X="58" Y="55" Height="191" Width="211" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="140" />
<Shape ID="DesignTable:CommentOnEvent" ZOrder="2" X="592" Y="61" Height="210" Width="285" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:Installation" ZOrder="1" X="630" Y="342" Height="135" Width="247" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="76" />
</Shapes>
<Connectors />
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool to store the dataset designer's layout information.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="0" ViewPortY="45" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes>
<Shape ID="DesignTable:GetTaskInfo" ZOrder="4" X="285" Y="59" Height="305" Width="269" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:GetTaskList" ZOrder="3" X="58" Y="55" Height="191" Width="211" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="140" />
<Shape ID="DesignTable:CommentOnEvent" ZOrder="2" X="592" Y="61" Height="210" Width="285" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:Installation" ZOrder="1" X="630" Y="342" Height="135" Width="247" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="76" />
</Shapes>
<Connectors />
</DiagramLayout>

View file

@ -300,8 +300,10 @@ namespace eDosStation
#endif
float gain = 100.0F;
float ChirpRate = 0F;
if (!CurTaskRow.IsFNGain_ANGainValueNull()) gain = (int)CurTaskRow.FNGain_ANGainValue;
int rv = ep.IssueAndCheck(gain);
if (!CurTaskRow.IsChirpRateNull()) ChirpRate = (int)CurTaskRow.ChirpRate;
int rv = ep.IssueAndCheck(gain, ChirpRate);
if (rv != 0)
{
MessageBox.Show($"SetIssued error {rv}");

View file

@ -48,6 +48,7 @@
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
@ -60,12 +61,15 @@
<TextBlock Grid.Row="1" Grid.Column="1" Name="Wearer" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="50,5,20,5" Text="12345" Foreground="{DynamicResource sckbP}" />
<TextBlock Grid.Row="1" Grid.Column="2" Text="Visit:" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5,5,20,5" Foreground="{DynamicResource sckbP}" FontWeight="Bold" />
<TextBlock Grid.Row="1" Grid.Column="3" Name= "EpdVisit" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5,5,20,5" Text="12345545" Foreground="{DynamicResource sckbP}" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="Dose:" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5,5,20,5" Foreground="{DynamicResource sckbP}" FontWeight="Bold" />
<StackPanel Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" Orientation="Vertical" VerticalAlignment="Center" Name="DosePanel" >
<TextBlock Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="4" Name="Name" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="50,5,20,5" Text="...." Foreground="{DynamicResource sckbP}" />
<TextBlock Grid.Row="3" Grid.Column="0" Text="Dose:" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5,5,20,5" Foreground="{DynamicResource sckbP}" FontWeight="Bold" />
<StackPanel Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="3" Orientation="Vertical" VerticalAlignment="Center" Name="DosePanel" >
<TextBlock Name="HpDose07" Text="1234" HorizontalAlignment="Left" Margin="50,0,0,0" Foreground="{DynamicResource sckbP}" />
<TextBlock Name="HpDose10" Text="1223" HorizontalAlignment="Left" Margin="50,0,0,0" Foreground="{DynamicResource sckbP}" />
</StackPanel>
<telerik:RadButton Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="4" Name="bCloseExit" Click="BCloseExit_Click" Content="OK" Width="190" Style="{StaticResource OkCancelButton}" Margin="0,50,0,50" VerticalAlignment="Center" />
<telerik:RadButton Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="4" Name="bCloseExit" Click="BCloseExit_Click" Content="OK" Width="190" Style="{StaticResource OkCancelButton}" Margin="0,50,0,50" VerticalAlignment="Center" />
</Grid>
</TabItem>
<TabItem Name="Alarm" VerticalAlignment="Center" >

View file

@ -133,7 +133,8 @@ namespace eDosStation
}
//Check id EPD is manual exit
int Exited = dataInterface.VisitInfo(EpdVisitID);
string WearerFullName = string.Empty;
int Exited = dataInterface.VisitInfo(EpdVisitID, out WearerFullName);
if (Exited>0)
{
endWithMessage($"This EPD was already returned or had a manual exit (ID:{EpdVisitID % 100})");
@ -166,6 +167,7 @@ namespace eDosStation
MessageBox.Show($"GetDoses {rv} er:{ep.GetDosesError}");
Wearer.Text = $"{ep.WearerName}";
Wearer.Name = WearerFullName;
EpdVisit.Text = $"{ep.WearerID}";
HpDose07.Text = $"{ep.Hp07Name}: {ep.Hp07:0.00} µSv ";
HpDose10.Text = $"{ep.Hp10Name}: {ep.Hp10:0.00} µSv";
@ -188,6 +190,7 @@ namespace eDosStation
}
l.Dispose();
}
Name.Text = "";
return;
}

View file

@ -1,2 +1,47 @@
check existing user
devcon restart "USB\VID_0EBB&PID_0340&MI_00"
check existing user
devcon restart "USB\VID_0EBB&PID_0340&MI_00"
QuickDisplay
0 33 Measurand1 Dose
1 34 Measurand1 Rate
2 49 0x31 Measurand2 Dose
3 50 0x32 Measurand2 Rate
4 81 0x51 Wearer Name
5 113 0x62 Margin Used
menu ( all enable mask = 17264 of 9298 of 63257)
0 65535
1 65511
2 65031 535
3 65031 535
4 65025
5 65283 535
6 65529 535
7 65427 531
8 65535 535
numDisplays: 6
{ 0,0x0021 }
{ 1,0x0022 }
{ 2,0x0031 }
{ 3,0x0032 }
{ 4,0x0051 }
{ 5,0x0062 }
numItems: 9
{ 0,0xCB03,0xFFFF }
{ 1,0xCB03,0xFFE7 }
{ 2,0xCB03,0xFFFF }
{ 3,0xCB03,0xFFFF }
{ 4,0xCB03,0xFE01 }
{ 5,0xCB03,0xFFFF }
{ 6,0xCB03,0xFFFF }
{ 7,0xCB03,0xFFFB }
{ 8,0xCB03,0xFFFF }