?? scanner.bas
字號(hào):
'This sample retrieves the identity of an Epson Perfection 1670 scanner
defint a-z
cls
devadd%=1
in_endpoint%=1
out_endpoint%=2
'define structure of URB
type urbtype
transaction_token as byte 'control (2Dh), in (69h), out (E1h) as hex code
chain_end_flag as byte
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
dim buffer as string*1025
buffer=repeat$(1025,chr$(0)) 'return data here
'Command read from a trace
mid$(buffer,1,64)=chr$(&H12)+chr$(00)+chr$(00)+chr$(00)+chr$(&H33)+chr$(00)
'set up out request
urb.transaction_token=&HE1
urb.chain_end_flag=0
urb.dev_add=devadd%
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=64
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
'invalid device address?
if urb.error_code=1 then
cls : locate 14,23
print "Invalid device address"
end
end if
'transaction error?
if urb.status >1 then
cls : locate 14,23
print "Device does not respond"
end
end if
print
for i=1 to 3
buffer=repeat$(1025,chr$(0)) 'return data here
'set up in request
urb.transaction_token=&H69
urb.chain_end_flag=0
urb.dev_add=devadd%
urb.end_point=in_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=64 '32 '16
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
print "Buffer:" left$(buffer,64)
next i
end
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -