You could learn PCL and send your datastream that way.
Last time I tinkered with a printing application it goes something like this.
1. Application to OS print subsystem
2. OS subsystem creates a printing metafile
3. The driver of the printer takes the metafile an puts it into something the printer understands.
So you "could" learn a bit of PCL and fire that at the printer directly, PCL is relatively old but still understood by most printers.
A sample datastream looks like this.
Code:
%!PS
/minidict 45 dict def minidict begin
/inch {72 mul} def
/ld {load def} def
/gs /gsave ld /gr /grestore ld /gray {gs setgray fill gr} def
/li /lineto ld /rl /rlineto ld /ct /curveto ld/set {gs setlinewidth st gr} def
/mt /moveto ld /tr /translate ld /np /newpath ld /cp /closepath ld
/st /stroke ld /rp /repeat ld /ro /rotate ld /rt /rmoveto ld
/box {np mt rl rl rl cp set} def /circle {np arc set} def
/newline {tm lg sub /tm exch def lm tm mt} def
/centre {dup stringwidth pop 2 div linewidth 2 div exch sub lm add tm mt} def
/right {dup stringwidth pop rm exch sub tm mt} def /r {right n} def
/s /show ld /n {show newline} def /L {newline} def
/c {centre n} def /kern {0 rmoveto} def /k {kern} def
/F {findfont exch scalefont setfont} def
/w /widthshow load def /h {0 32} def
/textbox {/lm 0 def /bm 0 def /rm 7 inch def /tm 0 inch def /lg 12 def lm tm moveto} def
/page {gsave 50 72 translate textbox} def
/close {grestore showpage end} def
/end
gs 0.75 inch 10.50 inch tr textbox
10 /Helvetica F
(Hello World) n
grestore
The top segment of code does the upfront stuff leaving the last "paragraph" of code to do something useful i.e. say "Hello World" 10.5 inches UP the page and 0.75 inches from the left.
Hope this is useful
Mark
p.s. USB = I don't think so!