Skip to content

Commit 3ff1c32

Browse files
author
AJ Keller
authored
Merge pull request #71 from chrisjz/python3
Add Python 3 compatibility
2 parents 8661390 + 3d29c55 commit 3ff1c32

File tree

11 files changed

+59
-38
lines changed

11 files changed

+59
-38
lines changed

openbci/plugins/udp_server.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77
- websockets
88
"""
99

10-
import cPickle as pickle
10+
try:
11+
import cPickle as pickle
12+
except ImportError:
13+
import _pickle as pickle
1114
import json
1215
import socket
1316

openbci/utils/parse.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import time
22
import struct
33

4-
from constants import Constants as k
4+
from openbci.utils.constants import Constants as k
55

66

77
class ParseRaw(object):
@@ -174,7 +174,10 @@ def transform_raw_data_packet_to_sample(self, raw_data):
174174
sample.packet_type = packet_type
175175
except BaseException as e:
176176
sample = OpenBCISample()
177-
sample.error = e.message
177+
if hasattr(e, 'message'):
178+
sample.error = e.message
179+
else:
180+
sample.error = e
178181
sample.valid = False
179182

180183
return sample

openbci/utils/ssdp.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,18 @@
1313
# limitations under the License.
1414

1515
import socket
16-
import httplib
17-
import StringIO
16+
try:
17+
import httplib
18+
except ImportError:
19+
import http.client
20+
try:
21+
from StringIO import StringIO
22+
except ImportError:
23+
from io import StringIO
1824

1925

2026
class SSDPResponse(object):
21-
class _FakeSocket(StringIO.StringIO):
27+
class _FakeSocket(StringIO):
2228
def makefile(self, *args, **kw):
2329
return self
2430

openbci/utils/utilities.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from constants import Constants as k
1+
from openbci.utils.constants import Constants as k
22

33

44
def make_tail_byte_from_packet_type(packet_type):

openbci/wifi.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ def handle_sample(sample):
2323
import re
2424
import socket
2525
import timeit
26-
import urllib2
26+
try:
27+
import urllib2
28+
except ImportError:
29+
import urllib
2730

2831
import requests
2932
import xmltodict
@@ -89,7 +92,7 @@ def __init__(self, ip_address=None, shield_name=None, sample_rate=None, log=True
8992

9093
# Intentionally bind to port 0
9194
self.local_wifi_server = WiFiShieldServer(self.local_ip_address, 0)
92-
self.local_wifi_server_port = self.local_wifi_server.getsockname()[1]
95+
self.local_wifi_server_port = self.local_wifi_server.socket.getsockname()[1]
9396
if self.log:
9497
print("Opened socket on %s:%d" % (self.local_ip_address, self.local_wifi_server_port))
9598

@@ -139,7 +142,7 @@ def connect(self):
139142
raise ValueError('self.ip_address cannot be None')
140143

141144
if self.log:
142-
print ("Init WiFi connection with IP: " + self.ip_address)
145+
print("Init WiFi connection with IP: " + self.ip_address)
143146

144147
"""
145148
Docs on these HTTP requests and more are found:
@@ -495,7 +498,7 @@ def handle_read(self):
495498
data = self.recv(3000) # 3000 is the max data the WiFi shield is allowed to send over TCP
496499
if len(data) > 2:
497500
if self.high_speed:
498-
packets = len(data)/33
501+
packets = int(len(data)/33)
499502
raw_data_packets = []
500503
for i in range(packets):
501504
raw_data_packets.append(bytearray(data[i * k.RAW_PACKET_SIZE: i * k.RAW_PACKET_SIZE + k.RAW_PACKET_SIZE]))
@@ -535,9 +538,9 @@ def handle_read(self):
535538
print("not a sample packet")
536539
except ValueError as e:
537540
print("failed to parse: %s" % data)
538-
print e
541+
print(e)
539542
except BaseException as e:
540-
print e
543+
print(e)
541544

542545

543546
class WiFiShieldServer(asyncore.dispatcher):
@@ -558,7 +561,7 @@ def handle_accept(self):
558561
pair = self.accept()
559562
if pair is not None:
560563
sock, addr = pair
561-
print 'Incoming connection from %s' % repr(addr)
564+
print('Incoming connection from %s' % repr(addr))
562565
self.handler = WiFiShieldHandler(sock, self.callback, high_speed=self.high_speed,
563566
parser=self.parser, daisy=self.daisy)
564567

scripts/socket_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from socketIO_client import SocketIO
22

33
def on_sample(*args):
4-
print args
4+
print(args)
55

66
socketIO = SocketIO('10.0.1.194', 8880)
77
socketIO.on('openbci', on_sample)

scripts/stream_data.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,10 @@ def run(self):
5353
elapsed_time = new_tick - self.tick
5454
current_samples_in = nb_samples_in
5555
current_samples_out = nb_samples_out
56-
print "--- at t: ", (new_tick - self.start_tick), " ---"
57-
print "elapsed_time: ", elapsed_time
58-
print "nb_samples_in: ", current_samples_in - self.nb_samples_in
59-
print "nb_samples_out: ", current_samples_out - self.nb_samples_out
56+
print("--- at t: ", (new_tick - self.start_tick), " ---")
57+
print("elapsed_time: ", elapsed_time)
58+
print("nb_samples_in: ", current_samples_in - self.nb_samples_in)
59+
print("nb_samples_out: ", current_samples_out - self.nb_samples_out)
6060
self.tick = new_tick
6161
self.nb_samples_in = nb_samples_in
6262
self.nb_samples_out = nb_samples_out
@@ -75,7 +75,7 @@ def streamData(sample):
7575
global last_id
7676
# TODO: duplicate packet if skipped to stay sync
7777
if sample.id != last_id + 1:
78-
print "time", tick, ": paquet skipped!"
78+
print("time", tick, ": paquet skipped!")
7979
if sample.id == 255:
8080
last_id = -1
8181
else:
@@ -109,10 +109,10 @@ def streamData(sample):
109109
# OK, it's a very rough interpolation
110110
interpol_values[i] = (last_values[i] + sample.channel_data[i]) / 2
111111
if DEBUG:
112-
print " --"
113-
print " last values: ", last_values
114-
print " interpolation: ", interpol_values
115-
print " current sample: ", sample.channel_data
112+
print(" --")
113+
print(" last values: ", last_values)
114+
print(" interpolation: ", interpol_values)
115+
print(" current sample: ", sample.channel_data)
116116
# send to clients interpolated sample
117117
# leftover_duplications = 0
118118
server.broadcast_values(interpol_values)

scripts/test.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55

66
def printData(sample):
77
#os.system('clear')
8-
print "----------------"
8+
print("----------------")
99
print("%f" %(sample.id))
10-
print sample.channel_data
11-
print sample.aux_data
12-
print "----------------"
10+
print(sample.channel_data)
11+
print(sample.aux_data)
12+
print("----------------")
1313

1414

1515

scripts/udp_client.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
"""A sample client for the OpenBCI UDP server."""
22

33
import argparse
4-
import cPickle as pickle
4+
try:
5+
import cPickle as pickle
6+
except ImportError:
7+
import _pickle as pickle
58
import json
69
import sys; sys.path.append('..') # help python find cyton.py relative to scripts folder
710
import socket
@@ -41,12 +44,12 @@ def start_listening(self, callback=None):
4144
if self.json:
4245
sample = json.loads(data)
4346
# In JSON mode we only recieve channel data.
44-
print data
47+
print(data)
4548
else:
4649
sample = pickle.loads(data)
4750
# Note that sample is an OpenBCISample object.
48-
print sample.id
49-
print sample.channel_data
51+
print(sample.id)
52+
print(sample.channel_data)
5053

5154

5255
args = parser.parse_args()

scripts/udp_server.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88
"""
99

1010
import argparse
11-
import cPickle as pickle
11+
try:
12+
import cPickle as pickle
13+
except ImportError:
14+
import _pickle as pickle
1215
import json
1316
import sys; sys.path.append('..') # help python find cyton.py relative to scripts folder
1417
from openbci import cyton as open_bci
@@ -49,7 +52,7 @@ def __init__(self, ip, port, json):
4952
self.ip = ip
5053
self.port = port
5154
self.json = json
52-
print "Selecting raw UDP streaming. IP: ", self.ip, ", port: ", str(self.port)
55+
print("Selecting raw UDP streaming. IP: ", self.ip, ", port: ", str(self.port))
5356
self.server = socket.socket(
5457
socket.AF_INET, # Internet
5558
socket.SOCK_DGRAM)

0 commit comments

Comments
 (0)