2016-04-29 14 views
0

Ich muss ein C++ - Programm erstellen, das Daten zum Drucker Zebra QLn320 von Motorola PDA (über RS232) sendet. Motorola bietet eine Schnittstelle (Mobility Development Kit), aber etwas stimmt nicht. Wenn ich Standard-CPCL-Befehl erstelle und ihn von VB.NET (über RS232) an den Drucker sende, funktioniert es gut. Aber C++ (oder Motorola API) hat Probleme und nichts passiert. Ich mache es wie folgt aus:C++ CPCL Zebra über Motorola 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); 

Irgendwelche Ideen, bitte?

PS: Drucker signalisiert, dass Daten kommen, aber nichts passiert. Wenn ich den Drucker nach seinem Status frage (mit der Motorola-Methode PRINT_GetStatus()), antwortet er: 0x80000001 = STATUS_SUPPORTED und NOT_RESPONDING.

Zur Info: Mein Arbeits VB.NET-Code ist:

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: Dieses C++ Code auch funktioniert perfekt, aber es ist nicht die gewünschte Methode PRINT_SendCommand mit()

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); 

Antwort

0

So nach viele Stunden des Testens Ich fand heraus, dass wenn Sie PRINT_sendCommand() verwenden, Sie die Methoden PRINT_StartPage() und PRINT_EndPage() nicht verwenden können. Löschen Sie sie einfach. Warum kann dies nicht im Handbuch erwähnt werden?