USB port TMS

David McFarlane mcfarla9 at msu.edu
Fri Mar 7 21:14:23 UTC 2014


Annchen,

OK, I dug out my old project and took a look to refresh my 
memory.  First, as I recall, you have to run some software that came 
with the MCC board just to set it up to work with the system, and 
that should have been covered in the documentation that came with the 
board.  If you have not yet run that setup software, and the 
diagnostics to confirm that the board works with your system, then 
you need to stop and do that first.  As I recall, that's where the 
board number gets assigned, until you do that the board is just not 
available to the system.  In particular, after you run the setup, run 
the demo software that came with the board, as I recall that includes 
both signal generator and oscillosope emulators (you will need other 
equipment to measure this output or supply some varying 
input).  Until you get all that to work, all bets are off with 
E-Prime or anything else.

Typically, again as I recall, the board number is 0 (it was in my 
case), but again you need to run the MCC setup software to make that 
active.  You may also use the cbGetBoardName() function to discover 
active board numbers, but as I keep saying, that will also fail if 
you have not first run the MCC setup software.  And be aware that 
this board number setup has to be done individually on each machine 
you use, the same USB board may be assigned a different board number 
on each machine (in which case you might find the cbGetBoardName() 
function handy to have your EP program automatically adapt to 
different machines, but that is an advanced topic, even I skipped 
that in my program and just assumed 0).

(BTW, for those tuning in, "board"  here takes a special meaning 
where it refers to an external USB device that performs functions 
that formerly were left to adapter boards added to slots on the PC 
motherboard.)

Good luck,
-- dkm


At 3/7/2014 03:40 PM Friday, Annchen Knodt wrote:
>Thanks, I actually just caught that myself as well!  I was 
>unknowingly copying from a call to a subroutine or something of the 
>sort then - totally new at this.
>
>Changing my code to the following allowed it to compile and run:
>
>write_success = WritePortUSB(0, 888, 16)
>
>FWIW I also realized that I might need an additional function and 
>call to configure the device (per the user guide):
>Declare Function cbDConfigPort Lib "cbw32.dll" (ByVal BoardNum&, 
>ByVal PortNum&, ByValDirection&) As Long
>...
>config_success = cbDConfigPort(0, 1, 1)
>
>Now I just have to make sure I'm getting the port number correct - 
>any tips on how to figure out what to use for that?  I'm resorting 
>to trial and error for now and haven't had success generating the 
>signals yet - I'm not sure if it's this or something else that's 
>configured incorrectly, so I'd like to have more confidence that at 
>least some of the arguments I'm using are correct.
>
>Thanks for all your help!
>
>AK
>
>On Friday, March 7, 2014 3:14:06 PM UTC-5, McFarlane, David wrote:
>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>http://psychology.msu.edu/Workshops_Courses/eprime.aspx 
>
>Twitter:  @EPrimeMaster 
>(<https://twitter.com/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://ps 
> ychology.msu.edu/Workshops_Courses/eprime.aspx>http://psychology.msu.edu/Workshops_Courses/eprime.aspx 
>
> >
> >Twitter:  @EPrimeMaster
> >(<<https://twitter.com/EPrimeMaster>https://twitter.com/EPrimeMaste 
> r>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>https://sup 
> port.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/P 
> STNET>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>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>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 
><mailto:e-prime+unsubscribe at googlegroups.com>e-prime+unsubscribe at googlegroups.com.
>To post to this group, send email to 
><mailto:e-prime at googlegroups.com>e-prime at googlegroups.com.
>To view this discussion on the web visit 
><https://groups.google.com/d/msgid/e-prime/99bace4f-6343-4d5d-a6c1-57c8be890cd7%40googlegroups.com?utm_medium=email&utm_source=footer>https://groups.google.com/d/msgid/e-prime/99bace4f-6343-4d5d-a6c1-57c8be890cd7%40googlegroups.com.
>For more options, visit 
><https://groups.google.com/d/optout>https://groups.google.com/d/optout.

-- 
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/531a36ba.0552320a.13ad.233dSMTPIN_ADDED_MISSING%40gmr-mx.google.com.
For more options, visit https://groups.google.com/d/optout.



More information about the Eprime mailing list