⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lq590.bas

📁 DOS下的USB驱动源码,包括UHCI
💻 BAS
字号:
'This sample prints "Printed by DosUHCI" on an Epson LQ-590 matrix printer.
'There are some ESC/P control codes before and after the text output.
'
defint a-z

'define structure of URB
type urbtype
  transaction_token as byte 'control (2Dh), in (69h), out (E1h) as hex code
  chain_end_flag  as byte  'does another urb follow this urb in memory?
                           'zero=no,one=yes
  dev_add         as byte
  end_point       as byte
  error_code      as byte
  status          as byte  'returned by dosuhci
  transaction_flags as word 'reserved
  buffer_off      as word  'for in/out
  buffer_seg      as word  'for in/out
  buffer_length   as word  'for in/out
  actual_length   as word  'for in/out
  setup_buffer_off as word 'for control
  setup_buffer_seg as word 'for control
  start_frame     as word  'reserved
  nr_of_packets   as word  'reserved - iso
  int_interval    as byte  'reserved
  error_count     as byte  'reserved
  timeout         as word  'reserved
  next_urb_off    as word  'reserved
  next_urb_seg    as word  'reserved
end type '32 byte long
dim urb as urbtype

dev_add%=1
in_endpoint%=2
out_endpoint%=1

dim buffer  as string*1024
buffer=repeat$(1024,chr$(0))

'Initialize printer
b$=chr$(27)+"@"+chr$(13)+chr$(10)
'Select printer
b$=b$+chr$(27)+chr$(17)+chr$(13)+chr$(10)
'Select NLQ mode
b$=b$+chr$(27)+"x1"+chr$(13)+chr$(10)
'Select US character set
b$=b$+chr$(27)+"R0"+chr$(13)+chr$(10)
'Select normal character set
b$=b$+chr$(27)+"%"+chr$(0)+chr$(13)+chr$(10)

b$=b$+"Printed by DosUHCI"+chr$(&H0C)

'Initialize printer
b$=b$+chr$(27)+"@"+chr$(13)+chr$(10)

mid$(buffer,16)=b$ 'send some Null chars to flush buffer
packetlen%=1024    'terminate with Null chars
gosub do_out

end

do_out:  'public subroutine

'set up out request
  urb.transaction_token=&HE1
  urb.chain_end_flag=0
  urb.dev_add=dev_add%
  urb.end_point=out_endpoint%
  urb.error_code=0
  urb.status=0
  urb.transaction_flags=0
  urb.buffer_off=varptr(buffer)
  urb.buffer_seg=varseg(buffer)
  urb.buffer_length=packetlen%
  urb.actual_length=64
  urb.setup_buffer_off=0
  urb.setup_buffer_seg=0
  urb.start_frame=0
  urb.nr_of_packets=0
  urb.int_interval=0
  urb.error_count=0
  urb.timeout=0
  urb.next_urb_off=0
  urb.next_urb_seg=0

'now call DosUHCI
reg 8,varseg(urb)
reg 4,varptr(urb)
call interrupt &H65

return

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -