Announcement

Collapse
No announcement yet.

Electronics application with PBWin

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Russ Srole
    replied
    I don't generally use timers for serial communications, but if you want somewhat better resolution, you can use the multimedia timers. It requires that the motherboard have compatible hardware, but that doesn't seem to be a big problem with modern gear.

    Code:
    SUB StartMMTimer()
        %TIME_ONESHOT               = 0     ' Event occurs once, after uDelay milliseconds
        %TIME_PERIODIC              = 1     ' Event occurs every uDelay milliseconds.
        %TIME_CALLBACK_FUNCTION     = 0     ' When the timer expires, Windows calls the function pointed to by the
                                                ' lpTimeProc parameter.  This is the default.
        %TIME_CALLBACK_EVENT_SET    = 16    ' When the timer expires, Windows calls theSetEvent function to set the event
                                            ' pointed to by the lpTimeProc parameter. The dwUser parameter is ignored.
        %TIME_CALLBACK_EVENT_PULSE  = 32    ' When the timer expires, Windows calls thePulseEvent function to pulse the
    
        IF hMMTimer& THEN EXIT SUB
        hMMTimer = TimeSetEvent ( 1, 1, CODEPTR(MMTimerProc), 0&, %TIME_PERIODIC OR %TIME_CALLBACK_FUNCTION )
    END SUB
    
    
    SUB MMTimerProc( BYVAL uID AS LONG, BYVAL uMsg AS LONG, _
                              BYVAL dwUser AS LONG, BYVAL lp1 AS LONG, BYVAL lp2 AS LONG)
      ' *** If using a periodic MM timer, you should ensure the code you place in the timer callback function
      ' *** can finish executing before the next MM timer event.
        ' do something
    END SUB
    '
    '

    Leave a comment:


  • Dave Biggs
    replied
    Chris,

    A major difference in writing Windows programs compared to microcontrollers is likely the opportunity to write threaded programs.

    You might find that your program benifits from having your main functions being taken care of in separate threads as opposed to having to deal with them sequentially (with assosiated timing issues).

    See the Comms.bas sample program that comes with PB for an example of separating the receive operations from the main program.

    Leave a comment:


  • Cliff Nichols
    replied
    I have very little experience in sub Ms timers (heck actually anything less than 0.100 seconds seems "Iffy" to me) but have often wondered if able to do it because of claims of "High Resolution" timers

    You MIGHHHHHHT be able to use "TIX" and avg the amt of time for a 1ms sleep??? (but even at that its up to an avg, and the cpu)

    More and more lately I have found and actual use for sub 1/10th of a second reliability, but 1ms or (much less) I have a hard time determining if real, or reliable (or at least till I can see an example showing WHY it is reliable, or only reliable because the sample time is bigger than a guaranteed number of samples)

    Leave a comment:


  • Chris Burgess
    replied
    Hi Paul,
    I couldn't get that code to work in PBWin, as it was written for PB/CC.
    I've never used CC, and unfortunately don't know enough yet to do the translation.

    Regards,
    Chris

    Leave a comment:


  • Chris Burgess
    replied
    Obviously, if anything else is running on a PC, it's going to slow things down for other things competing for CPU time.
    However, our app is running on a purpose made PC, with as many processes disabled as possible (No explorer.exe, antivrtus, network, updates, or any other drivers / applications that are not essential for thr PC to perform its task).
    The only startup item is the app (which can't be started in the normal way as explorer has been removed) itself.

    Leave a comment:


  • Michael Mattias
    replied
    but I'm a relative novice in Windows programming. My coding background is in microcontrollers.....
    One issue I'm dealing with now is timers..
    Just as a general caution... be aware that using timers in a preemptive multitasking environment (Windows) is not the same thing as using timers in a single-process (MS-DOS or microcontroller) environment.

    Yes, you get your timer notifications or can read one of the system timers, but ONLY when it is your program's "turn" to get some CPU time.....

    Leave a comment:


  • Paul Dixon
    replied
    Chris,
    you can easily get timers to 1ms in Windows. See here for an example:


    Better resolution than that can be a problem.

    Paul.

    Leave a comment:


  • Chris Burgess
    replied
    Hi Stephane,

    I'm currently writing one that communicates with a largish control panel (used in automation at a furniture factory to control a/c, heating, and dust/fume extraction amongst other things) via RS232. The limitation of using Hyperterminal or a similar general-purpose comms program are:
    - the inability to record the time and date that events happen (the panel does not have a RTC)
    - the inability to control external devices, such as alarm lights / sirens
    - the inability to log data automatically to a disk file or printer

    I'm writing a "hyperterminal replacement" in PB to overcome these limitations, but I'm a relative novice in Windows programming. My coding background is in microcontrollers, and it's discovering the differences that take up the time.

    One issue I'm dealing with now is timers, they seem to be limited to about 10 to 50 milliseconds under Win XP Pro (3 Ghz CPU). I can easily generate sub-microsecond delays (using a timer) in a micro running at a clock speed of 8 Mhz though. This limitation seems rather strange to me...

    Regards,
    Chris.

    Leave a comment:


  • Cliff Nichols
    replied
    I work with Serial Ports (both virtual and real) all the time to communicate with Stepper-Motor controllers and Digital readouts. For the most part they are all communication with a micro controller, so its really just a matter of communication protocols that need to be followed.

    I started with the "Comms.bas" in the PB examples, and built on from there. But now going back over old code to see how I could make it better. So maybe is a good time to make the code modular and post.

    Will let you know what I come up with

    Leave a comment:


  • Gary Beene
    replied
    Hi Stephane,

    I don't personally do much with serial ports, but at my VB site I have a fair amount of information on the topic - especially links to code that should be convertible to a PowerBASIC application.



    See if this helps any.

    Leave a comment:


  • Stephane Fonteyne
    started a topic Electronics application with PBWin

    Electronics application with PBWin

    Hello all

    Whynot somebody post here in the sources forums none of serial communications applications such as examples, ideas, controls with an microcontrollers.

    I would like to write an serial communication for control the temperature with an microcontroller and read en write the data via serial communications and the tool is perfect in PB

    I hope that someboy post serial communications on the source forums for electronic developers that works with microcontrollers

    Kind regards
    Stephane
Working...
X