【问题标题】:Pyserial/Eye-tracker: Reading from serial port whilst displaying stimuliPyserial/Eye-tracker:在显示刺激的同时从串行端口读取
【发布时间】:2016-12-31 15:39:36
【问题描述】:

我正在使用 Pyserial (+Python 2.7) 读取从眼动仪获取的眼动追踪坐标(CRS Live-Track 设置为串行端口)。使用下面的代码,我能够成功启动跟踪器、读取/保存坐标线、停止跟踪器并关闭。我的问题是我需要在执行其他任务(例如刺激显示)时不断读取坐标。就目前而言,我在读取数据时无能为力('trial1 = ser.readline')。在我继续之前,我必须等到我读入数据。在我显示刺激/收集响应等时,有没有办法从串行端口连续读取数据?

我需要打开追踪器,在试用期间收集数据,然后关闭追踪器。

import serial, time

ser = serial.Serial(
    port='COM3',
    baudrate=9600,
    parity=serial.PARITY_ODD,
    stopbits=serial.STOPBITS_TWO,
    bytesize=serial.SEVENBITS,
)

x = ser.is_open #check port is open
if x:
    print "port is open"

print "port name is: %s" %(ser.name)  #check which port

ser.flushInput()
ser.flushOutput()

running = True
while running:

    ser.write('$Raw\r')                 #start eye-tracker
    trial1 = ser.readline()             #read a line

    ###i need to do stuff here###

    ser.write('$Stop\r')                #stop eye-tracker

    running = False

ser.flushInput()
ser.flushOutput()

print trial1                          #print coordinates output 

ser.close()

干杯, 史蒂夫

【问题讨论】:

    标签: python-2.7 pyserial psychopy


    【解决方案1】:

    Sol Simpson 的 ioHub 在 PsychoPy 中提供异步设备监控。即它在一个完全独立的进程上运行,因此您不必在监控主 PsychoPy 线程中的端口时暂停。

    ioHub 中的串口文档似乎很少,但这里有一个演示:https://github.com/psychopy/psychopy/blob/master/psychopy/demos/coder/iohub/serial/customparser.py

    【讨论】:

      【解决方案2】:

      另一种选择是尝试线程。您可以将眼动仪放在一个线程中,将其余代码放在另一个线程中。从 2010 年开始,answer 出现关于多线程(不使用心理和眼动仪)的堆栈溢出问题。如果向下滚动,您会看到有人链接到有关更新的 approach 的博客文章,他们认为这更容易。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-18
        • 1970-01-01
        • 1970-01-01
        • 2014-05-01
        • 2017-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多