#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, unsigned short value) { char szInfo[64] = { 0 }; snprintf(szInfo, sizeof(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() { CCOS::Dev::Detail::Dispatch DispatchObj; // 定义变量 auto Disp = &DispatchObj; // 取变量地址 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()); unsigned short 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()); unsigned short nParam = json[0]; return SetCollimatorSID(nParam); } RET_STATUS CollimatorDevice::JSSetCollimatorFilter(std::string in, std::string& out) { ResDataObject json; json.decode(in.c_str()); unsigned short nParam = json[0]; return SetCollimatorFilter(nParam); } RET_STATUS CollimatorDevice::JSSetCollimatorAngle(std::string in, std::string& out) { ResDataObject json; json.decode(in.c_str()); unsigned short nParam = json[0]; return SetCollimatorAngle(nParam); } RET_STATUS CollimatorDevice::JSSetCollimatorMode(std::string in, std::string& out) { ResDataObject json; json.decode(in.c_str()); unsigned short nParam = json[0]; return SetCollimatorMode(nParam); } RET_STATUS CollimatorDevice::JSSetCollimatorLight(std::string in, std::string& out) { ResDataObject json; json.decode(in.c_str()); unsigned short nParam = json[0]; return SetCollimatorLight(nParam); } RET_STATUS CollimatorDevice::JSGetCollimatorXSize(std::string& out) { char szInfo[64] = { 0 }; snprintf(szInfo, sizeof(szInfo), "%d", m_nXSize); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::JSGetCollimatorYSize(std::string& out) { char szInfo[64] = { 0 }; snprintf(szInfo, sizeof(szInfo), "%d", m_nYSize); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::JSGetCollimatorSID(std::string& out) { char szInfo[64] = { 0 }; snprintf(szInfo, sizeof(szInfo), "%d", m_nSID); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::JSGetCollimatorFilter(std::string& out) { char szInfo[64] = { 0 }; snprintf(szInfo, sizeof(szInfo), "%d", m_nFilter); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::JSGetCollimatorAngle(std::string& out) { char szInfo[64] = { 0 }; snprintf(szInfo, sizeof(szInfo), "%d", m_nAngle); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::JSGetCollimatorMode(std::string& out) { char szInfo[64] = { 0 }; snprintf(szInfo, sizeof(szInfo), "%d", m_nMode); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetCollimatorSize(unsigned short xsize, unsigned short ysize) { return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetCollimatorSID(unsigned short sid) { return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetCollimatorFilter(unsigned short pParams) { return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetCollimatorAngle(unsigned short pParams) { return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetCollimatorMode(unsigned short Param) { return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::SetCollimatorLight(unsigned short Param) { return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::UpdateCollimatorXSize(unsigned short Param) { m_nXSize = Param; FireNotify("XSize", Param); return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::UpdateCollimatorYSize(unsigned short Param) { m_nYSize = Param; FireNotify("YSize", Param); return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::UpdateCollimatorSID(unsigned short Param) { m_nSID = Param; FireNotify("SID", Param); return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::UpdateCollimatorAngle(unsigned short Param) { m_nAngle = Param; FireNotify("Angle", Param); return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::UpdateCollimatorFilter(unsigned short Param) { m_nFilter = Param; FireNotify("Filter", Param); return RET_STATUS::RET_SUCCEED; } RET_STATUS CollimatorDevice::UpdateCollimatorMode(unsigned short 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); if (m_nFilter == 1) { FireNotify("StrFilter", "Mo"); } else { FireNotify("StrFilter", "Rh"); } FireNotify("Mode", m_nMode); char strXY[48]{ 0 }; sprintf(strXY, "%03d,%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; unsigned long Width = 0; unsigned long Height = 0; unsigned long dwFilter = 0; if (strcollimatorwidth.find("IN") != string::npos) { Width = (unsigned long)(atof(strcollimatorwidth.substr(0, strcollimatorwidth.size() - 2).c_str()) * 2.54); } else { Width = (unsigned long)(atoi(strcollimatorwidth.substr(0, strcollimatorwidth.size() - 2).c_str())); } if (strcollimatorheight.find("IN") != string::npos) { Height = (unsigned long)(atof(strcollimatorheight.substr(0, strcollimatorheight.size() - 2).c_str()) * 2.54); } else { Height = (unsigned long)(atoi(strcollimatorheight.substr(0, strcollimatorheight.size() - 2).c_str())); } if (Width != 0 && Height != 0) { SetCollimatorSize(Width, Height); } dwFilter = (unsigned long)atoi(strcollimatorfilter.c_str()); if (dwFilter >= 0) { SetCollimatorFilter(dwFilter); } return RET_STATUS::RET_SUCCEED; }