1
1
function Module ( ) {
2
2
this . tx_d = new Array ( 28 ) ;
3
3
this . rx_d56 = new Array ( 56 ) ;
4
+ this . rx_setting = new Array ( 31 ) ;
4
5
this . rx_dtest = new Array ( 512 ) ;
5
6
6
7
this . sensordata = {
@@ -47,7 +48,14 @@ function Module() {
47
48
dot5 : 0 ,
48
49
dot6 : 0 ,
49
50
dot7 : 0 ,
50
- dot8 : 0
51
+ dot8 : 0 ,
52
+ command : 10 ,
53
+ trim : 0 ,
54
+ pgain : 0 ,
55
+ igain : 0 ,
56
+ dgain : 0 ,
57
+ version : 0 ,
58
+ cnt : 0
51
59
} ;
52
60
53
61
for ( var i = 0 ; i < 56 ; ++ i ) {
@@ -72,7 +80,15 @@ var ALTINO = {
72
80
DOT5 : 'dot5' ,
73
81
DOT6 : 'dot6' ,
74
82
DOT7 : 'dot7' ,
75
- DOT8 : 'dot8'
83
+ DOT8 : 'dot8' ,
84
+ COMMAND : 'command' ,
85
+ TRIM : 'trim' ,
86
+ PGAIN : 'pgain' ,
87
+ IGAIN : 'igain' ,
88
+ DGAIN : 'dgain' ,
89
+ VERSION : 'version' ,
90
+ SETTING : 'setting' ,
91
+ CNT : 'cnt'
76
92
} ;
77
93
78
94
Module . prototype . init = function ( handler , config ) {
@@ -136,121 +152,93 @@ Module.prototype.checkInitialData = function(data, config) {
136
152
// 하드웨어 데이터 처리
137
153
Module . prototype . handleLocalData = function ( data ) { // data: Native Buffer
138
154
139
-
140
155
var buf = this . rx_d56 ;
156
+ var settingBuf = this . rx_setting ;
141
157
var rx_check_sum = 0 ;
142
158
var sensordata = this . sensordata ;
143
159
var buftest = this . rx_dtest ;
160
+ var motordata = this . motordata ;
144
161
145
162
for ( var i = 0 ; i < data . length ; i ++ ) {
146
163
var str = data [ i ] ;
147
- buftest [ i ] = parseInt ( str , 10 ) ;
148
- for ( var j = 0 ; j < 55 ; j ++ ) {
149
- buf [ j ] = buf [ j + 1 ] ;
164
+
165
+ if ( motordata . command == 252 ) {
166
+ settingBuf [ i ] = parseInt ( str , 10 ) ;
150
167
}
151
- buf [ 55 ] = buftest [ i ] ;
152
-
153
- if ( buf [ 0 ] === 2 && buf [ 55 ] === 3 && buf [ 1 ] === 56 ) {
154
-
155
- rx_check_sum = buf [ 0 ] ;
156
- rx_check_sum = rx_check_sum + buf [ 1 ] ;
157
- rx_check_sum = rx_check_sum + buf [ 3 ] ;
158
- rx_check_sum = rx_check_sum + buf [ 4 ] ;
159
- rx_check_sum = rx_check_sum + buf [ 5 ] ;
160
- rx_check_sum = rx_check_sum + buf [ 6 ] ;
161
- rx_check_sum = rx_check_sum + buf [ 7 ] ;
162
- rx_check_sum = rx_check_sum + buf [ 8 ] ;
163
- rx_check_sum = rx_check_sum + buf [ 9 ] ;
164
- rx_check_sum = rx_check_sum + buf [ 10 ] ;
165
- rx_check_sum = rx_check_sum + buf [ 11 ] ;
166
- rx_check_sum = rx_check_sum + buf [ 12 ] ;
167
- rx_check_sum = rx_check_sum + buf [ 13 ] ;
168
- rx_check_sum = rx_check_sum + buf [ 14 ] ;
169
- rx_check_sum = rx_check_sum + buf [ 15 ] ;
170
- rx_check_sum = rx_check_sum + buf [ 16 ] ;
171
- rx_check_sum = rx_check_sum + buf [ 17 ] ;
172
- rx_check_sum = rx_check_sum + buf [ 18 ] ;
173
- rx_check_sum = rx_check_sum + buf [ 19 ] ;
174
- rx_check_sum = rx_check_sum + buf [ 20 ] ;
175
- rx_check_sum = rx_check_sum + buf [ 21 ] ;
176
- rx_check_sum = rx_check_sum + buf [ 22 ] ;
177
- rx_check_sum = rx_check_sum + buf [ 23 ] ;
178
- rx_check_sum = rx_check_sum + buf [ 24 ] ;
179
- rx_check_sum = rx_check_sum + buf [ 25 ] ;
180
- rx_check_sum = rx_check_sum + buf [ 26 ] ;
181
- rx_check_sum = rx_check_sum + buf [ 27 ] ;
182
- rx_check_sum = rx_check_sum + buf [ 28 ] ;
183
- rx_check_sum = rx_check_sum + buf [ 29 ] ;
184
- rx_check_sum = rx_check_sum + buf [ 30 ] ;
185
- rx_check_sum = rx_check_sum + buf [ 31 ] ;
186
- rx_check_sum = rx_check_sum + buf [ 32 ] ;
187
- rx_check_sum = rx_check_sum + buf [ 33 ] ;
188
- rx_check_sum = rx_check_sum + buf [ 34 ] ;
189
- rx_check_sum = rx_check_sum + buf [ 35 ] ;
190
- rx_check_sum = rx_check_sum + buf [ 36 ] ;
191
- rx_check_sum = rx_check_sum + buf [ 37 ] ;
192
- rx_check_sum = rx_check_sum + buf [ 38 ] ;
193
- rx_check_sum = rx_check_sum + buf [ 39 ] ;
194
- rx_check_sum = rx_check_sum + buf [ 40 ] ;
195
- rx_check_sum = rx_check_sum + buf [ 41 ] ;
196
- rx_check_sum = rx_check_sum + buf [ 42 ] ;
197
- rx_check_sum = rx_check_sum + buf [ 43 ] ;
198
- rx_check_sum = rx_check_sum + buf [ 44 ] ;
199
- rx_check_sum = rx_check_sum + buf [ 45 ] ;
200
- rx_check_sum = rx_check_sum + buf [ 46 ] ;
201
- rx_check_sum = rx_check_sum + buf [ 47 ] ;
202
- rx_check_sum = rx_check_sum + buf [ 48 ] ;
203
- rx_check_sum = rx_check_sum + buf [ 49 ] ;
204
- rx_check_sum = rx_check_sum + buf [ 50 ] ;
205
- rx_check_sum = rx_check_sum + buf [ 51 ] ;
206
- rx_check_sum = rx_check_sum + buf [ 52 ] ;
207
- rx_check_sum = rx_check_sum + buf [ 53 ] ;
208
- rx_check_sum = rx_check_sum + buf [ 54 ] ;
209
- rx_check_sum = rx_check_sum + buf [ 55 ] ;
210
-
211
- rx_check_sum = rx_check_sum % 256 ;
212
-
213
- if ( rx_check_sum === buf [ 2 ] ) {
214
-
215
- sensordata . ir1 = buf [ 7 ] * 256 + buf [ 8 ] ; //ir1
216
- sensordata . ir2 = buf [ 9 ] * 256 + buf [ 10 ] ; //ir2
217
- sensordata . ir3 = buf [ 11 ] * 256 + buf [ 12 ] ; //ir3
218
- sensordata . ir4 = buf [ 13 ] * 256 + buf [ 14 ] ; //ir4
219
- sensordata . ir5 = buf [ 15 ] * 256 + buf [ 16 ] ; //ir5
220
- sensordata . ir6 = buf [ 17 ] * 256 + buf [ 18 ] ; //ir6
221
-
222
- sensordata . tor1 = buf [ 19 ] * 256 + buf [ 20 ] ; //right torque
223
- sensordata . tor2 = buf [ 21 ] * 256 + buf [ 22 ] ; //left torque
224
-
225
- sensordata . tem = buf [ 49 ] * 256 + buf [ 50 ] ; //temperature
226
-
227
- sensordata . cds = buf [ 43 ] * 256 + buf [ 44 ] ; //cds
228
-
229
- sensordata . accx = buf [ 25 ] * 256 + buf [ 26 ] ; //acc x
230
- sensordata . accy = buf [ 27 ] * 256 + buf [ 28 ] ; //acc y
231
- sensordata . accz = buf [ 29 ] * 256 + buf [ 30 ] ; //acc z
232
-
233
- sensordata . magx = buf [ 31 ] * 256 + buf [ 32 ] ; //mag x
234
- sensordata . magy = buf [ 33 ] * 256 + buf [ 34 ] ; //mag y
235
- sensordata . magz = buf [ 35 ] * 256 + buf [ 36 ] ; //mag z
236
-
237
- sensordata . stvar = buf [ 45 ] * 256 + buf [ 46 ] ; //steering var
238
-
239
- sensordata . sttor = buf [ 23 ] * 256 + buf [ 24 ] ; //steering torque
240
-
241
- sensordata . bat = buf [ 47 ] * 256 + buf [ 48 ] ; //battery
242
-
243
- sensordata . remote = buf [ 51 ] ; //remote control
244
-
245
- sensordata . gyrox = buf [ 37 ] * 256 + buf [ 38 ] ; //gyro sensor x
246
- sensordata . gyroy = buf [ 39 ] * 256 + buf [ 40 ] ; //gyro sensor y
247
- sensordata . gyroz = buf [ 41 ] * 256 + buf [ 42 ] ; //gyro sensor z
248
- }
168
+ else {
169
+ buf [ i ] = parseInt ( str , 10 ) ;
170
+ }
171
+ }
249
172
173
+ if ( buf [ 0 ] === 2 && buf [ 55 ] === 3 && buf [ 1 ] === 56 ) {
174
+ for ( var i = 0 ; i < 56 ; i ++ ) {
175
+ if ( i != 2 ) rx_check_sum += buf [ i ] ;
250
176
}
251
177
252
- }
178
+ rx_check_sum = rx_check_sum % 256 ;
179
+
180
+ if ( rx_check_sum == buf [ 2 ] ) {
181
+
182
+ sensordata . ir1 = buf [ 7 ] * 256 + buf [ 8 ] ; //ir1
183
+ sensordata . ir2 = buf [ 9 ] * 256 + buf [ 10 ] ; //ir2
184
+ sensordata . ir3 = buf [ 11 ] * 256 + buf [ 12 ] ; //ir3
185
+ sensordata . ir4 = buf [ 13 ] * 256 + buf [ 14 ] ; //ir4
186
+ sensordata . ir5 = buf [ 15 ] * 256 + buf [ 16 ] ; //ir5
187
+ sensordata . ir6 = buf [ 17 ] * 256 + buf [ 18 ] ; //ir6
188
+
189
+ sensordata . tor1 = buf [ 19 ] * 256 + buf [ 20 ] ; //right torque
190
+ sensordata . tor2 = buf [ 21 ] * 256 + buf [ 22 ] ; //left torque
191
+
192
+ sensordata . tem = buf [ 49 ] * 256 + buf [ 50 ] ; //temperature
253
193
194
+ sensordata . cds = buf [ 43 ] * 256 + buf [ 44 ] ; //cds
195
+
196
+ sensordata . accx = buf [ 25 ] * 256 + buf [ 26 ] ; //acc x
197
+ sensordata . accy = buf [ 27 ] * 256 + buf [ 28 ] ; //acc y
198
+ sensordata . accz = buf [ 29 ] * 256 + buf [ 30 ] ; //acc z
199
+
200
+ sensordata . magx = buf [ 31 ] * 256 + buf [ 32 ] ; //mag x
201
+ sensordata . magy = buf [ 33 ] * 256 + buf [ 34 ] ; //mag y
202
+ sensordata . magz = buf [ 35 ] * 256 + buf [ 36 ] ; //mag z
203
+
204
+ sensordata . stvar = buf [ 45 ] * 256 + buf [ 46 ] ; //steering var
205
+
206
+ sensordata . sttor = buf [ 23 ] * 256 + buf [ 24 ] ; //steering torque
207
+
208
+ sensordata . bat = buf [ 47 ] * 256 + buf [ 48 ] ; //battery
209
+
210
+ sensordata . remote = buf [ 51 ] ; //remote control
211
+
212
+ sensordata . gyrox = buf [ 37 ] * 256 + buf [ 38 ] ; //gyro sensor x
213
+ sensordata . gyroy = buf [ 39 ] * 256 + buf [ 40 ] ; //gyro sensor y
214
+ sensordata . gyroz = buf [ 41 ] * 256 + buf [ 42 ] ; //gyro sensor z
215
+
216
+ motordata . cnt = 0 ;
217
+ }
218
+ buf . length = 0 ;
219
+
220
+ }
221
+
222
+ if ( settingBuf [ 0 ] === 2 && settingBuf [ 1 ] === 31 ) {
223
+
224
+ motordata . trim = settingBuf [ 5 ] ;
225
+ motordata . pgain = settingBuf [ 6 ] ;
226
+ motordata . igain = settingBuf [ 7 ] ;
227
+ motordata . dgain = settingBuf [ 8 ] ;
228
+ motordata . version = settingBuf [ 26 ] ;
229
+
230
+ if ( motordata . command == 252 ) {
231
+ if ( motordata . cnt == 0 ) {
232
+ this . tx_d . length = 0 ;
233
+ motordata . cnt += 1 ;
234
+ }
235
+ else if ( motordata . cnt == 1 ) {
236
+ this . tx_d . length = 0 ;
237
+ motordata . cnt += 1 ;
238
+ }
239
+ }
240
+ settingBuf . length = 0 ;
241
+ }
254
242
} ;
255
243
256
244
// Web Socket(엔트리)에 전달할 데이터
@@ -266,6 +254,15 @@ Module.prototype.handleRemoteData = function(handler) {
266
254
var motordata = this . motordata ;
267
255
var newValue ;
268
256
257
+ if ( handler . e ( ALTINO . COMMAND ) ) {
258
+
259
+ newValue = handler . read ( ALTINO . COMMAND ) ;
260
+
261
+ if ( motordata . command != newValue ) {
262
+ motordata . command = newValue ;
263
+ }
264
+ }
265
+
269
266
if ( handler . e ( ALTINO . RIGHT_WHEEL ) ) {
270
267
271
268
newValue = handler . read ( ALTINO . RIGHT_WHEEL ) ;
@@ -385,44 +382,100 @@ Module.prototype.handleRemoteData = function(handler) {
385
382
386
383
} ;
387
384
388
-
389
385
// 하드웨어에 전달할 데이터
390
386
Module . prototype . requestLocalData = function ( ) {
391
387
var motordata = this . motordata ;
392
388
var tx_d = this . tx_d ;
393
389
var u16_tx_check_sum = 0 ;
394
390
var u16_tx_cnt ;
395
- var u16_cnt = 27 ;
396
-
397
- tx_d [ 0 ] = 0x2 ;
398
- tx_d [ 1 ] = 28 ;
399
-
400
- tx_d [ 3 ] = 1 ;
401
- tx_d [ 4 ] = 10 ;
402
- tx_d [ 5 ] = motordata . steering ;
403
- tx_d [ 6 ] = motordata . rightmode ;
404
- tx_d [ 7 ] = ( motordata . rightmotor & 0xFF00 ) >> 8 ;
405
- tx_d [ 8 ] = motordata . rightmotor & 0xFF ;
406
- tx_d [ 9 ] = motordata . leftmode ;
407
- tx_d [ 10 ] = ( motordata . leftmotor & 0xFF00 ) >> 8 ;
408
- tx_d [ 11 ] = motordata . leftmotor & 0xFF ;
409
- tx_d [ 12 ] = motordata . ascii ;
410
- tx_d [ 13 ] = motordata . dot1 ;
411
- tx_d [ 14 ] = motordata . dot2 ;
412
- tx_d [ 15 ] = motordata . dot3 ;
413
- tx_d [ 16 ] = motordata . dot4 ;
414
- tx_d [ 17 ] = motordata . dot5 ;
415
- tx_d [ 18 ] = motordata . dot6 ;
416
- tx_d [ 19 ] = motordata . dot7 ;
417
- tx_d [ 20 ] = motordata . dot8 ;
418
- tx_d [ 21 ] = motordata . led2 | 0x01 ;
419
- tx_d [ 22 ] = motordata . note ;
420
- tx_d [ 23 ] = motordata . led ;
421
- tx_d [ 24 ] = 1 ;
422
- tx_d [ 25 ] = 0 ;
423
- tx_d [ 26 ] = 0 ;
424
- tx_d [ 27 ] = 0x3 ;
425
391
392
+ if ( motordata . command == 252 ) {
393
+ if ( motordata . cnt == 0 ) {
394
+ var u16_cnt = 21 ;
395
+
396
+ tx_d [ 0 ] = 0x2 ;
397
+ tx_d [ 1 ] = 22 ;
398
+
399
+ tx_d [ 3 ] = 1 ;
400
+ tx_d [ 4 ] = 252 ;
401
+ tx_d [ 5 ] = 0 ;
402
+ tx_d [ 6 ] = 0 ;
403
+ tx_d [ 7 ] = 0 ;
404
+ tx_d [ 8 ] = 0 ;
405
+ tx_d [ 9 ] = 0 ;
406
+ tx_d [ 10 ] = 0 ;
407
+ tx_d [ 11 ] = 0 ;
408
+ tx_d [ 12 ] = 0 ;
409
+ tx_d [ 13 ] = 0 ;
410
+ tx_d [ 14 ] = 0 ;
411
+ tx_d [ 15 ] = 0 ;
412
+ tx_d [ 16 ] = 0 ;
413
+ tx_d [ 17 ] = 0 ;
414
+ tx_d [ 18 ] = 0 ;
415
+ tx_d [ 19 ] = 0 ;
416
+ tx_d [ 20 ] = 0 ;
417
+ tx_d [ 21 ] = 0x3 ;
418
+ }
419
+ else if ( motordata . cnt == 1 ) {
420
+ var u16_cnt = 21 ;
421
+
422
+ tx_d [ 0 ] = 0x2 ;
423
+ tx_d [ 1 ] = 22 ;
424
+
425
+ tx_d [ 3 ] = 1 ;
426
+ tx_d [ 4 ] = 252 ;
427
+ tx_d [ 5 ] = 1 ;
428
+ tx_d [ 6 ] = motordata . trim ;
429
+ tx_d [ 7 ] = motordata . pgain ;
430
+ tx_d [ 8 ] = motordata . igain ;
431
+ tx_d [ 9 ] = motordata . dgain ;
432
+ tx_d [ 10 ] = 0 ;
433
+ tx_d [ 11 ] = 0 ;
434
+ tx_d [ 12 ] = 0 ;
435
+ tx_d [ 13 ] = 0 ;
436
+ tx_d [ 14 ] = 0 ;
437
+ tx_d [ 15 ] = 0 ;
438
+ tx_d [ 16 ] = 0 ;
439
+ tx_d [ 17 ] = motordata . version ;
440
+ tx_d [ 18 ] = 0 ;
441
+ tx_d [ 19 ] = 0 ;
442
+ tx_d [ 20 ] = 0 ;
443
+ tx_d [ 21 ] = 0x3 ;
444
+ }
445
+ }
446
+ else {
447
+ motordata . cnt = 0 ;
448
+ var u16_cnt = 27 ;
449
+
450
+ tx_d [ 0 ] = 0x2 ;
451
+ tx_d [ 1 ] = 28 ;
452
+
453
+ tx_d [ 3 ] = 1 ;
454
+ tx_d [ 4 ] = 10 ;
455
+ tx_d [ 5 ] = motordata . steering ;
456
+ tx_d [ 6 ] = motordata . rightmode ;
457
+ tx_d [ 7 ] = ( motordata . rightmotor & 0xFF00 ) >> 8 ;
458
+ tx_d [ 8 ] = motordata . rightmotor & 0xFF ;
459
+ tx_d [ 9 ] = motordata . leftmode ;
460
+ tx_d [ 10 ] = ( motordata . leftmotor & 0xFF00 ) >> 8 ;
461
+ tx_d [ 11 ] = motordata . leftmotor & 0xFF ;
462
+ tx_d [ 12 ] = motordata . ascii ;
463
+ tx_d [ 13 ] = motordata . dot1 ;
464
+ tx_d [ 14 ] = motordata . dot2 ;
465
+ tx_d [ 15 ] = motordata . dot3 ;
466
+ tx_d [ 16 ] = motordata . dot4 ;
467
+ tx_d [ 17 ] = motordata . dot5 ;
468
+ tx_d [ 18 ] = motordata . dot6 ;
469
+ tx_d [ 19 ] = motordata . dot7 ;
470
+ tx_d [ 20 ] = motordata . dot8 ;
471
+ tx_d [ 21 ] = motordata . led2 | 0x01 ;
472
+ tx_d [ 22 ] = motordata . note ;
473
+ tx_d [ 23 ] = motordata . led ;
474
+ tx_d [ 24 ] = 1 ;
475
+ tx_d [ 25 ] = 0 ;
476
+ tx_d [ 26 ] = 0 ;
477
+ tx_d [ 27 ] = 0x3 ;
478
+ }
426
479
427
480
u16_tx_check_sum = u16_tx_check_sum + tx_d [ 1 ] ;
428
481
for ( u16_tx_cnt = 3 ; u16_tx_cnt <= u16_cnt ; u16_tx_cnt ++ ) {
@@ -432,7 +485,6 @@ Module.prototype.requestLocalData = function() {
432
485
433
486
434
487
tx_d [ 2 ] = u16_tx_check_sum ;
435
-
436
488
return tx_d ;
437
489
} ;
438
490
0 commit comments