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