最近在DcmSCU发送一个findRequest后,DcmSCP总是报一个错误:
hi, all. when i send a findRequest in DcmSCU, it will be successful to receive response. but then the DcmServer will take place an error, as follows. Quote:
"2012-11-03 16:12:25.758 INFO: Sending C-Find Response" "2012-11-03 16:12:27.795 DEBUG: C-FIND Response successfully sent" "2012-11-03 16:12:29.678 DEBUG: DcmDataset::read() TransferSyntax="Little Endian Implicit"" "2012-11-03 16:12:29.678 WARN: DcmItem: Length of element (0008,0052) is odd" "2012-11-03 16:12:29.679 ERROR: DcmElement: QueryRetrieveLevel (0008,0052) larger (414531) than remaining bytes (20) in file, premature end of stream" "2012-11-03 16:12:29.679 DEBUG: DIMSE Error, detail (if available): 0006:020d DIMSE: receiveCommand: cmdSet->read() Failed2012-11-03 16:12:29.679 DEBUG: 0001:0004 Invalid stream" "2012-11-03 16:12:59.681 DEBUG: DcmSCP: Association Terminated" "2012-11-03 16:12:59.681 DEBUG: +++++++++++++++++++++++++++++
|
最后的解决方法是:
I have found the anwser
Something about the findscu toolwe should implement the callback function to set response->DimseStatus=STATUS_Success;
Code:
typedef void (*DIMSE_FindProviderCallback)(
/* in */
void *callbackData,
OFBool cancelled, T_DIMSE_C_FindRQ *request,
DcmDataset *requestIdentifiers, int responseCount,
/* out */
T_DIMSE_C_FindRSP *response,
DcmDataset **responseIdentifiers,
DcmDataset **statusDetail);
DCMTK_DCMNET_EXPORT OFCondition
DIMSE_findProvider(
/* in */
T_ASC_Association *assoc,
T_ASC_PresentationContextID presIdCmd,
T_DIMSE_C_FindRQ *request,
DIMSE_FindProviderCallback callback, void *callbackData,
/* blocking info for data set */
T_DIMSE_BlockingMode blockMode, int timeout);
my callBack function:
Code:
void FindProviderCallback(
/* in */
void *callbackData,
OFBool cancelled, T_DIMSE_C_FindRQ *request,
DcmDataset *requestIdentifiers, int responseCount,
/* out */
T_DIMSE_C_FindRSP *response,
DcmDataset **responseIdentifiers,
DcmDataset **statusDetail)
{
if (responseCount>1)
{
//*responseIdentifiers=NULL;
response->DimseStatus=STATUS_Success;
}
else
{
if(request->DataSetType==DIMSE_DATASET_PRESENT) //or some other conditions are met
*responseIdentifiers=new DcmDataset(*requestIdentifiers);
}
}
Thanks all.
分享到:
相关推荐
这个源码是移植dcmtk中的存储服务。它依赖于我移植的几个重要的库文件ofstd,dcmdata,dcmnet。这几个库文件是所有服务基本上都要依赖的库。
这是博文《第一个 DCMTK 程序:显示 DICOM 图像(DCMTK 3.6.4 + Qt 5.14.2 + VS2015)》的源码,详细内容见博客文章 https://blog.csdn.net/blackwoodcliff/article/details/109481195
nodejs-dcmtk 基于Nodsjs Alpine和DCMTK的Docker映像
dcmtk dcmtk的目标是包装'DICOM'工具包('DCMTK') 。 移植了医学数字成像和通信('DICOM')工具包的功能集,这是一组处理成像数据的功能。 安装 您可以使用以下方法从安装dcmtk的发行版本: install.packages( ...
名称:DCMTK 评级:★★★★★ 开源许可:BSD 功能: 影像处理,影像归档,影像管理,影像传输 标准:DICOM 语言:英语 客户端: 桌面 平台:跨平台 编程语言:C/C++ 官方网站:http://dicom.offis.de/
DCMTK3.6.3源码:dcmtk-3.6.3.zip 以及英文帮助文档 : dcmtk-3.6.3-html-help.zip
dcmtk使用手册,医学领域的东东,有学习的可以下载看看,没学过,不知道好不好学
DCMTK编译文件说明。DCMTK3.6.0
用dcmtk库做的DIcOM图像显示程序,原创呀
专栏博文“DICOM:基于DCMTK实现C-FIND SCU”中对应的源代码。基于dcmtk开源库中的findscu工程,实现的简单的C-FIND SCU,用于示范如何使用dcmtk操作实现具体的DICOM应用。
linux 系统下DCMTK3.6.0源码
Windows平台下,Qt(5.10)32位环境下编译的dcmtk(3.6.3)库,包含debug和release版
DICOM DCMTK显示DICOM图像 VC DCMTKDICOM DCMTK显示DICOM图像 VC DCMTKDICOM DCMTK显示DICOM图像 VC DCMTK
DCMTK的帮助文档:dcmtk-3.5.3-html-help.zip
最全DCMTK攻略.doc
dcmtk-3.5.4开发包在win32下的补充资源文件包含: dcmtk-3.5.4-win32-i386-md-support dcmtk-3.5.4-win32-i386-support dcmtk-3.5.4-win32-i386-tls 与dcmtk-3.5.4开发包一起使用
DCMTK工具下载,实现dicom传输文件等功能,包含各种脚本命令帮助
dcmtk dcmtk-3.5.4 source code and documentation
dcmtk程序包简介,欢迎下载,共同学习!
使用VS2013编译好的dcmtk-3.6.5的win64位(TDM的运行库),用于显示Dicom的医疗图片,也支持各个不同图片格式转换,直接可用。