File: macpulse.py

package info (click to toggle)
pyepl 1.1.0-3.1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 2,120 kB
  • sloc: cpp: 7,986; python: 6,026; makefile: 360; ansic: 132
file content (62 lines) | stat: -rw-r--r-- 1,714 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# PyEPL: hardware/eeg/pulse/macpulse.py
#
# Copyright (C) 2003-2005 Michael J. Kahana
# Authors: Ian Schleifer, Per Sederberg, Aaron Geller, Josh Jacobs
# URL: http://memory.psych.upenn.edu/programming/pyepl
#
# Distributed under the terms of the GNU Lesser General Public License
# (LGPL). See the license.txt that came with this file.

"""
Sends out synch pulses via the ActiveWire USB device for macs only.
"""

from pulseexc import EPLPulseEEGException
import objc    

board=None

def initialize(**options):
    pass

def finalize():
    pass

def openPort():
    global board
    objc.loadBundle('ActiveWireBoard',globals(),bundle_path='/Library/Frameworks/ActiveWireBoard.framework');

    board=ActiveWireBoard.alloc()
    board.init()
    if board.openBoard()==False:
        print 'error opening board'
        raise EPLPulseEEGException("Couldn't open ActiveWire Board")

    if board.setBinaryPinDirections_("1111111111111111") == False:
        raise EPLPulseEEGException("Couldn't set pin directions")
    setState(False) #force the board to always start low
    
def closePort():
    global board
    board.closeBoard()
    board=None

def setState(state):
    global board
    if state:
        ret=board.writeBinaryData_length_("1111111111111111",2)
    else:
        ret=board.writeBinaryData_length_("0000000000000000",2)

    if not ret:
        raise EPLPulseEEGException("Error writing to the Activewireboard")

def setSignal(state, signal):
    global board
    if state:
        ret=board.writeBinaryData_length_(signal, 2)
    else:
        ret=board.writeBinaryData_length_("0000000000000000",2)

    if not ret:
        raise EPLPulseEEGException("Error writing to the Activewireboard")