2016-04-29 73 views
0

我需要創建一個C++程序,將數據發送到摩托羅拉PDA打印機Zebra QLn320(通過RS232)。摩托羅拉提供了一些接口(移動開發套件),但有些問題是錯誤的。當我創建標準CPCL命令並從VB.NET(通過RS232)將其發送到打印機時,它運行良好。但是C++(或Motorola API)有問題,沒有任何反應。我這樣做:C++ CPCL斑馬通過摩托羅拉PRINT_SendCommand()

std::string mystrRN("! 0 200 200 200 1\r\nTEXT 4 0 30 40 Hello World1\r\nFORM\r\nPRINT\r\n"); 
const char *bRN1 = mystrRN.c_str(); 
LPBYTE bRN = (LPBYTE)bRN1; 
HDC DeviceContext = Print_CreateDC(NULL,L"Zebra_Series",NULL,NULL); 
PRINT_StartDoc(DeviceContext,NULL); 
PRINT_StartPage(DeviceContext); 
PRINT_SendCommand(DeviceContext,bRN, mystrRN.length(),TRUE); 
PRINT_EndPage(DeviceContext); 
PRINT_EndDoc(DeviceContext); 

有什麼想法嗎?

PS:打印機正在發出數據即將到來的信號,但沒有任何反應。如果我詢問打印機的狀態(使用摩托羅拉方法PRINT_GetStatus()),它會回答:0x80000001 = STATUS_SUPPORTED和NOT_RESPONDING。

FYI:我的工作VB.NET代碼:

Dim msg As String = "! 0 200 200 210 1" & vbNewLine & "TEXT 4 0 100 40 Hello World1" & vbNewLine & "FORM" & vbNewLine & "PRINT" & vbNewLine 
Dim rs232 As New System.IO.Ports.SerialPort("COM1", 19200, IO.Ports.Parity.None, 8, IO.Ports.StopBits.One) 
rs232.Open() 
rs232.Write(msg) 
rs232.Close() 
rs232.Dispose() 

FYI2:這個C++代碼也完美的作品,但它不是用所需方法PRINT_SendCommand()

HDC DeviceContext = Print_CreateDC(NULL,L"Zebra_Series",NULL,NULL); 
RECT RectText = {20, 10, 360, 350}; 
Print_StartDoc(DeviceContext, NULL); 
Print_StartPage(DeviceContext);    
Print_DrawText(DeviceContext, L"Hello World", -1, &RectText, DT_CENTER); 
Print_EndPage(DeviceContext); 
Print_EndDoc(DeviceContext); 

回答

0

所以後很多小時的測試我發現如果你使用PRINT_sendCommand(),你不能使用方法PRINT_StartPage()和PRINT_EndPage()。只要刪除它們。爲什麼不能在手冊中提及。