• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 402
  • Last Modified:

Timer smaller than 1 milisecond(ms)? I need microseconds(us)!

Dear friends,
I am buidind a small data aquisition program for a custom designed interface, through the LPT.
The A/D converter needs a start signal to convert a value. But before reading it, I must wait about 50-60 MICROSECONDS (about 0.05 miliseconds).
How can I do that in Visual Basic?
Thanks.
0
robertut
Asked:
robertut
1 Solution
 
RichWCommented:
Public Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)



Sleep 0.05
0
 
EDDYKTCommented:
?->
0
 
HobbitHouseCommented:
due to a hangover from the earliest days of PCs, the timer available to programmers has a resolution of 55 ms, so I think you're out of luck
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
RichWCommented:
If you run the SLEEP you've got te 0.05 milliseconds pause without the need of a timer.
0
 
hiranmayaCommented:
Sleep may not be the good suggestion.
0
 
robertutAuthor Commented:
I am planning to use sleep.
"Sleep may not be the good suggestion." - why is that?
Robert
0
 
RichWCommented:
Robertut, the Sleep api is a good suggestion for a pause without using a timer object.  

It's really not much different from something like:

Dim x as Long

Do Until x = 500
   x = x + 1
Loop

0
 
bal3xCommented:
I had the same problem a week ago, i needed to capture data from LPT in order of microseconds.

Try this way

If you don't need accurate timing (i dont think that SLEEP can help you, it is not very accurate)
better solution is to set your application in REALTIME level of process priority
next thing to do is to capture data from LPT with exact number of samples

Example: For i=1 to (number of samples)
                 {read from LPT]
                 {store value in array with same lenght as the number of samples]
               Next

When finished with reading return to normal level of priority.

Here is my source code

Private Sub SetProcessPriority(ByVal processname As String, ByVal priority As ProcessPriorityClass)
        Dim pl() As Process = Process.GetProcessesByName(processname)
        For Each p As Process In pl
            p.PriorityClass = priority
        Next
End Sub


Private Sub cmbRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbRead.Click
     
    SetProcessPriority("app name", ProcessPriorityClass.RealTime)
     
    For a = 1 To NoSamples
            pole(a) = "read from LPT"    'write command to read from lpt, i used external module to read'
    Next
   
    SetProcessPriority("app name"t, ProcessPriorityClass.Normal)

End Sub

HAVE FUN
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now