Page 2 of 3
Posted: Sat Jun 18, 2005 12:53 am
by Intrigued
gnozal, thanks for sharing this lib!
The sample file printed fine for me (on my HP Officejet 6110).
Now, I need to print a .bmp and I am wondering if, then how I could go about doing such?
I believe it to be via this function: LPRINT_PrintData(*MemoryBank, DataLength.l)
I did not see an example for that type of print job. Can you clue me in (show me an example) on how to use such?
Thanks again for the lib, it printed straight away, I like that functionality!
Posted: Sun Jun 19, 2005 2:51 am
by Intrigued
Intrigued wrote:gnozal, thanks for sharing this lib!
The sample file printed fine for me (on my HP Officejet 6110).
Now, I need to print a .bmp and I am wondering if, then how I could go about doing such?
I believe it to be via this function: LPRINT_PrintData(*MemoryBank, DataLength.l)
I did not see an example for that type of print job. Can you clue me in (show me an example) on how to use such?
Thanks again for the lib, it printed straight away, I like that functionality!
For now I have found a (not as elegant, that's for sure and not fully contained code in my .dll) work around for the short term. It looks like I have some more forum reading and head-banging to do to get this lib working the way I want with concerns to the
LPRINT_PrintData(*MemoryBank, DataLength.l) function.
Posted: Wed Jun 22, 2005 2:18 pm
by gnozal
Intrigued wrote:gnozal, thanks for sharing this lib!
The sample file printed fine for me (on my HP Officejet 6110).
Now, I need to print a .bmp and I am wondering if, then how I could go about doing such?
I believe it to be via this function: LPRINT_PrintData(*MemoryBank, DataLength.l)
Yes, you could do it that way, but you have to know the internal printer language, in your case HP's PCL language (all the escape codes at the end of your printer's manual).
Posted: Thu Jun 23, 2005 5:32 am
by Intrigued
Thanks for your help, again.
Posted: Sat Oct 28, 2006 7:44 am
by gnozal
Update PB4 version only
LPRINT_PrintData() function is back (got lost during the PB3.94 -> PB4.00 translation)
Posted: Sat Oct 28, 2006 5:53 pm
by Intrigued
Thanks for the headsup.
Error
Posted: Sat May 10, 2008 12:38 am
by STU-ASI
PureLprint_ v4.0 lib
Is causing error with version 4.10 and all 4.20 beta
getting the error message
POLINK: error Unresolved external symbol '_PB_Getgadgetitemtext'
POLINK: Fatal error. 1 unresolved external.
If i comment out the code using the Lprint functions then all compiles fine & prog running..
Any help in solving this would be much appreciated, looks like the ideal solution to my printing to a receipt printer.
Thanks
Re: Error
Posted: Sun May 11, 2008 12:22 pm
by gnozal
STU-ASI wrote:Is causing error with version 4.10 and all 4.20 beta
getting the error message
POLINK: error Unresolved external symbol '_PB_Getgadgetitemtext'
POLINK: Fatal error. 1 unresolved external.
There are several versions of this library (on my home page).
Did you use the right one ?
A quick test test here with PB4.10 and it works.
Posted: Sun May 11, 2008 4:24 pm
by STU-ASI
Just redownloaded again.
Yes using v1.00 for pb 4.
The error occurs when using string gadgets
Code: Select all
If OpenWindow(0, 216, -1, 1040, 650,"TEST", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_WindowCentered )
If CreateGadgetList(WindowID(0))
StringGadget(0,10,10,100,10,"")
StringGadget(1,10,20,100,10,"")
ButtonGadget(2,10,30,100,10,"CLICK")
CloseGadgetList()
EndIf
Repeat
Event = WaitWindowEvent()
GadgetID = EventGadget()
If GadgetID=2
printer.s=LPRINT_Requester()
If LPRINT_OpenPrinter(printer.s)
If LPRINT_StartDoc("Receipt Print")
LPRINT_PrintN("TEST LINE1")
LPRINT_PrintN(GetGadgetText(0))
LPRINT_PrintN(GetGadgetText(1))
LPRINT_EndDoc()
EndIf
LPRINT_ClosePrinter()
EndIf
EndIf
Until Event = #PB_Event_CloseWindow ;And windowid = #window_prefs; End of the event loop
endif
just used this code and same error
Posted: Sun May 11, 2008 4:49 pm
by STU-ASI
OK checked this a little further and if using defaultprinter
then everything works ok.
If using the LPRINT_Requester then we get the error.
So appologies for misdirection with the stringgadet etc.
But strange that generating the error stating
POLINK error _PB_getgadgetitemtext
Thanks for help sofar gonzal
Also tried fresh install of 4.10 and getting same error??
Posted: Mon May 12, 2008 3:58 pm
by gnozal
STU-ASI wrote:OK checked this a little further and if using defaultprinter
then everything works ok.
If using the LPRINT_Requester then we get the error.
Confirmed when using LPRINT_Requester(). I never use this function myself.
I just build a special PB4.10 version :
http://freenet-homepage.de/gnozal/PureLPRINT__.zip (should work, not tested)
Posted: Tue May 13, 2008 12:00 am
by STU-ASI
Thanks gnozal.
just done quick test and no error.
will try tomorrow on program.
Thanks again.
Posted: Fri May 16, 2008 5:17 pm
by STU-ASI
ok just to update this,
the requester now works as intended but i am now getting invalid memory address....
code to test below.
The error is generated at end of procedure.
also tested same code with subroutine and same error.
code without textgadgets works fine.
Code: Select all
; PureBasic Visual Designer v3.95 build 1485 (PB4Code)
; PureBasic Visual Designer v3.95 build 1485 (PB4Code)
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#String_0
#String_1
#String_2
#Button_0
#String_3
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 586, 176, 600, 300, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(#Window_0))
StringGadget(#String_0, 40, 20, 250, 30, "")
StringGadget(#String_1, 40, 60, 250, 30, "")
StringGadget(#String_2, 40, 100, 250, 30, "")
ButtonGadget(#Button_0, 330, 30, 140, 80, "PRINT")
StringGadget(#String_3, 40, 160, 70, 40, "")
EndIf
EndIf
EndProcedure
Procedure printit()
def$="Yes"
type$="MEMBER"
fontA.s=""
fontB.s=""
Size1.s=""
ESC.s=Chr(27)
If def$="Yes"
printer.s=LPRINT_Requester()
Else
printer.s=LPRINT_GetDefaultPrinter()
EndIf
If LPRINT_OpenPrinter(printer.s)
If LPRINT_StartDoc("Receipt Print")
LPRINT_PrintN(Chr(28)+Chr(112)+Chr(1)+Chr(48))
LPRINT_PrintN("North Shields")
LPRINT_Print(Chr(29)+Chr(33)+Chr(32))
LPRINT_Print(Esc+Chr(33)+Chr(0))
z1$=GetGadgetText(#String_0)
t1$=Mid(z1$,FindString(z1$,":",1)+1,Len(z1$))+" : "+Str(Hour(Date()))+":"+Str(Minute(Date()))
z2$=GetGadgetText(#String_1)
z3$=GetGadgetText(#String_2)
z4$=GetGadgetText(#String_3)
LPRINT_PrintN(t1$)
LPRINT_PrintN(z2$)
If z3$="MEMBER"
t$= "00010"+" "+"Mr "+" "+"S"+" "+"Smith"+" Points : "+"0900"
Else
t$= "09999"+" "+z3$
EndIf
LPRINT_PrintN(t$)
LPRINT_PrintN("")
LPRINT_PrintN("")
LPRINT_PrintN("")
LPRINT_Print(ESC+Chr(j)+Chr(10))
LPRINT_EndDoc()
EndIf
LPRINT_ClosePrinter()
EndIf
EndProcedure
Open_Window_0()
Repeat ; Start of the event loop
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_Event_Gadget
If GadgetID = #String_0
ElseIf GadgetID = #String_1
ElseIf GadgetID = #String_2
ElseIf GadgetID = #Button_0
printit()
ElseIf GadgetID = #String_3
EndIf
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
;
Posted: Sun May 18, 2008 3:04 pm
by gnozal
STU-ASI wrote:ok just to update this,
the requester now works as intended but i am now getting invalid memory address....
code to test below.
The error is generated at end of procedure.
also tested same code with subroutine and same error.
code without textgadgets works fine.
Sorry, this code doesn't crash here (tested local and network printer on Win 98SE, NT4, XPsp2).
I use this library every day, but never with LPRINT_Requester() though.
1. What OS / PB version do you use ?
2. Does it also crash without LPRINT_Requester() (using LPRINT_GetDefaultPrinter()) ?
If it doesn't crash without, simply build a requester yourself using LPRINT_GetInstalledPrinters() to retreive all installed printers.
3. What line does it crash ?
Problem with the Lib PureLPRINT
Posted: Sun Nov 23, 2008 4:09 pm
by hjf
Hello Gnozal,
thank you for your lib 'PureLPRINT'.
With your example code it work on my system fine. Now I modify the code and set the example in a procedure. The program crash in the last line of the procedure 'EndProcedure'.
The debugger message "invalid memory acces" (read error at address 0).
Code: Select all
Procedure PT()
MyPrinter.s = LPRINT_GetDefaultPrinter()
If LPRINT_OpenPrinter(MyPrinter)
Debug "Open " + MyPrinter
PrintN("Open " + MyPrinter)
If LPRINT_StartDoc("MyJob")
LPRINT_Print(Chr(27) + "E") ; PCL reset for HP Printers
LPRINT_Print("Line 1")
LPRINT_PrintN("Same Line")
LPRINT_PrintN("Line 2")
LPRINT_PrintN("")
LPRINT_PrintN("Line 4")
LPRINT_NewPage() ; Form feed
LPRINT_Print("Line 1 (Page 2)")
LPRINT_EndDoc()
Else
Debug "Could not start job"
PrintN("Could not start job")
EndIf
LPRINT_ClosePrinter()
Debug("Done!")
PrintN("Done!")
Else
Debug "Printer " + MyPrinter + " not found"
PrintN("Printer " + MyPrinter + " not found")
EndIf
EndProcedure
; MAIN
OpenConsole()
PT()
CloseConsole()
Testsystem is WinXP SP3, PB4.2
I hope your can help find the reason of the mistake.
Cia
hjf