Impact Printer OSX

Kelly Burgess kellyb at montana.com
Wed Jan 13 03:23:52 EST 2010


>Hmm, so what are you sending the remote Mac?  The whole invoice text 
>or just the invoice number so that the remote Mac can do the lookup 
>of data and then print using Omnis, etc?

I'm sending the entire set of bytes that the printer will get. I've 
got a method in the printer object subclass that builds the lines 
based on their section and line numbers, and that method knows how 
and when to insert escape sequences to adjust the position

   ;  assemble name/address field
   Calculate scratch as con(mid(cusName,1,20),'  ',cusAddress)
   ;  make section 1 line 1 -- name+address, invoice#, sold to
   Do tML490.$makeLineString(1,1,kTrue,scratch,iInvNumber,cusName) 
Returns lineText
   Calculate headerText as con(headerText,lineText)  ;; add line 1


Inside $makeLineString it might detect that it's just assembled line 
2 of the header section, so it needs to
   ;  drop 9/180ths inch to line up with prompt on form
   Do method prefixWithRollForward (lineText,9)


Then there's a $getConfigString method that puts a bunch of escape 
codes together to start the header:
   ;
   ;  build a config string for the Okidata ML490...
   ;
   Do method addProportionalOnOff (configString,kFalse)     ;; Monospaced
   Do method addUnidirectionalOnOff (configString,kFalse)     ;; Bidirectional
   Do method addSetRightMargin (configString,132)     ;; right margin 
132 (character spaces past home)
   Do method addSetLeftMargin (configString,0)     ;; left margin 0 
(character spaces past home)
   Do method add6LPIOnOff (configString,kTrue)     ;; 6 lines per inch
   Do method add12pitch (configString)     ;; 12 characters per inch
   If pIsStatementForm
     Do method addPageHeightInLines (configString,51)     ;; 8.5 inch 
statement forms -- 51 lines at 6 lines/inch
   Else
     Do method addPageHeightInInches (configString,7)     ;; 7 inch 
invoice forms
   End If
   Do method addLQtypeface (configString,2)     ;; Courier
   Do method addNLQOnOff (configString,kFalse)     ;; NLQ off
   Do method addHSDDraftFontOnOff (configString,kFalse)     ;; Utility 
draft font, not HSD
   Do method addCharacterStyle (configString,0)     ;; set Normal 
character style
   Do method addCompressedOnOff (configString,kFalse)     ;; No 
compressed character width
   Do method addUnderliningOnOff (configString,kFalse)     ;; No underlining
   Do method addItalicsOnOff (configString,kFalse)     ;; No italics
   ;
   Quit method configString     ;; return the string for sending to the printer

And those methods are mostly one-liners like

   ;  Okidata escape sequence for setting 12 cpi (Elite) pitch
   Calculate pConfigString as con(pConfigString,chr(27,77))


So I assemble the whole invoice, UUencode it to protect the escape 
sequences and make Applescript happy with the data, and off it goes. 
UUdecode it on the other end and dump it to the printer.

Kelly




More information about the omnisdev-en mailing list