psychopy 定作實驗程序 https://item.taobao.com/item.htm?spm=a230r.1.14.6.Q6E2OW&id=530690095131&ns=1&abbucket=15#detailpython
有的實驗會用到兩臺電腦聯機,要求被試互相爲對方分配賞金或者得分,要求被試之間合做或者競爭。有時咱們會用假被試,即讓被試玩單機的,但卻告訴他是聯機的。這個方式雖然很機智,但有時也充滿了遺憾——若是真的能夠讓被試作真正的聯機任務該多好!網絡
在這裏,分享一個聯機通信腳本,如下是腳本運行過程和腳本文件。具體的思路請自行參悟,或者app
from pydoc import help import socket help(socket.socket)
秒拍視頻 http://www.yixia.com/u/paike_r2r9ujpkf9socket
# -*- coding: utf-8 -*- """ Created on Sun Sep 04 22:53:45 2016 @author: zbg """ import socket import sys import threading def WaitFor(connect, s): while connect.recv(1024) != s: pass HOST = '192.168.1.102' PORT = 8888 data = '' s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((HOST, PORT)) s.listen(10) con, addr = s.accept() WaitFor(con, 'start') from psychopy.visual import Window, ImageStim, TextStim from psychopy import core, event, gui, clock done = False win = Window(fullscr = True) while not done: key = con.recv(1024) if key =='q': done = True t =TextStim(win, key ,pos=(0,-0.0), height = 1.5) t.draw() win.flip() win.close() s.close()
# -*- coding: utf-8 -*- """ Created on Mon Sep 05 16:33:06 2016 @author: zbg """ import socket import threading ip = '192.168.1.102' sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((ip, 8888)) sock.send('start') from psychopy.visual import Window, ImageStim, TextStim from psychopy import core, event, gui, clock win = Window(fullscr = True) t =TextStim(win, u"我是鍵盤,按q退出" ,pos=(0,-0.0)) t.draw() win.flip() keys = event.getKeys() while 'q' not in keys: if len(keys) > 0: print keys[0] sock.send(keys[0]) keys = event.getKeys() sock.send('q') sock.close() win.close()