USB port TMS

Annchen Knodt aknodt at gmail.com
Thu Mar 13 16:59:30 UTC 2014




Thanks again for your help, David - I was able to get it working!  A big 
part I was missing was what to use for PortNum - the directions that came 
with the hardware only specified FIRSTPORTA, but I had to do a little 
searching before I found that the value of that constant was 10 on my 
device...all of the constants are listed in the file cbw.bas, which on my 
computer is in C:/Program Files/Measurement Computing/DAQ/VBWIN. (I found 
out that the board # was 0 after installation from the InstaCal program)

So, this is what I have for the working version at the top of my User 
script:

Dim config_success As Integer
Dim write_success As Integer

Declare Function cbDConfigPort Lib "cbw32.dll" (ByVal BoardNum&, ByVal 
PortNum&, ByVal Direction&) As Long
Declare Function WritePortUSB Lib "cbw32.dll" Alias "cbDOut" (ByVal 
BoardNum&, ByVal PortNum&, ByVal DataValue%) As Long

Then this at the beginning of the script (configuring port 10 on board 0 to 
DIGITALOUT = 1):
config_success = cbDConfigPort(0, 10, 1)

And this every time in the script that I wanted to send, for example the 
signal 4 to port 10 on board 0:
write_success = WritePortUSB(0, 10, 4)

(It was helpful to use Eprime's Debug.print when checking the write_success 
and config_success results)

Hope this helps somebody else who might run into the same issue!

Annchen

On Friday, March 7, 2014 4:14:23 PM UTC-5, McFarlane, David wrote:
>
> 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+u... at googlegroups.com <javascript:>>
> e-prime+unsubscribe at googlegroups.com <javascript:>. 
> >To post to this group, send email to 
> ><mailto:e-p... at googlegroups.com <javascript:>>e-p... at googlegroups.com<javascript:>. 
>
> >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/ab643a82-a891-455d-b6c0-659b35ad712b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.linguistlist.org/pipermail/eprime/attachments/20140313/84e7905d/attachment.htm>


More information about the Eprime mailing list