Is it possible to read data directly from a usb input device
Moderators: Dorian (MJT support), JRL
Is it possible to read data directly from a usb input device
I'm trying to collect data from a usb barcode scanner that will run continuously though the data will be intermittent. I wrote a simple script that reads input then time stamps the data to file and then repeats itself. Easy enough.
The issue is if I lose focus from the script then the data goes to the bit bucket. Had thought about writing a script to constantly force focus to the input screen but thought that might not be best. Is there a way to receive this input directly from the usb port and write directly to the file bypassing standard input? To be reliable I can’t miss data.
label>start
Day>the_day
Month>the_month
Year>the_year
Let>NOW=%the_year%%the_month%%the_day%
Input>clock,Clock Number
TimeStamp>c:\clock.txt,%clock% %NOW%
goto>start
***sorry, when I initially posted I pasted the macro code twice....will look closer before I post.
The issue is if I lose focus from the script then the data goes to the bit bucket. Had thought about writing a script to constantly force focus to the input screen but thought that might not be best. Is there a way to receive this input directly from the usb port and write directly to the file bypassing standard input? To be reliable I can’t miss data.
label>start
Day>the_day
Month>the_month
Year>the_year
Let>NOW=%the_year%%the_month%%the_day%
Input>clock,Clock Number
TimeStamp>c:\clock.txt,%clock% %NOW%
goto>start
***sorry, when I initially posted I pasted the macro code twice....will look closer before I post.
Last edited by D_S on Wed May 31, 2006 5:22 pm, edited 2 times in total.
- Marcus Tettmar
- Site Admin
- Posts: 7395
- Joined: Thu Sep 19, 2002 3:00 pm
- Location: Dorset, UK
- Contact:
Probably not, but it's a bit hard to answer without knowing more about the device. Do you have information about the protocol it uses? Maybe it provides a virtual serial interface?
Marcus Tettmar
http://mjtnet.com/blog/ | http://twitter.com/marcustettmar
Did you know we are now offering affordable monthly subscriptions for Macro Scheduler Standard?
http://mjtnet.com/blog/ | http://twitter.com/marcustettmar
Did you know we are now offering affordable monthly subscriptions for Macro Scheduler Standard?
I'm using a symbol ls 9208 projection scanner. It is connected directly to a usb port and is detected as a human interface device (keyboard emulation). It will be scanning company id badges that contain a 5 digit code.
I can scan them now with the script I've written but if I lose focus I lose data. Want to find a way to either collect the data directly from the usb device bypassing the screen input or find a way to bullet proof screen focus.
thanks in advance
I can scan them now with the script I've written but if I lose focus I lose data. Want to find a way to either collect the data directly from the usb device bypassing the screen input or find a way to bullet proof screen focus.
thanks in advance
D_S,
Are the screen badge barcodes characters all numbers?
Does the barcode start and end with a character such as an asterisk (*)?
In other words when you scan a badge does the scanner actually type something like *00289* ?
Or do you only see 00289 ?
Are the badges always going to be 5 characters?
I think this can be done with OnEvent>. I have a script idea I just need to have a little more direction.
Let me know,
Dick
Are the screen badge barcodes characters all numbers?
Does the barcode start and end with a character such as an asterisk (*)?
In other words when you scan a badge does the scanner actually type something like *00289* ?
Or do you only see 00289 ?
Are the badges always going to be 5 characters?
I think this can be done with OnEvent>. I have a script idea I just need to have a little more direction.
Let me know,
Dick
The scan will always be 5 numbers and scan without an asterisk.
JRL wrote:D_S,
Are the screen badge barcodes characters all numbers?
Does the barcode start and end with a character such as an asterisk (*)?
In other words when you scan a badge does the scanner actually type something like *00289* ?
Or do you only see 00289 ?
Are the badges always going to be 5 characters?
I think this can be done with OnEvent>. I have a script idea I just need to have a little more direction.
Let me know,
Dick
Try something like this:
Code: Select all
OnEvent>KEY_DOWN,0,0,KeyPress0
OnEvent>KEY_DOWN,1,0,KeyPress1
OnEvent>KEY_DOWN,2,0,KeyPress2
OnEvent>KEY_DOWN,3,0,KeyPress3
OnEvent>KEY_DOWN,4,0,KeyPress4
OnEvent>KEY_DOWN,5,0,KeyPress5
OnEvent>KEY_DOWN,6,0,KeyPress6
OnEvent>KEY_DOWN,7,0,KeyPress7
OnEvent>KEY_DOWN,8,0,KeyPress8
OnEvent>KEY_DOWN,9,0,KeyPress9
Let>text=
Let>list=
Label>start
Length>%text%,len
If>%len%>4
GoSub>Process
Let>text=
EndIf
Wait>0.001
Goto>start
SRT>Process
Concat>list,%text%%CRLF%
MDL>%list%
//or what ever else might need to be done
END>Process
SRT>KeyPress0
Concat>text,0
END>KeyPress0
SRT>KeyPress1
Concat>text,1
END>KeyPress1
SRT>KeyPress2
Concat>text.2
END>KeyPress2
SRT>KeyPress3
Concat>text,3
END>KeyPress3
SRT>KeyPress4
Concat>text,4
END>KeyPress4
SRT>KeyPress5
Concat>text,5
END>KeyPress5
SRT>KeyPress6
Concat>text,6
END>KeyPress6
SRT>KeyPress7
Concat>text,7
END>KeyPress7
SRT>KeyPress8
Concat>text,8
END>KeyPress8
SRT>KeyPress9
Concat>text,9
END>KeyPress9
It was an attempt to capture key strokes. I knew it would not work with a keyboard because of the keyboard scan rate but I thought it would work with a scanner. Rather than have you worry about it I set up a scanner on my PC and found that the scanner entered multiples of each number just like the keyboard. So the previous post will not work for you.
Another idea is to have a non-modal dialog that is perpetually on top. This will collect your data then write it to a file on exit of the program. Try to make some other window the focused window while this is running, I don't think you can. Be sure to remark or remove the MDL> line if you want this to run without user intervention.
Hope this is easier to understand and works better for you,
Dick
Another idea is to have a non-modal dialog that is perpetually on top. This will collect your data then write it to a file on exit of the program. Try to make some other window the focused window while this is running, I don't think you can. Be sure to remark or remove the MDL> line if you want this to run without user intervention.
Hope this is easier to understand and works better for you,
Dick
Code: Select all
Dialog>Dialog1
Caption=Enter Badge Number
Width=168
Height=162
Top=180
Left=371
Close=0
Label=Badge Number,40,24
Edit=msEdit1,32,40,97,
Button=Close,40,88,75,25,2
//remove or remark the next line if the scanner sends a return
Default=Close
EndDialog>Dialog1
Let>list=
Show>dialog1
Label>start
GetDialogAction>Dialog1,r1
If>r1=2,finish
Wait>0.001
Length>%Dialog1.msEdit1%,len
If>%len%>4
Concat>list,%Dialog1.msEdit1%%CRLF%
//next line to be removed when not testing
MDL>Current badge number = %Dialog1.msEdit1%%CRLF%Number list:%CRLF%%list%
Let>Dialog1.msEdit1=
ResetDialogAction>Dialog1
EndIf
WindowAction>0,Enter Badge Number
Goto>start
Label>finish
WriteLn>c:\~badgelist~.txt,wresult,%list%
Last edited by JRL on Thu Jun 01, 2006 4:07 am, edited 1 time in total.
Thanks for the input, my original post had a non-modal dialog input that would capture the input from the scanner and immediately write it to file then return to the beginning of the script...continuous loop. This does a good job of capturing the scan but that's not my issue.
I intend for this program to run on a pc with little or nothing else on it. But in spite of that my concern is that if any other process writes to the screen and steals the focus from my program all scans are lost until the focus is returned to my program. So, my thought was can the usb input be diverted/captured directly to file.....looks to be over my head.
My other alternative was to write a small program to run in memory that will constantly...every couple of seconds set the focus to my program. Guess since the pc that will be in use will be dedicated to only this data collection purpose I can persue that approach.
The scanner, by changing to a different cable and some minor reprogramming could be an rs232 device....but that opens a different approach to data collection that am unsure if macro scheduler will accomadate.
thanks for the help will test with a program to continually set focus and see how it goes.
Wrote the following and compiled and this seems to ease my concerns. As I open other windows that steal focus from my program this puts it back in place on top of everything. Maybe a little coarse but seems to get the job done.
Label>START
SetFocus>Clock*
wait>.3
goto>START
I intend for this program to run on a pc with little or nothing else on it. But in spite of that my concern is that if any other process writes to the screen and steals the focus from my program all scans are lost until the focus is returned to my program. So, my thought was can the usb input be diverted/captured directly to file.....looks to be over my head.
My other alternative was to write a small program to run in memory that will constantly...every couple of seconds set the focus to my program. Guess since the pc that will be in use will be dedicated to only this data collection purpose I can persue that approach.
The scanner, by changing to a different cable and some minor reprogramming could be an rs232 device....but that opens a different approach to data collection that am unsure if macro scheduler will accomadate.
thanks for the help will test with a program to continually set focus and see how it goes.
Wrote the following and compiled and this seems to ease my concerns. As I open other windows that steal focus from my program this puts it back in place on top of everything. Maybe a little coarse but seems to get the job done.
Label>START
SetFocus>Clock*
wait>.3
goto>START
If you re-read my last post you'll see that I understand the focus loss concern. The script I posted cannot be upstaged except by user intervention and that could be fixed also.
FYI the part that keeps the dialog on top is the WindowAction>0,Windowname line embedded in the continuously running getdialogaction> loop.
Sorry I posted the first script. I should know better than to try to be helpful without testing first. Sometimes does more harm than good.
Good Luck,
Dick
FYI the part that keeps the dialog on top is the WindowAction>0,Windowname line embedded in the continuously running getdialogaction> loop.
Sorry I posted the first script. I should know better than to try to be helpful without testing first. Sometimes does more harm than good.
Good Luck,
Dick
Modified your code so that it automatically writes to file each time after the 5th number is entered. You're right about the enter from the scanner but this can be turned off in the scanner...I turned it on to run the code I had written. Thanks for the help.
Dialog>Dialog1
Caption=Enter Badge Number
Width=168
Height=162
Top=180
Left=371
Close=0
Label=Badge Number,40,24
Edit=msEdit1,32,40,97,
Button=Close,40,88,75,25,2
Default=Close
EndDialog>Dialog1
Show>dialog1
Label>start
Day>the_day
Month>the_month
Year>the_year
Let>NOW=%the_year%%the_month%%the_day%
GetDialogAction>Dialog1,r1
If>r1=2,finish
Wait>0.001
Length>%Dialog1.msEdit1%,len
If>%len%>4
TimeStamp>c:\~badgelist~.txt,%Dialog1.msEdit1% %NOW%
Let>Dialog1.msEdit1=
ResetDialogAction>Dialog1
EndIf
WindowAction>0,Enter Badge Number
Goto>start
Label>finish
Dialog>Dialog1
Caption=Enter Badge Number
Width=168
Height=162
Top=180
Left=371
Close=0
Label=Badge Number,40,24
Edit=msEdit1,32,40,97,
Button=Close,40,88,75,25,2
Default=Close
EndDialog>Dialog1
Show>dialog1
Label>start
Day>the_day
Month>the_month
Year>the_year
Let>NOW=%the_year%%the_month%%the_day%
GetDialogAction>Dialog1,r1
If>r1=2,finish
Wait>0.001
Length>%Dialog1.msEdit1%,len
If>%len%>4
TimeStamp>c:\~badgelist~.txt,%Dialog1.msEdit1% %NOW%
Let>Dialog1.msEdit1=
ResetDialogAction>Dialog1
EndIf
WindowAction>0,Enter Badge Number
Goto>start
Label>finish
- Marcus Tettmar
- Site Admin
- Posts: 7395
- Joined: Thu Sep 19, 2002 3:00 pm
- Location: Dorset, UK
- Contact:
Dick,
Many thanks for working on an elegant solution for D_S's requirements and for taking the time to test with a scanner attached. I am sure it will be much appreciated.
Many thanks for working on an elegant solution for D_S's requirements and for taking the time to test with a scanner attached. I am sure it will be much appreciated.
Marcus Tettmar
http://mjtnet.com/blog/ | http://twitter.com/marcustettmar
Did you know we are now offering affordable monthly subscriptions for Macro Scheduler Standard?
http://mjtnet.com/blog/ | http://twitter.com/marcustettmar
Did you know we are now offering affordable monthly subscriptions for Macro Scheduler Standard?