OSDN Git Service

lejos_NXJ_win32_0_5_0beta.zip
[nxt-jsp/lejos_nxj.git] / nxtOSEK / lejos_nxj / src / java / classes / lejos / nxt / RCXRemoteMotorPort.java
1 package lejos.nxt;\r
2 \r
3 /**\r
4  * Supports a motor connected to a remote RCX via a mindsensord NRLink adapter\r
5  * \r
6  * @author Lawrie Griffiths\r
7  *\r
8  */\r
9 public class RCXRemoteMotorPort implements BasicMotorPort {\r
10         private RCXLink link;\r
11         private int id;\r
12         private boolean started = false;\r
13         private int oldPower = -1;\r
14         \r
15         public RCXRemoteMotorPort(RCXLink link, int id) {\r
16                 this.link = link;\r
17                 this.id = id;\r
18         }\r
19         public void controlMotor(int power, int mode) {\r
20                 //LCD.drawInt(id, 0, 0);\r
21                 //LCD.drawInt(power,4,0,1);\r
22                 //LCD.drawInt(mode,0,2);\r
23                 //LCD.refresh();\r
24                 \r
25                 int power7 = (int) (power/12.5);\r
26                 \r
27                 if (power7 > 7) power7 = 7;\r
28                                 \r
29                 if ((mode == 1 || mode == 2) && !started) {\r
30                         link.startMotor(id);\r
31                         started = true;\r
32                         sleep();\r
33                 } else started = false;\r
34                 \r
35                 if (power != oldPower) {\r
36                         link.setMotorPower(id, power7);\r
37                         sleep();\r
38                 }\r
39                 \r
40                 if (mode == 1) link.forward(id);\r
41                 else if (mode == 2) link.backward(id);\r
42                 else if (mode == 3) link.stopMotor(id);\r
43                 else if (mode == 4) link.fltMotor(id);\r
44                 \r
45                 oldPower = power;\r
46         }\r
47         \r
48         private void sleep() {\r
49                 try {\r
50                         Thread.sleep(50);\r
51                 } catch (InterruptedException e) {}\r
52         }\r
53         \r
54         public void setPWMMode(int mode) {\r
55         }\r
56 }\r