Skip to content
This repository was archived by the owner on Nov 23, 2019. It is now read-only.

Commit 166b5e4

Browse files
committed
Use the new 3.16.7-ckt3-ev3dev1 version api
As test the large motor doesn't work :( Update readme
1 parent 7270ae4 commit 166b5e4

File tree

7 files changed

+47
-62
lines changed

7 files changed

+47
-62
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@ Program Lego Mindstorms EV3 using Python on ev3dev
66
## What you need
77

88

9-
You need a working [ev3dev](https://github.com/mindboards/ev3dev) on your ev3 and have a ssh session. Please reference the [ev3dev wiki](http://www.ev3dev.org/docs/getting-started/) to burn such system.
10-
Current python-ev3 is developed on [ev3dev-jessie-2014-10-07](https://github.com/mindboards/ev3dev/releases/tag/ev3dev-jessie-2014-10-07)
9+
You need a working [ev3dev](https://github.com/mindboards/ev3dev) on your ev3 and have a ssh session. Please reference the [ev3dev site](http://www.ev3dev.org/docs/getting-started/) to burn such system.
10+
Current python-ev3 is developed on [ev3dev-jessie-2014-12-01](https://github.com/ev3dev/ev3dev/releases/tag/ev3dev-jessie-2014-12-01)
1111

1212
## Both python 2.7 and python 3.4 are supported
1313
python-ev3 is tested on the ev3-dev in python2.7 and python3.4.
14+
I have no all lego devices, so if there's something wrong or not working, please file an issue or create a pull request. I'm quite happy to receive more devices code.
1415

1516
## virtualenv
1617
Current python-ev3 is not stable enough, virtualenv is recommend. Below examples are in virtualenv. However, python-ev3 should work in a native python environment.

ev3/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
__all__ = ['ev3dev', 'lego','mindsensors']
22

3-
import ev3dev
4-
import lego
5-
import mindsensors
3+
from ev3 import ev3dev
4+
from ev3 import lego
5+
from ev3 import mindsensors

ev3/ev3dev.py

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,12 @@
1010

1111
class NoSuchSensorError(Exception):
1212

13-
def __init__(self, port, type_id=None, name=None):
13+
def __init__(self, port, name=None):
1414
self.port = port
15-
self.type_id = type_id
1615
self.name =name
1716

1817
def __str__(self):
19-
return "No such sensor port=%d type_id=%d name=%s" % (self.port, self.type_id, self.name)
18+
return "No such sensor port=%d name=%s" % (self.port, self.name)
2019

2120

2221
class NoSuchMotorError(Exception):
@@ -191,7 +190,6 @@ def write_value(self, name, value):
191190
modes={'read_only': True},
192191
name={'read_only': True},
193192
port_name={'read_only': True},
194-
type_id={'read_only': True, 'property_type': Ev3IntType},
195193
uevent={'read_only': True},
196194
units={'read_only': True},
197195
value0={'read_only': True, 'property_type': Ev3IntType},
@@ -205,9 +203,8 @@ def write_value(self, name, value):
205203
)
206204
class LegoSensor(Ev3Dev):
207205

208-
def __init__(self, port=-1, type_id=-1, name=None):
206+
def __init__(self, port=-1, name=None):
209207
Ev3Dev.__init__(self)
210-
type_id = int(type_id)
211208
sensor_existing = False
212209
if (port > 0):
213210
self.port = port
@@ -218,17 +215,8 @@ def __init__(self, port=-1, type_id=-1, name=None):
218215
self.sys_path = os.path.dirname(p)
219216
sensor_existing = True
220217
break
221-
if (len(glob.glob('/sys/class/lego-sensor/sensor*/type_id')) >0 and type_id > 0 and port == -1):
222-
for p in glob.glob('/sys/class/lego-sensor/sensor*/type_id'):
223-
with open(p) as f:
224-
value = int(f.read().strip())
225-
if (value == type_id):
226-
self.sys_path = os.path.dirname(p)
227-
self.port = int(self.port_name[2:])
228-
sensor_existing = True
229-
break
230-
if (len(glob.glob('/sys/class/lego-sensor/sensor*/name')) >0 and name !=None and port == -1):
231-
for p in glob.glob('/sys/class/lego-sensor/sensor*/name'):
218+
if (len(glob.glob('/sys/class/lego-sensor/sensor*/driver_name')) >0 and name !=None and port == -1):
219+
for p in glob.glob('/sys/class/lego-sensor/sensor*/driver_name'):
232220
with open(p) as f:
233221
value = f.read().strip()
234222
if (name in value):
@@ -237,7 +225,7 @@ def __init__(self, port=-1, type_id=-1, name=None):
237225
sensor_existing = True
238226
break
239227
if (not sensor_existing):
240-
raise NoSuchSensorError(port, type_id, name)
228+
raise NoSuchSensorError(port, name)
241229
self._mode = self.read_value('mode')
242230

243231
@property

ev3/lego.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
from ev3dev import LegoSensor, Motor
1+
from .ev3dev import LegoSensor, Motor
22

33

44
class TouchSensor(LegoSensor):
55

66
def __init__(self, port=-1):
77
#Both lego-nxt-touch and lego-ev3-touch support auto
8-
LegoSensor.__init__(self, port, type_id=16, name='auto')
8+
LegoSensor.__init__(self, port, name='lego-ev3-touch')
99

1010
@property
1111
def is_pushed(self):
@@ -15,7 +15,7 @@ def is_pushed(self):
1515
class LightSensor(LegoSensor):
1616

1717
def __init__(self, port=-1):
18-
LegoSensor.__init__(self, port, type_id=1, name='lego-nxt-light')
18+
LegoSensor.__init__(self, port, name='lego-nxt-light')
1919

2020
@property
2121
def reflect(self):
@@ -32,7 +32,7 @@ def ambient(self):
3232
class SoundSensor(LegoSensor):
3333

3434
def __init__(self, port=-1):
35-
LegoSensor.__init__(self, port, type_id=1, name='nxt-analog')
35+
LegoSensor.__init__(self, port, name='nxt-analog')
3636

3737
@property
3838
def db(self):
@@ -51,7 +51,7 @@ class ColorSensor(LegoSensor):
5151
'yellow', 'red', 'white', 'brown')
5252

5353
def __init__(self, port=-1):
54-
LegoSensor.__init__(self, port, type_id=29, name='ev3-uart-29')
54+
LegoSensor.__init__(self, port, name='ev3-uart-29')
5555

5656
@property
5757
def rgb(self):
@@ -82,7 +82,7 @@ def ref_raw(self):
8282
class InfraredSensor(LegoSensor):
8383

8484
def __init__(self, port=-1):
85-
LegoSensor.__init__(self, port, type_id=33, name='ev3-uart-33')
85+
LegoSensor.__init__(self, port, name='ev3-uart-33')
8686

8787
@property
8888
def remote(self):
@@ -111,7 +111,7 @@ def seek(self):
111111
class GyroSensor(LegoSensor):
112112

113113
def __init__(self, port=-1):
114-
LegoSensor.__init__(self, port, type_id=32, name='ev3-uart-32')
114+
LegoSensor.__init__(self, port, name='ev3-uart-32')
115115

116116
@property
117117
def ang(self):
@@ -132,7 +132,7 @@ def ang_and_rate(self):
132132
class UltrasonicSensor(LegoSensor):
133133

134134
def __init__(self, port=-1):
135-
LegoSensor.__init__(self, port, type_id=30, name='ev3-uart-30')
135+
LegoSensor.__init__(self, port, name='ev3-uart-30')
136136

137137
@property
138138
def dist_cm(self):

ev3/mindsensors.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,16 +118,16 @@ def put_data(self,v):
118118

119119
# turns all leds on
120120
def led_all_on(self):
121-
self.put_data(0x00)
122-
121+
self.put_data(0x00)
122+
123123
# turns all leds off
124124
def led_all_off(self):
125-
self.put_data(0xff)
125+
self.put_data(0xff)
126126

127127
# turns a specific led on. leds are indexed 1..8
128128
def led_on(self, num):
129-
self.put_data(self.val & (0xff - (1<<(num-1))))
129+
self.put_data(self.val & (0xff - (1<<(num-1))))
130130

131-
# turns a specific led off. leds are indexed 1..8
131+
# turns a specific led off. leds are indexed 1..8
132132
def led_off(self, num):
133-
self.put_data(self.val | (1<<(num-1)))
133+
self.put_data(self.val | (1<<(num-1)))

test/test_ev3_legosensor.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from ev3.ev3dev import LegoSensor
2+
import unittest
3+
from util import get_input
4+
import glob
5+
6+
class TestLegoSensor(unittest.TestCase):
7+
8+
def test_LegoSensor(self):
9+
get_input('Attach a Msensor on port 1 then continue')
10+
d = LegoSensor(port=1)
11+
print(d.mode)
12+
print(d.port)
13+
if (len(glob.glob('/sys/class/lego-sensor/sensor*/name')) >0):
14+
name = d.name
15+
print(name)
16+
d = LegoSensor(name=name)
17+
print(d.mode)
18+
print(d.port)
19+
20+
if __name__ == '__main__':
21+
unittest.main()

test/test_ev3_msensor.py

Lines changed: 0 additions & 25 deletions
This file was deleted.

0 commit comments

Comments
 (0)