首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyserial/Eye-tracker:在显示刺激的同时从串口读取

Pyserial/Eye-tracker:在显示刺激的同时从串口读取
EN

Stack Overflow用户
提问于 2016-08-24 21:14:30
回答 2查看 201关注 0票数 0

我正在使用Pyserial (+Python2.7)读取从眼球跟踪器(CRS Live-Track设置为串口)获取的眼球跟踪坐标。使用下面的代码,我能够成功地启动跟踪器,读取/保存一行坐标,停止跟踪器,然后关闭。我的问题是,我需要连续读取坐标,同时执行其他任务,如刺激显示。现在,当我读入数据('trial1 = ser.readline')时,我不能做任何事情。我必须等到读取完数据后才能继续。有没有一种方法可以在我显示激励/采集响应等时从串行端口连续读取数据?

我需要打开跟踪器,收集试验期间的数据,然后关闭跟踪器。

代码语言:javascript
复制
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()

干杯,史蒂夫

EN

回答 2

Stack Overflow用户

发布于 2016-08-25 08:35:01

Sol Simpson的ioHub提供了从PsychoPy内部的异步设备监控。也就是说,它在一个完全独立的进程上运行,所以在监控主PsychoPy线程中的端口时,您不必暂停。

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

票数 1
EN

Stack Overflow用户

发布于 2016-08-29 21:03:09

另一种选择是尝试线程。你可以把你的眼球跟踪器放在一个线程中,而把剩下的代码放在另一个线程中。2010年有一个关于多线程的堆栈溢出answer (不使用精神病和眼球跟踪器)。如果你向下滚动,你会看到有人链接到一篇关于他们认为更容易更新的approach的博客文章。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39124386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档