#include "stdafx.h" #include "DIOS.Dev.CollimatorMoudle.hpp" #include "DIOSDICOMInfo.h" using namespace DIOS::Dev; using namespace DIOS::Dev::Detail::Collimator; namespace nsColli = DIOS::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, int 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::FireNotify(string key, string value) { std::string str = value; 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()); int 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()); int nParam = json[0]; return SetCollimatorSID(nParam); } RET_STATUS CollimatorDevice::JSSetCollimatorFilter(std::string in, std::string& out) { ResDataObject json; json.decode(in.c_str()); int nParam = json[0]; return SetCollimatorFilter(nParam); } RET_STATUS CollimatorDevice::JSSetCollimatorAngle(std::string in, std::string& out) { ResDataObject json; json.decode(in.c_str()); int nParam = json[0]; return SetCollimatorAngle(nParam); } RET_STATUS CollimatorDevice::JSSetCollimatorMode(std::string in, std::string& out) { ResDataObject json; json.decode(in.c_str()); int nParam = json[0]; return SetCollimatorMode(nParam); } RET_STATUS CollimatorDevice::JSSetCollimatorLight(std::string in, std::string& out) { ResDataObject json; json.decode(in.c_str()); int nParam = json[0]; return SetCollimatorLight(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(int xsize, int ysize) { return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetCollimatorSID(int sid) { return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetCollimatorFilter(int pParams) { return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetCollimatorAngle(int pParams) { return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetCollimatorMode(int Param) { return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetCollimatorLight(int Param) { return RET_STATUS::RET_SUCCEED; } int CollimatorDevice::GetCollimatorXSize() { return m_nXSize; } int CollimatorDevice::GetCollimatorYSize() { return m_nYSize; } int CollimatorDevice::GetCollimatorSID() { return m_nSID; } int CollimatorDevice::GetCollimatorFilter() { return m_nFilter; } int CollimatorDevice::GetCollimatorAngle() { return m_nAngle; } int CollimatorDevice::GetCollimatorMode() { return m_nMode; } RET_STATUS CollimatorDevice::UpdateCollimatorXSize(int Param) { if (m_nXSize != Param) { m_nXSize = Param; FireNotify("XSize", Param); } return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::UpdateCollimatorYSize(int Param) { if (m_nYSize != Param) { m_nYSize = Param; FireNotify("YSize", Param); } return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::UpdateCollimatorSID(int Param) { if (m_nSID != Param) { m_nSID = Param; FireNotify("SID", Param); } return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::UpdateCollimatorAngle(int Param) { if (m_nAngle != Param) { m_nAngle = Param; FireNotify("Angle", Param); } return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::UpdateCollimatorFilter(int Param) { if (m_nFilter != Param) { m_nFilter = Param; FireNotify("Filter", Param); } return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::UpdateCollimatorMode(int Param) { if (m_nMode != Param) { m_nMode = Param; FireNotify("Mode", Param); } return RET_STATUS::RET_SUCCEED; } void CollimatorDevice::ReportMessageToDicom() { FireNotify("XSize", m_nXSize); FireNotify("YSize", m_nYSize); FireNotify("SID", m_nSID); FireNotify("Angle", m_nAngle); FireNotify("Filter", m_nFilter); FireNotify("Mode", m_nMode); char strXY[48]{0}; sprintf(strXY,"%03dx%03d", m_nXSize, m_nYSize); FireNotify("XYSize", strXY); } 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; }