Hello,
I am trying to create some bidirectional communication with a printer, and I am having a little problem.
I was originally working with a HP Color LaserJet 2820, which does not support bidirectional communication, so the error that I was getting (ERROR_NOT_SUPPORTED), makes sense.
I've since switched to a Konica Minolta Magicolor 5450, which does support BiDi, yet I still get the same error. I would like to know if anyone has successfully implemented this interface with a bi-directional printer, or can assist me in doing so.
My code so far is:
The line with the error has a comment below it.
Code:System::String^ BiDiTest::GetToner(System::String^ PrinterName, System::String^ valueRequired) { IBidiSpl * pIBidiSpl = NULL; IBidiRequest * pIReq = NULL; HRESULT hr = 0; //Convert System::String^ to LPCWSTR ---------------------- const wchar_t* chars = (const wchar_t*)(Marshal::StringToHGlobalUni(PrinterName)).ToPointer(); LPCWSTR name = chars; // ---------------------------------------------------- DWORD dwAccess = BIDI_ACCESS_USER; BSTR request = CString(mySchema).AllocSysString(); DWORD Erroc = GetLastError(); CoUninitialize(); hr = CoInitializeEx (NULL, COINIT_MULTITHREADED); hr = CoCreateInstance(CLSID_BidiSpl, NULL, CLSCTX_INPROC_SERVER, IID_IBidiSpl, (void**)&pIBidiSpl); hr = pIBidiSpl->BindDevice(name, dwAccess); hr = CoCreateInstance(CLSID_BidiRequest, NULL, CLSCTX_INPROC_SERVER, IID_IBidiRequest, (void**)&pIReq); hr = pIReq->SetSchema (L"\\Printer.Layout.InputBins.Tray2:Installed"); LPWSTR pszSchema = NULL; DWORD dwType = NULL; BYTE *pData = NULL; ULONG uSize = NULL; bool bDuplexInstalled; BSTR* response = NULL; hr = pIBidiSpl->SendRecv(BIDI_ACTION_GET, pIReq); // This is where I get the error.... hr = pIReq->GetOutputData (0, &pszSchema, &dwType, &pData, &uSize); CoTaskMemFree (pData); hr = pIBidiSpl->UnbindDevice (); pIReq->Release(); pIBidiSpl->Release(); CoUninitialize(); return PrinterName; }
Thanks in advance.



LinkBack URL
About LinkBacks


