#include "stdafx.h" #include "CCOS.Dev.CollimatorMoudle.hpp" #include "CCOSDICOMInfo.h" using namespace CCOS::Dev; using namespace CCOS::Dev::Detail::Collimator; namespace nsColli = CCOS::Dev::Detail::Collimator; nsColli::CollimatorDevice::CollimatorDevice(std::shared_ptr EventCenter) :super(EventCenter) { m_EventCenter = EventCenter; m_nXSize = 0; m_nYSize = 0; m_nFilter = 0; m_nSID = 0; m_nAngle = 0; m_nMode = -1; } nsColli::CollimatorDevice::~CollimatorDevice() { } void nsColli::CollimatorDevice::FireNotify(string key, WORD value) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%d", value); std::string str = szInfo; m_EventCenter->OnNotify(1, key, str);//(int)ATTRACTION_SET 2 } void nsColli::CollimatorDevice::Register() { auto Disp = &Dispatch; Disp->Action.Push("SetCollimatorSize", this, &nsColli::CollimatorDevice::JSSetCollimatorSize); Disp->Get.Push("Mode", this, &nsColli::CollimatorDevice::JSGetCollimatorMode); } bool nsColli::CollimatorDevice::Prepare() { Register(); return true; } std::string nsColli::CollimatorDevice::GetGUID() const { return CollimatorUnitType; } RET_STATUS CollimatorDevice::JSSetStudyInfo(std::string in, std::string& out) { ResDataObject json; json.decode(in.c_str()); return SetStudyInfo(json); } RET_STATUS CollimatorDevice::JSSetTechParamsInfo(std::string in, std::string& out) { ResDataObject json; json.decode(in.c_str()); return SetTechParamsInfo(json); } RET_STATUS CollimatorDevice::JSSetCollimatorSize(std::string in, std::string& out) { ResDataObject json; json.decode(in.c_str()); WORD xsize, ysize; xsize = json[0]; ysize = json[1]; return SetCollimatorSize(xsize, ysize); } RET_STATUS CollimatorDevice::JSSetCollimatorSID(std::string in, std::string& out) { ResDataObject json; json.decode(in.c_str()); WORD nParam = json[0]; return SetCollimatorSID(nParam); } RET_STATUS CollimatorDevice::JSSetCollimatorFilter(std::string in, std::string& out) { ResDataObject json; json.decode(in.c_str()); WORD nParam = json[0]; return SetCollimatorFilter(nParam); } RET_STATUS CollimatorDevice::JSSetCollimatorAngle(std::string in, std::string& out) { ResDataObject json; json.decode(in.c_str()); WORD nParam = json[0]; return SetCollimatorAngle(nParam); } RET_STATUS CollimatorDevice::JSSetCollimatorMode(std::string in, std::string& out) { ResDataObject json; json.decode(in.c_str()); WORD nParam = json[0]; return SetCollimatorMode(nParam); } RET_STATUS CollimatorDevice::JSGetCollimatorXSize(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%d", m_nXSize); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::JSGetCollimatorYSize(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%d", m_nYSize); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::JSGetCollimatorSID(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%d", m_nSID); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::JSGetCollimatorFilter(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%d", m_nFilter); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::JSGetCollimatorAngle(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%d", m_nAngle); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::JSGetCollimatorMode(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%d", m_nMode); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetCollimatorSize(WORD xsize, WORD ysize) { return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetCollimatorSID(WORD sid) { return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetCollimatorFilter(WORD pParams) { return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetCollimatorAngle(WORD pParams) { return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetCollimatorMode(WORD Param) { return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::UpdateCollimatorXSize(WORD Param) { m_nXSize = Param; FireNotify("XSize", Param); return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::UpdateCollimatorYSize(WORD Param) { m_nYSize = Param; FireNotify("YSize", Param); return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::UpdateCollimatorSID(WORD Param) { m_nSID = Param; FireNotify("SID", Param); return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::UpdateCollimatorAngle(WORD Param) { m_nAngle = Param; FireNotify("Angle", Param); return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::UpdateCollimatorFilter(WORD Param) { m_nFilter = Param; FireNotify("Filter", Param); return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::UpdateCollimatorMode(WORD Param) { m_nMode = Param; FireNotify("Mode", Param); return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetStudyInfo(ResDataObject & pParam) { return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetTechParamsInfo(ResDataObject & pParam) { TECHPARAM_INFO info; info.SetVal(pParam.encode()); string strcollimatorwidth = info.m_CollimatorWidth; string strcollimatorheight = info.m_CollimatorHeight; string strcollimatorfilter = info.m_CollimatorFilter; DWORD Width = 0; DWORD Height = 0; DWORD dwFilter = 0; if (strcollimatorwidth.find("IN") != string::npos) { Width = (DWORD)(atof(strcollimatorwidth.substr(0, strcollimatorwidth.size() - 2).c_str()) * 2.54); } else { Width = (DWORD)(atoi(strcollimatorwidth.substr(0, strcollimatorwidth.size() - 2).c_str())); } if (strcollimatorheight.find("IN") != string::npos) { Height = (DWORD)(atof(strcollimatorheight.substr(0, strcollimatorheight.size() - 2).c_str()) * 2.54); } else { Height = (DWORD)(atoi(strcollimatorheight.substr(0, strcollimatorheight.size() - 2).c_str())); } if (Width != 0 && Height != 0) { SetCollimatorSize(Width, Height); } dwFilter = (DWORD)atoi(strcollimatorfilter.c_str()); if (dwFilter >= 0) { SetCollimatorFilter(dwFilter); } return RET_STATUS::RET_SUCCEED; }