2016-04-29 16 views
0

Motorola PDAからプリンタZebra QLn320にデータを送信するC++プログラムを作成する必要があります(RS232経由)。モトローラはいくつかのインターフェース(モビリティ開発キット)を提供していますが、何かが間違っています。私は標準のCPCLコマンドを作成し、VB.NET(RS232経由)からプリンタに送信するとうまくいきます。しかし、C++(またはMotorola API)には問題があり、何も起こりません。私はこれが好きです:モトローラ経由のC++ CPCL Zebra 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:プリンタはデータが送信されていることを通知していますが、何も起こりません。プリンターの状態(Motorolaの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()メソッドを使用できないことが分かりました。削除するだけです。なぜこれはマニュアルに記載することはできません。

関連する問題