@@ -1362,80 +1362,84 @@ private void SendData(object obj)
1362
1362
for ( int i = 0 ; i < data . Count ; i ++ )
1363
1363
{
1364
1364
short id = data [ i ] . ID ;
1365
- byte [ ] dt = BitConverter . GetBytes ( id ) ;
1366
- sendBuffer [ j ++ ] = dt [ 0 ] ;
1367
- sendBuffer [ j ++ ] = dt [ 1 ] ;
1368
- switch ( _list [ GetItemProperties ( id ) ] . DataType )
1365
+ var propid = GetItemProperties ( id ) ;
1366
+ if ( propid >= 0 && propid < _list . Count )
1369
1367
{
1370
- case DataType . BOOL :
1371
- sendBuffer [ j ++ ] = 1 ;
1372
- sendBuffer [ j ++ ] = data [ i ] . Value . Boolean ? ( byte ) 1 : ( byte ) 0 ;
1373
- break ;
1374
- case DataType . BYTE :
1375
- sendBuffer [ j ++ ] = 1 ;
1376
- sendBuffer [ j ++ ] = data [ i ] . Value . Byte ;
1377
- break ;
1378
- case DataType . WORD :
1379
- {
1380
- sendBuffer [ j ++ ] = 2 ;
1381
- byte [ ] bt = BitConverter . GetBytes ( data [ i ] . Value . Word ) ;
1382
- sendBuffer [ j ++ ] = bt [ 0 ] ;
1383
- sendBuffer [ j ++ ] = bt [ 1 ] ;
1384
- }
1385
- break ;
1386
- case DataType . SHORT :
1387
- {
1388
- sendBuffer [ j ++ ] = 2 ;
1389
- byte [ ] bt = BitConverter . GetBytes ( data [ i ] . Value . Int16 ) ;
1390
- sendBuffer [ j ++ ] = bt [ 0 ] ;
1391
- sendBuffer [ j ++ ] = bt [ 1 ] ;
1392
- }
1393
- break ;
1394
- case DataType . DWORD :
1395
- {
1396
- sendBuffer [ j ++ ] = 4 ;
1397
- byte [ ] bt = BitConverter . GetBytes ( data [ i ] . Value . DWord ) ;
1398
- sendBuffer [ j ++ ] = bt [ 0 ] ;
1399
- sendBuffer [ j ++ ] = bt [ 1 ] ;
1400
- sendBuffer [ j ++ ] = bt [ 2 ] ;
1401
- sendBuffer [ j ++ ] = bt [ 3 ] ;
1402
- }
1403
- break ;
1404
- case DataType . INT :
1405
- {
1406
- sendBuffer [ j ++ ] = 4 ;
1407
- byte [ ] bt = BitConverter . GetBytes ( data [ i ] . Value . Int32 ) ;
1408
- sendBuffer [ j ++ ] = bt [ 0 ] ;
1409
- sendBuffer [ j ++ ] = bt [ 1 ] ;
1410
- sendBuffer [ j ++ ] = bt [ 2 ] ;
1411
- sendBuffer [ j ++ ] = bt [ 3 ] ;
1412
- }
1413
- break ;
1414
- case DataType . FLOAT :
1415
- {
1416
- sendBuffer [ j ++ ] = 4 ;
1417
- byte [ ] bt = BitConverter . GetBytes ( data [ i ] . Value . Single ) ;
1418
- sendBuffer [ j ++ ] = bt [ 0 ] ;
1419
- sendBuffer [ j ++ ] = bt [ 1 ] ;
1420
- sendBuffer [ j ++ ] = bt [ 2 ] ;
1421
- sendBuffer [ j ++ ] = bt [ 3 ] ;
1422
- }
1423
- break ;
1424
- case DataType . STR :
1425
- {
1426
- byte [ ] bt = Encoding . ASCII . GetBytes ( this [ data [ i ] . ID ] . ToString ( ) ) ;
1427
- sendBuffer [ j ++ ] = ( byte ) bt . Length ;
1428
- for ( int k = 0 ; k < bt . Length ; k ++ )
1368
+ byte [ ] dt = BitConverter . GetBytes ( id ) ;
1369
+ sendBuffer [ j ++ ] = dt [ 0 ] ;
1370
+ sendBuffer [ j ++ ] = dt [ 1 ] ;
1371
+ switch ( _list [ propid ] . DataType )
1372
+ {
1373
+ case DataType . BOOL :
1374
+ sendBuffer [ j ++ ] = 1 ;
1375
+ sendBuffer [ j ++ ] = data [ i ] . Value . Boolean ? ( byte ) 1 : ( byte ) 0 ;
1376
+ break ;
1377
+ case DataType . BYTE :
1378
+ sendBuffer [ j ++ ] = 1 ;
1379
+ sendBuffer [ j ++ ] = data [ i ] . Value . Byte ;
1380
+ break ;
1381
+ case DataType . WORD :
1429
1382
{
1430
- sendBuffer [ j ++ ] = bt [ k ] ;
1383
+ sendBuffer [ j ++ ] = 2 ;
1384
+ byte [ ] bt = BitConverter . GetBytes ( data [ i ] . Value . Word ) ;
1385
+ sendBuffer [ j ++ ] = bt [ 0 ] ;
1386
+ sendBuffer [ j ++ ] = bt [ 1 ] ;
1431
1387
}
1432
- }
1433
- break ;
1434
- default :
1435
- break ;
1388
+ break ;
1389
+ case DataType . SHORT :
1390
+ {
1391
+ sendBuffer [ j ++ ] = 2 ;
1392
+ byte [ ] bt = BitConverter . GetBytes ( data [ i ] . Value . Int16 ) ;
1393
+ sendBuffer [ j ++ ] = bt [ 0 ] ;
1394
+ sendBuffer [ j ++ ] = bt [ 1 ] ;
1395
+ }
1396
+ break ;
1397
+ case DataType . DWORD :
1398
+ {
1399
+ sendBuffer [ j ++ ] = 4 ;
1400
+ byte [ ] bt = BitConverter . GetBytes ( data [ i ] . Value . DWord ) ;
1401
+ sendBuffer [ j ++ ] = bt [ 0 ] ;
1402
+ sendBuffer [ j ++ ] = bt [ 1 ] ;
1403
+ sendBuffer [ j ++ ] = bt [ 2 ] ;
1404
+ sendBuffer [ j ++ ] = bt [ 3 ] ;
1405
+ }
1406
+ break ;
1407
+ case DataType . INT :
1408
+ {
1409
+ sendBuffer [ j ++ ] = 4 ;
1410
+ byte [ ] bt = BitConverter . GetBytes ( data [ i ] . Value . Int32 ) ;
1411
+ sendBuffer [ j ++ ] = bt [ 0 ] ;
1412
+ sendBuffer [ j ++ ] = bt [ 1 ] ;
1413
+ sendBuffer [ j ++ ] = bt [ 2 ] ;
1414
+ sendBuffer [ j ++ ] = bt [ 3 ] ;
1415
+ }
1416
+ break ;
1417
+ case DataType . FLOAT :
1418
+ {
1419
+ sendBuffer [ j ++ ] = 4 ;
1420
+ byte [ ] bt = BitConverter . GetBytes ( data [ i ] . Value . Single ) ;
1421
+ sendBuffer [ j ++ ] = bt [ 0 ] ;
1422
+ sendBuffer [ j ++ ] = bt [ 1 ] ;
1423
+ sendBuffer [ j ++ ] = bt [ 2 ] ;
1424
+ sendBuffer [ j ++ ] = bt [ 3 ] ;
1425
+ }
1426
+ break ;
1427
+ case DataType . STR :
1428
+ {
1429
+ byte [ ] bt = Encoding . ASCII . GetBytes ( this [ data [ i ] . ID ] . ToString ( ) ) ;
1430
+ sendBuffer [ j ++ ] = ( byte ) bt . Length ;
1431
+ for ( int k = 0 ; k < bt . Length ; k ++ )
1432
+ {
1433
+ sendBuffer [ j ++ ] = bt [ k ] ;
1434
+ }
1435
+ }
1436
+ break ;
1437
+ default :
1438
+ break ;
1439
+ }
1440
+ Array . Copy ( BitConverter . GetBytes ( ( data [ i ] . TimeStamp == DateTime . MinValue ? DateTime . Now : data [ i ] . TimeStamp ) . ToFileTime ( ) ) , 0 , sendBuffer , j , 8 ) ;
1441
+ j += 8 ;
1436
1442
}
1437
- Array . Copy ( BitConverter . GetBytes ( ( data [ i ] . TimeStamp == DateTime . MinValue ? DateTime . Now : data [ i ] . TimeStamp ) . ToFileTime ( ) ) , 0 , sendBuffer , j , 8 ) ;
1438
- j += 8 ;
1439
1443
}
1440
1444
byte [ ] dt1 = BitConverter . GetBytes ( j ) ;
1441
1445
sendBuffer [ 3 ] = dt1 [ 0 ] ;
0 commit comments