USB port TMS

David McFarlane mcfarla9 at msu.edu
Fri Mar 7 20:14:06 UTC 2014


Annchen,

Ah, the old "Subroutine vs. Function" distinction that is peculiar to 
Visual Basic / E-Basic, and one of my pet peeves (rational languages 
such as C do not make this useless distinction).  Here is the deal, 
which you might never see documented elsewhere:

- Subroutines *never* return a value, and their arguments must *not* 
be enclosed in parentheses.

- Functions *always* return a value, and their arguments *must* be 
enclosed in parentheses.

Sheesh!  (In C, for example, all subroutines are functions, functions 
may be defined to either return a value or not, and if a function 
does return a value you need not collect it in a variable -- isn't 
that a lot better?)

So try something like

     Dim  rtnValue as Long  ' just because we need to take the returned value
     rtnValue = WritePortUSB( 0, 1, 16 )

Come to think of it, the MCC UL documentation should have shown this usage.

You do not need to do anything with the return value, but VBA/E-Basic 
usage *requires* that you store the function's return value to a 
variable anyway.  In this case, though, the function should return a 
meaningful success/error code, so you might want to do something with that.

Good luck,
-----
David McFarlane
E-Prime training 
online:  http://psychology.msu.edu/Workshops_Courses/eprime.aspx
Twitter:  @EPrimeMaster (https://twitter.com/EPrimeMaster )


At 3/7/2014 01:59 PM Friday, Annchen Knodt wrote:
>Hi David,
>
>Thanks for your response.  I was able to get a little further and am 
>now fairly confident that my declare function should look like:
>
>Declare Function WritePortUSB Lib "cbw32.dll" Alias "cbDOut" (ByVal 
>BoardNum&, ByVal PortNum&, ByVal DataValue%) As Long
>(since per MCC documentation, the cbw32.dll file contains the 
>"cbDOut" function for sending digital signals to the device)
>
>and my inline commands (eg to send signal 16 to the device through 
>port 1, with board set to 0 since when I open MCC's instacal program 
>I see that the device is labeled as Board #0) as follows:
>
>WritePortUSB 0, 1, 16
>
>The script will compile and run with the declare function, but once 
>i include the WritePortUSB line of code I get a "missing parameter" 
>error from eprime.
>
>Any idea what I might be missing here?  I'm not sure particularly 
>what number I should be using for PortNum, but I tried several 
>values with the same result.
>
>Thanks!!
>
>Annchen
>
>
>On Thursday, March 6, 2014 12:09:02 PM UTC-5, McFarlane, David wrote:
>Annchen,
>
>For the syntax & usage of the Declare statement, look at the Declare
>topic in the E-Basic Help facility.  You might find even better
>documentation for Declare in references for Microsoft Visual Basic or
>Visual Basic for Applications.
>
>For the rest, you really do have to get that from MCC, they are
>supposed to know and document which of their .dll files and functions
>to use.  As I recall when I used their UL (almost 4 years ago now),
>it came with extensive documentation and examples.  Remember that
>E-Prime is just a derivative of MS VBA, so you should look at the
>documentation & examples for Visual Basic.  In fact, next time you
>talk to MCC staff, do *not* mention E-Prime, just tell them you want
>to use their board with Visual Basic, and that should help orient 
>them better.
>
>Best,
>-----
>David McFarlane
>E-Prime training
>online: 
><http://psychology.msu.edu/Workshops_Courses/eprime.aspx>http://psychology.msu.edu/Workshops_Courses/eprime.aspx 
>
>Twitter:  @EPrimeMaster 
>(<https://twitter.com/EPrimeMaster>https://twitter.com/EPrimeMaster )
>
>/----
>Stock reminder:  1) I do not work for PST.  2) PST's trained staff
>take any and all questions at 
><https://support.pstnet.com>https://support.pstnet.com , and they
>strive to respond to all requests in 24-48 hours, so make full use of
>it.  3) In addition, PST offers several instructional videos on their
>YouTube channel 
>(<http://www.youtube.com/user/PSTNET>http://www.youtube.com/user/PSTNET 
>).  4) If you do
>get an answer from PST staff, please extend the courtesy of posting
>their reply back here for the sake of others.
>\----
>
>
>At 3/6/2014 11:54 AM Thursday, Annchen Knodt wrote:
> >I've been referring to this older post for help getting E-prime to
> >send output signals to a USB device: MCC USB-1208FS.  Since Eprime
> >doesn't have any native functionality for communicating with a USB
> >I'd like to try using the DLL the comes with the device's "Universal
> >Library" installation as David suggests below.  However, I can't
> >find any instructions for working with Eprime anywhere in the UL
> >documentation (and the rep I chatted with at MCC help had never
> >heard of Eprime), so I'm hoping that someone might be able to
> >clarify two things for me:
> >
> >1) Which MCC DLL file to I link to in Eprime? (and what is the
> >syntax of the Declare statement?)  The MCC rep said I should use
> >cbw64.dll, but I'm not sure if he's right since he didn't really
> >know what I was talking about
> >2) What inline commands then do I use in Eprime to send the signal
> >to the USB?  We had previously used WritePort with a different
> >device that's been replaced with this USB
> >
> >Thanks!
> >
> >Annchen Knodt
> >
> >
> >On Monday, May 31, 2010 6:20:18 PM UTC-4, David McFarlane wrote:
> >Sara,
> >
> >Come to think of it, there is a way to send & receive data through USB
> >using E-Prime, in fact I am doing that for a project now.  First go to
> >Measurement Computing (referred to earlier) and get whatever I/O board
> >suits your fancy, e.g., their USB-1024 ($100).  When that arrives,
> >install the Universal Libray software that comes with it.  Then add the
> >appropriate Declare statements in the User Script area of your EP
> >program (see instructions that come with the MCC UL).  Now you can use
> >MCC UL function calls from EP inline code to send & receive data through
> >the USB port.
> >
> >Recognizing that the MCC UL essentially just adds a DLL to provide the
> >USB support, with enough ingenuity you could take this even further by
> >writing your own DLL to use from EP.  For that, you might want to take a
> >look at "USB Complete" by Jan Axelson.
> >
> >Mind you, I am not advising you do any of this.  Just being an academic
> >and pointing out the full range of possibilities.
> >
> >-- David McFarlane, Professional Faultfinder
> >
> >
> >David McFarlane wrote:
> > > Sara,
> > >
> > > Stock reminder:  1) I do not work for PST.  2) PST's trained staff
> > > really does like to take any and all questions at
> > >
> > 
> <<http://support.pstnet.com/e%2Dprime/support/login.asp>http://support.pstnet.com/e%2Dprime/support/login.asp>http://support.pstnet.com/e%2Dprime/support/login.asp 
>
> > , and they strive
> > > to respond to all requests in 24-48 hours -- this is pretty much their
> > > substitute for proper documentation, so make full use of it.  3) If you
> > > do get an answer from PST Web Support, please extend the courtesy of
> > > posting their reply back here for the sake of others.
> > >
> > > That said, here is my take ...
> > >
> > > Unless PST has added something new to the latest release of EP2, E-Prime
> > > simply has no facility for sending or receiving data through a USB port,
> > > so you are just out of luck there.  But do not take my word for this,
> > > please contact PST Web Support yourself and then report back here.
> > >
> > > Say, why not just install another parallel port?  Or, does your other
> > > device need all 8 outputs from the parallel port?  If not, why not just
> > > build a cable to send different wires to your different devices?  Just
> > > take a look at the book "Parallel Port Complete" by Jan Axelson to get
> > > some idea of how to make full use of the parallel port.  Or, skip the
> > > parallel port and just install a real digital I/O card (e.g., from
> > > <<http://www.mccdaq.com>http://www.mccdaq.com>http://www.mccdaq.com ).
> > >
> > > -- David McFarlane, Professional Faultfinder
> > >
> > >
> > >> does anyone knows the scropt to open the USB port in order to trigger
> > >> a TMS?
> > >>
> > >> please, let me know
> > >> I have to send a trigger though the USB port, because the parallel
> > >> port is used to trigger another device.
> > >>
> > >> thank you very much
> > >> Sara

-- 
You received this message because you are subscribed to the Google Groups "E-Prime" group.
To unsubscribe from this group and stop receiving emails from it, send an email to e-prime+unsubscribe at googlegroups.com.
To post to this group, send email to e-prime at googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/e-prime/531a2899.832b320a.3aca.21a1SMTPIN_ADDED_MISSING%40gmr-mx.google.com.
For more options, visit https://groups.google.com/d/optout.



More information about the Eprime mailing list