Skip to content

Commit 3709de4

Browse files
committed
udpate daservice
1 parent 9045dce commit 3709de4

File tree

2 files changed

+74
-70
lines changed

2 files changed

+74
-70
lines changed

SCADA/Example/BatchCoreTest.exe

0 Bytes
Binary file not shown.

SCADA/Program/BatchCoreService/DAService.cs

Lines changed: 74 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1362,80 +1362,84 @@ private void SendData(object obj)
13621362
for (int i = 0; i < data.Count; i++)
13631363
{
13641364
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)
13691367
{
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:
14291382
{
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];
14311387
}
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;
14361442
}
1437-
Array.Copy(BitConverter.GetBytes((data[i].TimeStamp == DateTime.MinValue ? DateTime.Now : data[i].TimeStamp).ToFileTime()), 0, sendBuffer, j, 8);
1438-
j += 8;
14391443
}
14401444
byte[] dt1 = BitConverter.GetBytes(j);
14411445
sendBuffer[3] = dt1[0];

0 commit comments

Comments
 (0)