|
UpdateData(TRUE);
m_pdu.ClearAbstractSyntaxs();
m_pdu.SetRemoteAddress((LPCTSTR)m_strRemoteAE);
m_pdu.SetLocalAddress((LPCTSTR)m_strLocalAE);
m_pdu.SetTimeOut(m_timeOut);
m_pdu.SetApplicationContext(UID_APPLICATION_CONTEXT);
m_pdu.AddAbstractSyntax(UID_IMPL_VR_LE_TRANSFER_SYNTAX);
m_pdu.AddAbstractSyntax(UID_EXPL_VR_BE_TRANSFER_SYNTAX);
m_pdu.AddAbstractSyntax(UID_EXPL_VR_LE_TRANSFER_SYNTAX);
m_pdu.AddAbstractSyntax(UID_BASIC_GRAYSCALE_PRINT_MANAGEMENT_SOP_CLASS);
m_pdu.AddAbstractSyntax(UID_BASIC_GRAYSCALE_IMAGE_BOX_STORAGE_SOP_CLASS);
m_pdu.AddAbstractSyntax(UID_BASIC_FILM_BOX_SOP_CLASS);
m_pdu.AddAbstractSyntax(UID_BASIC_FILM_SESSION_STORAGE_SOP_CLASS);
m_pdu.AddAbstractSyntax(UID_PRINTER_SOP_CLASS);
m_pdu.AddAbstractSyntax(UID_PRINT_JOB_SOP_CLASS);
if (!m_pdu.Connect((LPCTSTR)m_strIP, (LPCTSTR)m_strPort))
{
AfxMessageBox("Can not connect printer...");
TRACE1("Printer AE: %s\n", m_strRemoteAE);
TRACE1("Printer IP: %s\n", m_strIP);
TRACE1("Printer Port: %s\n", m_strPort);
return;
}
DataSet rsp;
DataSet data;
UINT16 status;
CString strValue;
//N-GET (PRINTER SOP Instance)
const string instUID = "1.2.840.10008.5.1.1.17";
TagVector tag; // no use
NGetRQ getPrinter(uniq16odd(), UID_PRINTER_SOP_CLASS, instUID, tag);//instUID, tag);
if (!m_pdu.WriteCommand(getPrinter, UID_BASIC_GRAYSCALE_PRINT_MANAGEMENT_SOP_CLASS))
{
AfxMessageBox("Can not get printer information...");
m_pdu.Close();
return;
}
NGetRSP getrsp(uniq16odd(), UID_PRINTER_SOP_CLASS, status, NO_DATA_SET);
if (!m_pdu.WriteCommand(getrsp, UID_BASIC_GRAYSCALE_PRINT_MANAGEMENT_SOP_CLASS))
{
m_pdu.Close();
return;
}
if (!m_pdu.Read(rsp))
{
m_pdu.Close();
return;
}
DumpDataset("c:\\get_printer_info.txt", rsp);
//END of N-GET
//N-CREATE(Film Session SOP Instance)
NCreateRQ createFilmRQ(uniq16odd(), UID_BASIC_FILM_SESSION_STORAGE_SOP_CLASS, instUID, YES_DATA_SET);
data.insertElem(TAG_REF_SOP_CLASS_UID, VR_UI, UID_BASIC_FILM_SESSION_STORAGE_SOP_CLASS);
strValue = "1";
data.insertElem(TAG_NUMBER_OF_COPIES, VR_IS, (LPCTSTR)strValue);
strValue = "MED";
data.insertElem(TAG_PRINT_PRIORITY, VR_CS, (LPCTSTR)strValue);
strValue = _T("BLUE FILM");
data.insertElem(TAG_MEDIUM_TYPE, VR_CS, (LPCTSTR)strValue);
strValue = _T("PROCESSOR");
data.insertElem(TAG_FILM_DESTINATION, VR_CS, (LPCTSTR)strValue);
if (m_pdu.WriteCommand(createFilmRQ, UID_BASIC_GRAYSCALE_PRINT_MANAGEMENT_SOP_CLASS) &&
m_pdu.WriteDataSet(data, UID_BASIC_GRAYSCALE_PRINT_MANAGEMENT_SOP_CLASS))
{
}
else
{
AfxMessageBox("Can not create film session...");
m_pdu.Close();
return;
}
if (!m_pdu.Read(rsp))
{
AfxMessageBox("Can not get film session feedback information");
m_pdu.Close();
return;
}
DumpDataset("c:\\create_film_session.txt", rsp);
//END of N-CREATE
//CREATE ONE FILM
//N-CREATE(Film Box SOP Instance)
NCreateRQ createFilmBoxRQ(uniq16odd(), UID_BASIC_FILM_BOX_SOP_CLASS, instUID, YES_DATA_SET);
// data.insertElem(TAG_AFF_SOP_CLASS_UID, VR_UI, UID_BASIC_FILM_BOX_SOP_CLASS);
data.insertElem(TAG_REF_SOP_CLASS_UID, VR_UI, UID_BASIC_FILM_BOX_SOP_CLASS);
strValue = _T("STANDARD\\1,1");
data.insertElem(TAG_IMAGE_DISPLAY_FORMAT, VR_ST, (LPCTSTR)strValue);
strValue = _T("PORTRAIT");
data.insertElem(TAG_FILM_ORIENTATION, VR_CS, (LPCTSTR)strValue);
strValue = _T("8INX10IN");
data.insertElem(TAG_FILM_SIZE_ID, VR_CS, (LPCTSTR)strValue);
strValue = _T("REPLICATE");
data.insertElem(TAG_MAGNIFICATION_TYPE, VR_CS, (LPCTSTR)strValue);
strValue = _T("WHITE");
data.insertElem(TAG_BORDER_DENSITY, VR_CS, (LPCTSTR)strValue);
strValue = _T("BLACK");
data.insertElem(TAG_EMPTY_IMAGE_DENSITY, VR_CS, (LPCTSTR)strValue);
data.insertElem(TAG_MIN_DENSITY, UINT16(10));
strValue = _T("320");
data.insertElem(TAG_MAX_DENSITY, UINT16(320));
strValue = _T("NO");
data.insertElem(TAG_TRIM, VR_CS, (LPCTSTR)strValue);
// strValue = _T("");
// data.insertElem(MC_ATT_REQUESTED_RESOLUTION_ID, (LPCTSTR)strValue);
if (m_pdu.WriteCommand(createFilmBoxRQ, UID_BASIC_GRAYSCALE_PRINT_MANAGEMENT_SOP_CLASS) &&
m_pdu.WriteDataSet(data, UID_BASIC_GRAYSCALE_PRINT_MANAGEMENT_SOP_CLASS))
{
}
else
{
AfxMessageBox("Can not create film box...");
m_pdu.Close();
return;
}
if (!m_pdu.Read(rsp))
{
AfxMessageBox("Can not get create film box feedback information");
m_pdu.Close();
return;
}
DumpDataset("c:\\create_film_box.txt", rsp);
//N-SET (ONLY ONE IMAGE)
NSetRQ setImage(uniq16odd(), UID_BASIC_GRAYSCALE_IMAGE_BOX_STORAGE_SOP_CLASS, instUID);
data.insertElem(TAG_IMAGE_POS, INT16(1));
strValue = "NORMAL";
data.insertElem(TAG_POLARITY, VR_CS, (LPCTSTR)strValue);
data.insertElem(TAG_SAMPLES_PER_PX, UINT16(1));
strValue = "MONOCHROME2";
data.insertElem(TAG_PHOTOMETRIC, VR_CS, (LPCTSTR)strValue);
data.insertElem(TAG_ROWS, UINT16(3072));
data.insertElem(TAG_COLUMNS, UINT16(2560));
data.insertElem(TAG_BITS_ALLOC, UINT16(8));
data.insertElem(TAG_BITS_STORED, UINT16(16));
data.insertElem(TAG_HIGH_BIT, UINT16(14));
unsigned short* pData = new unsigned short[2560 * 3072];
memset(pData, 1, 2560 * 3072 * 2);
data.insertElem(TAG_PIXEL_DATA, VR_OB, 2560 * 3072 * 2, pData);
// data.insertElem(, );
if (m_pdu.WriteCommand(setImage, UID_BASIC_GRAYSCALE_PRINT_MANAGEMENT_SOP_CLASS) &&
m_pdu.WriteDataSet(data, UID_BASIC_GRAYSCALE_PRINT_MANAGEMENT_SOP_CLASS))
{
}
else
{
AfxMessageBox("Can not set image box...");
m_pdu.Close();
return;
}
if (!m_pdu.Read(rsp))
{
AfxMessageBox("Can not get image box information");
return;
}
DumpDataset("c:\\set_image_box.txt", rsp);
//N-ACTION(PRINT, Film Box SOP Instance)
NActionRQ actionFilmBox(uniq16odd(), UID_BASIC_FILM_BOX_SOP_CLASS, instUID, 1, NO_DATA_SET);
// data.insertElem(TAG_REF_SOP_CLASS_UID, VR_UI, UID_BASIC_FILM_BOX_SOP_CLASS);
// data.insertElem(TAG_REF_SOP_INST_UID, VR_UI, instUID);
if (m_pdu.WriteCommand(actionFilmBox, UID_BASIC_GRAYSCALE_PRINT_MANAGEMENT_SOP_CLASS))// &&
// m_pdu.WriteDataSet(data, UID_BASIC_GRAYSCALE_PRINT_MANAGEMENT_SOP_CLASS))
{
}
else
{
AfxMessageBox("Can not action film box");
m_pdu.Close();
return;
}
if (!m_pdu.Read(rsp))
{
AfxMessageBox("Can not get action film information");
return;
}
DumpDataset("c:\\action_film_box.txt", rsp);
NDeleteRQ delFilmBox(uniq16odd(), UID_BASIC_FILM_BOX_SOP_CLASS, instUID);
if (m_pdu.WriteCommand(delFilmBox, UID_BASIC_GRAYSCALE_PRINT_MANAGEMENT_SOP_CLASS))
{
}
else
{
AfxMessageBox("can not delte film box");
m_pdu.Close();
return;
}
if (m_pdu.Read(rsp))
{
AfxMessageBox("can not read delete file box information");
m_pdu.Close();
return;
}
DumpDataset("c:\\delete_film_box.txt", rsp);
NActionRQ actionFilmSession(uniq16odd(), UID_BASIC_FILM_SESSION_STORAGE_SOP_CLASS, instUID, 1, NO_DATA_SET);
if (m_pdu.WriteCommand(actionFilmSession, UID_BASIC_GRAYSCALE_PRINT_MANAGEMENT_SOP_CLASS))
{
}
else
{
AfxMessageBox("Can not action film session information");
m_pdu.Close();
return;
}
if (m_pdu.Read(rsp))
{
AfxMessageBox("can not read action film session information");
m_pdu.Close();
return;
}
DumpDataset("c:\\action_film_session.txt", rsp);
NDeleteRQ delFilmSession(uniq16odd(), UID_BASIC_FILM_SESSION_STORAGE_SOP_CLASS, instUID);
if (m_pdu.WriteCommand(delFilmSession, UID_BASIC_GRAYSCALE_PRINT_MANAGEMENT_SOP_CLASS))
{
}
else
{
AfxMessageBox("can not delete file action information");
m_pdu.Close();
return;
}
if (m_pdu.Read(rsp))
{
AfxMessageBox("can not read delete file session information");
m_pdu.Close();
return;
}
DumpDataset("c:\\delete_film_session.txt", rsp);
m_pdu.Close(); |
|