Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Supported by

StimTracker Duo and Parallel Port Triggers

I used the instruction for parallel port (EEG triggers) and after installing the parallel_port_trigger plug in and downloading the DLPortIO driver I plugged new_parallel_port_trigger_init to the beginning of my experiment and new_parallel_port_trigger_send to the beginning of the practice_sequence which is where the stimuli first gets presented and ideally where I'd like the triggers to be recorded. I have tried to set it on dummy mode with the port address set to the default 0x378, but when I ran the experiment with the fNIRS connected I got the error message:

item-stack:
experiment[run].practice_loop1[run].block_sequence1[run].block_loop_1[run].practice_sequence_1[prepare].new_paralel_port_trigger_send[prepare]

exception type: AttributeError

exception message: pptrigger not found
time: Fri Jun 08 13:52:17 2018

This computer does not allow me to directly plug in the DisplayPort Cable directly from the Parallel Port Output. This being the case; I have a CEDRUS StimTracker Duo connected to the computer via USB. This being the case, I fear the StimTracker might be complicating the process, but have not seen this type of issue addressed before.
The StimTracker support makes it clear that a USB driver is necessary and I have already gone ahead and installed that as well.

I have also tested the StimTracker on E-Prime using sample code and it successfully sent the event triggers.
Following a similar set up I tried changing port address to 0x3E8 which is COM3 where the USB Serial Port that the StimTracker is using. Then I also changed the bits per second to 115200. I tried emailing CEDRUS for help but they told me that they did not have any information that is specific to the OpenSesame software because they have no in-house experience with it.

However their website had some sample Python code on GitHub so I downloaded the zip file and placed it into the OpenSesame folder. I then tried to run the following script in the debug window:

import pyxid

# get a list of all attached XID devices
devices = pyxid.get_xid_devices()

dev = devices[0] # get the first device to use
if dev.is_response_device():
    dev.reset_base_timer()
    dev.reset_rt_timer()

    while True:
        dev.poll_for_response()
        if dev.response_queue_size() > 0:
            response = dev.get_next_response()
            # do something with the response

I'll then get an indentation error, so once I try and fix it to the best of my ability I get an error code:

ImportErrorTraceback (most recent call last)
in ()
----> 1 import pyxid
2
3 # get a list of all attached XID devices
4 devices = pyxid.get_xid_devices()
5

ImportError: No module named pyxid

I would really like to run this experiment on OpenSesame so if anyone has any suggestions as to how I can get the software to recognize the StimTracker please let me know.

Comments

  • After switching from dummy mode to verbose I have had success running the experiment all the way through, albeit limited as sometimes it'll tell me Python crashed.

    Now the problem seems to be about actually getting the [Markers] to show up on the receiving computer. The events are still coming up empty. I feel there is still something I'm missing, perhaps telling OpenSesame the exact moment I want the events recorded? I have no clue how to do this but will include the latest results from running the experiment below:

    Parallel Port Trigger plug-in has been initialized!
    Starting experiment as ExperimentProcess-10
    Expyriment 0.9.1b2-11-gc100ee8 (Python 2.7.13)
    Scripts/safelaunch-opensesame.py
    openexp.sampler._legacy.init_sound(): sampling freq = 48000, buffer size = 1024
    experiment.run(): experiment started at Tue Jun 12 15:57:18 2018
    experiment.run(): disabling garbage collection
    C:\Users\Narciso\Desktop\OpenSesame\share\opensesame_plugins\parallel_port_trigger_init\inpout32.dll
    Resetting the parallel port on address: 0x3E8
    Sending value 10 to the parallel port on address: 0x3E8
    Waiting 100 ms to reset
    Resetting the parallel port to zero
    Sending value 10 to the parallel port on address: 0x3E8
    Waiting 100 ms to reset
    Resetting the parallel port to zero
    Sending value 10 to the parallel port on address: 0x3E8
    Waiting 100 ms to reset
    Resetting the parallel port to zero
    Sending value 10 to the parallel port on address: 0x3E8
    Waiting 100 ms to reset
    Resetting the parallel port to zero
    experiment.run(): experiment finished at Tue Jun 12 15:58:36 2018
    failed to close Parallel port
    experiment.end(): enabling garbage collection
    done!

  • Hi FlintMarco,

    As far as I understand from your story, the Stimtracker Duo is reachable through a virtual serial port (connect by USB) and not the parallel port. The parallel port trigger plugin only works with parallel ports.

    Thanks for the bug report, the error in dummy mode is fixed in 1.0.4.

  • Hi _Bob,

    Thank you for pointing me in the right direction. After looking through a few older posts about the use of serial ports I implemented inline scripts that should have been able to send the triggers. The experiment runs without any problems. However, the triggers are still not being registered or sent. In order to test if it was working correctly I tried putting the following into the debug window:

    exp.serial_port.write(chr(1))
    print 'I just sent trigger 1! (or did I ... ?)'

    The result I got was NameError: name 'exp' is not defined.

    To give you an example of my inline script. the serial_setup inline script is plugged in right at the start of the experiment:

    we will need to import the 'serial' module,

    which allows us to send and receive

    information via the serial port

    import serial

    next, we will need to start a connection to

    the serial port

    exp.trigger = serial.Serial('COM3', baudrate=115200, bytesize=serial.EIGHTBITS)

    finally, we want to make sure that the

    connection to the serial port will be stopped

    when the experiment is aborted or finished

    exp.cleanup_functions.append(exp.trigger.close)

    The second inline script is plugged into the practice_sequence after the reset_feedback:

    this sends a trigger with value 1

    if you require a different value, please

    use a number between 0 and 255

    exp.trigger.write(chr(1))

    This is my setup for the time being as I just want to get OpenSesame to send a trigger before I begin to specify the amount and specific time to send. If you have any suggestions as to where I'm going wrong please let me know. I appreciate your help.

  • edited June 2018

    The variable exp does not exist and I would also split it up in a 'init' script (beginning of the experiment) and a 'send trigger' script which you can put in a sequence in a loop. When you want to use a variable through the entire experiment, you can put 'var.' before the variable name Something like this:

    'init' script:

    import serial
    var.experiment.serial_port = serial.Serial('COM3', baudrate=115200, bytesize=serial.EIGHTBITS)
    var.experiment.cleanup_functions.append(var.serial_port.close())

    'send trigger' script:

    var.experiment.serial_port.write(chr(1))

Sign In or Register to comment.

agen judi bola , sportbook, casino, togel, number game, singapore, tangkas, basket, slot, poker, dominoqq, agen bola. Semua permainan bisa dimainkan hanya dengan 1 ID. minimal deposit 50.000 ,- bonus cashback hingga 10% , diskon togel hingga 66% bisa bermain di android dan IOS kapanpun dan dimana pun. poker , bandarq , aduq, domino qq , dominobet. Semua permainan bisa dimainkan hanya dengan 1 ID. minimal deposit 10.000 ,- bonus turnover 0.5% dan bonus referral 20%. Bonus - bonus yang dihadirkan bisa terbilang cukup tinggi dan memuaskan, anda hanya perlu memasang pada situs yang memberikan bursa pasaran terbaik yaitu http://45.77.173.118/ Bola168. Situs penyedia segala jenis permainan poker online kini semakin banyak ditemukan di Internet, salah satunya TahunQQ merupakan situs Agen Judi Domino66 Dan BandarQ Terpercaya yang mampu memberikan banyak provit bagi bettornya. Permainan Yang Di Sediakan Dewi365 Juga sangat banyak Dan menarik dan Peluang untuk memenangkan Taruhan Judi online ini juga sangat mudah . Mainkan Segera Taruhan Sportbook anda bersama Agen Judi Bola Bersama Dewi365 Kemenangan Anda Berapa pun akan Terbayarkan. Tersedia 9 macam permainan seru yang bisa kamu mainkan hanya di dalam 1 ID saja. Permainan seru yang tersedia seperti Poker, Domino QQ Dan juga BandarQ Online. Semuanya tersedia lengkap hanya di ABGQQ. Situs ABGQQ sangat mudah dimenangkan, kamu juga akan mendapatkan mega bonus dan setiap pemain berhak mendapatkan cashback mingguan. ABGQQ juga telah diakui sebagai Bandar Domino Online yang menjamin sistem FAIR PLAY disetiap permainan yang bisa dimainkan dengan deposit minimal hanya Rp.25.000. DEWI365 adalah Bandar Judi Bola Terpercaya & resmi dan terpercaya di indonesia. Situs judi bola ini menyediakan fasilitas bagi anda untuk dapat bermain memainkan permainan judi bola. Didalam situs ini memiliki berbagai permainan taruhan bola terlengkap seperti Sbobet, yang membuat DEWI365 menjadi situs judi bola terbaik dan terpercaya di Indonesia. Tentunya sebagai situs yang bertugas sebagai Bandar Poker Online pastinya akan berusaha untuk menjaga semua informasi dan keamanan yang terdapat di POKERQQ13. Kotakqq adalah situs Judi Poker Online Terpercayayang menyediakan 9 jenis permainan sakong online, dominoqq, domino99, bandarq, bandar ceme, aduq, poker online, bandar poker, balak66, perang baccarat, dan capsa susun. Dengan minimal deposit withdraw 15.000 Anda sudah bisa memainkan semua permaina pkv games di situs kami. Jackpot besar,Win rate tinggi, Fair play, PKV Games