HIK_IPCameraAPI.cs
948.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493
7494
7495
7496
7497
7498
7499
7500
7501
7502
7503
7504
7505
7506
7507
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585
7586
7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598
7599
7600
7601
7602
7603
7604
7605
7606
7607
7608
7609
7610
7611
7612
7613
7614
7615
7616
7617
7618
7619
7620
7621
7622
7623
7624
7625
7626
7627
7628
7629
7630
7631
7632
7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
7649
7650
7651
7652
7653
7654
7655
7656
7657
7658
7659
7660
7661
7662
7663
7664
7665
7666
7667
7668
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678
7679
7680
7681
7682
7683
7684
7685
7686
7687
7688
7689
7690
7691
7692
7693
7694
7695
7696
7697
7698
7699
7700
7701
7702
7703
7704
7705
7706
7707
7708
7709
7710
7711
7712
7713
7714
7715
7716
7717
7718
7719
7720
7721
7722
7723
7724
7725
7726
7727
7728
7729
7730
7731
7732
7733
7734
7735
7736
7737
7738
7739
7740
7741
7742
7743
7744
7745
7746
7747
7748
7749
7750
7751
7752
7753
7754
7755
7756
7757
7758
7759
7760
7761
7762
7763
7764
7765
7766
7767
7768
7769
7770
7771
7772
7773
7774
7775
7776
7777
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787
7788
7789
7790
7791
7792
7793
7794
7795
7796
7797
7798
7799
7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830
7831
7832
7833
7834
7835
7836
7837
7838
7839
7840
7841
7842
7843
7844
7845
7846
7847
7848
7849
7850
7851
7852
7853
7854
7855
7856
7857
7858
7859
7860
7861
7862
7863
7864
7865
7866
7867
7868
7869
7870
7871
7872
7873
7874
7875
7876
7877
7878
7879
7880
7881
7882
7883
7884
7885
7886
7887
7888
7889
7890
7891
7892
7893
7894
7895
7896
7897
7898
7899
7900
7901
7902
7903
7904
7905
7906
7907
7908
7909
7910
7911
7912
7913
7914
7915
7916
7917
7918
7919
7920
7921
7922
7923
7924
7925
7926
7927
7928
7929
7930
7931
7932
7933
7934
7935
7936
7937
7938
7939
7940
7941
7942
7943
7944
7945
7946
7947
7948
7949
7950
7951
7952
7953
7954
7955
7956
7957
7958
7959
7960
7961
7962
7963
7964
7965
7966
7967
7968
7969
7970
7971
7972
7973
7974
7975
7976
7977
7978
7979
7980
7981
7982
7983
7984
7985
7986
7987
7988
7989
7990
7991
7992
7993
7994
7995
7996
7997
7998
7999
8000
8001
8002
8003
8004
8005
8006
8007
8008
8009
8010
8011
8012
8013
8014
8015
8016
8017
8018
8019
8020
8021
8022
8023
8024
8025
8026
8027
8028
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038
8039
8040
8041
8042
8043
8044
8045
8046
8047
8048
8049
8050
8051
8052
8053
8054
8055
8056
8057
8058
8059
8060
8061
8062
8063
8064
8065
8066
8067
8068
8069
8070
8071
8072
8073
8074
8075
8076
8077
8078
8079
8080
8081
8082
8083
8084
8085
8086
8087
8088
8089
8090
8091
8092
8093
8094
8095
8096
8097
8098
8099
8100
8101
8102
8103
8104
8105
8106
8107
8108
8109
8110
8111
8112
8113
8114
8115
8116
8117
8118
8119
8120
8121
8122
8123
8124
8125
8126
8127
8128
8129
8130
8131
8132
8133
8134
8135
8136
8137
8138
8139
8140
8141
8142
8143
8144
8145
8146
8147
8148
8149
8150
8151
8152
8153
8154
8155
8156
8157
8158
8159
8160
8161
8162
8163
8164
8165
8166
8167
8168
8169
8170
8171
8172
8173
8174
8175
8176
8177
8178
8179
8180
8181
8182
8183
8184
8185
8186
8187
8188
8189
8190
8191
8192
8193
8194
8195
8196
8197
8198
8199
8200
8201
8202
8203
8204
8205
8206
8207
8208
8209
8210
8211
8212
8213
8214
8215
8216
8217
8218
8219
8220
8221
8222
8223
8224
8225
8226
8227
8228
8229
8230
8231
8232
8233
8234
8235
8236
8237
8238
8239
8240
8241
8242
8243
8244
8245
8246
8247
8248
8249
8250
8251
8252
8253
8254
8255
8256
8257
8258
8259
8260
8261
8262
8263
8264
8265
8266
8267
8268
8269
8270
8271
8272
8273
8274
8275
8276
8277
8278
8279
8280
8281
8282
8283
8284
8285
8286
8287
8288
8289
8290
8291
8292
8293
8294
8295
8296
8297
8298
8299
8300
8301
8302
8303
8304
8305
8306
8307
8308
8309
8310
8311
8312
8313
8314
8315
8316
8317
8318
8319
8320
8321
8322
8323
8324
8325
8326
8327
8328
8329
8330
8331
8332
8333
8334
8335
8336
8337
8338
8339
8340
8341
8342
8343
8344
8345
8346
8347
8348
8349
8350
8351
8352
8353
8354
8355
8356
8357
8358
8359
8360
8361
8362
8363
8364
8365
8366
8367
8368
8369
8370
8371
8372
8373
8374
8375
8376
8377
8378
8379
8380
8381
8382
8383
8384
8385
8386
8387
8388
8389
8390
8391
8392
8393
8394
8395
8396
8397
8398
8399
8400
8401
8402
8403
8404
8405
8406
8407
8408
8409
8410
8411
8412
8413
8414
8415
8416
8417
8418
8419
8420
8421
8422
8423
8424
8425
8426
8427
8428
8429
8430
8431
8432
8433
8434
8435
8436
8437
8438
8439
8440
8441
8442
8443
8444
8445
8446
8447
8448
8449
8450
8451
8452
8453
8454
8455
8456
8457
8458
8459
8460
8461
8462
8463
8464
8465
8466
8467
8468
8469
8470
8471
8472
8473
8474
8475
8476
8477
8478
8479
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
8490
8491
8492
8493
8494
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
8505
8506
8507
8508
8509
8510
8511
8512
8513
8514
8515
8516
8517
8518
8519
8520
8521
8522
8523
8524
8525
8526
8527
8528
8529
8530
8531
8532
8533
8534
8535
8536
8537
8538
8539
8540
8541
8542
8543
8544
8545
8546
8547
8548
8549
8550
8551
8552
8553
8554
8555
8556
8557
8558
8559
8560
8561
8562
8563
8564
8565
8566
8567
8568
8569
8570
8571
8572
8573
8574
8575
8576
8577
8578
8579
8580
8581
8582
8583
8584
8585
8586
8587
8588
8589
8590
8591
8592
8593
8594
8595
8596
8597
8598
8599
8600
8601
8602
8603
8604
8605
8606
8607
8608
8609
8610
8611
8612
8613
8614
8615
8616
8617
8618
8619
8620
8621
8622
8623
8624
8625
8626
8627
8628
8629
8630
8631
8632
8633
8634
8635
8636
8637
8638
8639
8640
8641
8642
8643
8644
8645
8646
8647
8648
8649
8650
8651
8652
8653
8654
8655
8656
8657
8658
8659
8660
8661
8662
8663
8664
8665
8666
8667
8668
8669
8670
8671
8672
8673
8674
8675
8676
8677
8678
8679
8680
8681
8682
8683
8684
8685
8686
8687
8688
8689
8690
8691
8692
8693
8694
8695
8696
8697
8698
8699
8700
8701
8702
8703
8704
8705
8706
8707
8708
8709
8710
8711
8712
8713
8714
8715
8716
8717
8718
8719
8720
8721
8722
8723
8724
8725
8726
8727
8728
8729
8730
8731
8732
8733
8734
8735
8736
8737
8738
8739
8740
8741
8742
8743
8744
8745
8746
8747
8748
8749
8750
8751
8752
8753
8754
8755
8756
8757
8758
8759
8760
8761
8762
8763
8764
8765
8766
8767
8768
8769
8770
8771
8772
8773
8774
8775
8776
8777
8778
8779
8780
8781
8782
8783
8784
8785
8786
8787
8788
8789
8790
8791
8792
8793
8794
8795
8796
8797
8798
8799
8800
8801
8802
8803
8804
8805
8806
8807
8808
8809
8810
8811
8812
8813
8814
8815
8816
8817
8818
8819
8820
8821
8822
8823
8824
8825
8826
8827
8828
8829
8830
8831
8832
8833
8834
8835
8836
8837
8838
8839
8840
8841
8842
8843
8844
8845
8846
8847
8848
8849
8850
8851
8852
8853
8854
8855
8856
8857
8858
8859
8860
8861
8862
8863
8864
8865
8866
8867
8868
8869
8870
8871
8872
8873
8874
8875
8876
8877
8878
8879
8880
8881
8882
8883
8884
8885
8886
8887
8888
8889
8890
8891
8892
8893
8894
8895
8896
8897
8898
8899
8900
8901
8902
8903
8904
8905
8906
8907
8908
8909
8910
8911
8912
8913
8914
8915
8916
8917
8918
8919
8920
8921
8922
8923
8924
8925
8926
8927
8928
8929
8930
8931
8932
8933
8934
8935
8936
8937
8938
8939
8940
8941
8942
8943
8944
8945
8946
8947
8948
8949
8950
8951
8952
8953
8954
8955
8956
8957
8958
8959
8960
8961
8962
8963
8964
8965
8966
8967
8968
8969
8970
8971
8972
8973
8974
8975
8976
8977
8978
8979
8980
8981
8982
8983
8984
8985
8986
8987
8988
8989
8990
8991
8992
8993
8994
8995
8996
8997
8998
8999
9000
9001
9002
9003
9004
9005
9006
9007
9008
9009
9010
9011
9012
9013
9014
9015
9016
9017
9018
9019
9020
9021
9022
9023
9024
9025
9026
9027
9028
9029
9030
9031
9032
9033
9034
9035
9036
9037
9038
9039
9040
9041
9042
9043
9044
9045
9046
9047
9048
9049
9050
9051
9052
9053
9054
9055
9056
9057
9058
9059
9060
9061
9062
9063
9064
9065
9066
9067
9068
9069
9070
9071
9072
9073
9074
9075
9076
9077
9078
9079
9080
9081
9082
9083
9084
9085
9086
9087
9088
9089
9090
9091
9092
9093
9094
9095
9096
9097
9098
9099
9100
9101
9102
9103
9104
9105
9106
9107
9108
9109
9110
9111
9112
9113
9114
9115
9116
9117
9118
9119
9120
9121
9122
9123
9124
9125
9126
9127
9128
9129
9130
9131
9132
9133
9134
9135
9136
9137
9138
9139
9140
9141
9142
9143
9144
9145
9146
9147
9148
9149
9150
9151
9152
9153
9154
9155
9156
9157
9158
9159
9160
9161
9162
9163
9164
9165
9166
9167
9168
9169
9170
9171
9172
9173
9174
9175
9176
9177
9178
9179
9180
9181
9182
9183
9184
9185
9186
9187
9188
9189
9190
9191
9192
9193
9194
9195
9196
9197
9198
9199
9200
9201
9202
9203
9204
9205
9206
9207
9208
9209
9210
9211
9212
9213
9214
9215
9216
9217
9218
9219
9220
9221
9222
9223
9224
9225
9226
9227
9228
9229
9230
9231
9232
9233
9234
9235
9236
9237
9238
9239
9240
9241
9242
9243
9244
9245
9246
9247
9248
9249
9250
9251
9252
9253
9254
9255
9256
9257
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
9277
9278
9279
9280
9281
9282
9283
9284
9285
9286
9287
9288
9289
9290
9291
9292
9293
9294
9295
9296
9297
9298
9299
9300
9301
9302
9303
9304
9305
9306
9307
9308
9309
9310
9311
9312
9313
9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
9344
9345
9346
9347
9348
9349
9350
9351
9352
9353
9354
9355
9356
9357
9358
9359
9360
9361
9362
9363
9364
9365
9366
9367
9368
9369
9370
9371
9372
9373
9374
9375
9376
9377
9378
9379
9380
9381
9382
9383
9384
9385
9386
9387
9388
9389
9390
9391
9392
9393
9394
9395
9396
9397
9398
9399
9400
9401
9402
9403
9404
9405
9406
9407
9408
9409
9410
9411
9412
9413
9414
9415
9416
9417
9418
9419
9420
9421
9422
9423
9424
9425
9426
9427
9428
9429
9430
9431
9432
9433
9434
9435
9436
9437
9438
9439
9440
9441
9442
9443
9444
9445
9446
9447
9448
9449
9450
9451
9452
9453
9454
9455
9456
9457
9458
9459
9460
9461
9462
9463
9464
9465
9466
9467
9468
9469
9470
9471
9472
9473
9474
9475
9476
9477
9478
9479
9480
9481
9482
9483
9484
9485
9486
9487
9488
9489
9490
9491
9492
9493
9494
9495
9496
9497
9498
9499
9500
9501
9502
9503
9504
9505
9506
9507
9508
9509
9510
9511
9512
9513
9514
9515
9516
9517
9518
9519
9520
9521
9522
9523
9524
9525
9526
9527
9528
9529
9530
9531
9532
9533
9534
9535
9536
9537
9538
9539
9540
9541
9542
9543
9544
9545
9546
9547
9548
9549
9550
9551
9552
9553
9554
9555
9556
9557
9558
9559
9560
9561
9562
9563
9564
9565
9566
9567
9568
9569
9570
9571
9572
9573
9574
9575
9576
9577
9578
9579
9580
9581
9582
9583
9584
9585
9586
9587
9588
9589
9590
9591
9592
9593
9594
9595
9596
9597
9598
9599
9600
9601
9602
9603
9604
9605
9606
9607
9608
9609
9610
9611
9612
9613
9614
9615
9616
9617
9618
9619
9620
9621
9622
9623
9624
9625
9626
9627
9628
9629
9630
9631
9632
9633
9634
9635
9636
9637
9638
9639
9640
9641
9642
9643
9644
9645
9646
9647
9648
9649
9650
9651
9652
9653
9654
9655
9656
9657
9658
9659
9660
9661
9662
9663
9664
9665
9666
9667
9668
9669
9670
9671
9672
9673
9674
9675
9676
9677
9678
9679
9680
9681
9682
9683
9684
9685
9686
9687
9688
9689
9690
9691
9692
9693
9694
9695
9696
9697
9698
9699
9700
9701
9702
9703
9704
9705
9706
9707
9708
9709
9710
9711
9712
9713
9714
9715
9716
9717
9718
9719
9720
9721
9722
9723
9724
9725
9726
9727
9728
9729
9730
9731
9732
9733
9734
9735
9736
9737
9738
9739
9740
9741
9742
9743
9744
9745
9746
9747
9748
9749
9750
9751
9752
9753
9754
9755
9756
9757
9758
9759
9760
9761
9762
9763
9764
9765
9766
9767
9768
9769
9770
9771
9772
9773
9774
9775
9776
9777
9778
9779
9780
9781
9782
9783
9784
9785
9786
9787
9788
9789
9790
9791
9792
9793
9794
9795
9796
9797
9798
9799
9800
9801
9802
9803
9804
9805
9806
9807
9808
9809
9810
9811
9812
9813
9814
9815
9816
9817
9818
9819
9820
9821
9822
9823
9824
9825
9826
9827
9828
9829
9830
9831
9832
9833
9834
9835
9836
9837
9838
9839
9840
9841
9842
9843
9844
9845
9846
9847
9848
9849
9850
9851
9852
9853
9854
9855
9856
9857
9858
9859
9860
9861
9862
9863
9864
9865
9866
9867
9868
9869
9870
9871
9872
9873
9874
9875
9876
9877
9878
9879
9880
9881
9882
9883
9884
9885
9886
9887
9888
9889
9890
9891
9892
9893
9894
9895
9896
9897
9898
9899
9900
9901
9902
9903
9904
9905
9906
9907
9908
9909
9910
9911
9912
9913
9914
9915
9916
9917
9918
9919
9920
9921
9922
9923
9924
9925
9926
9927
9928
9929
9930
9931
9932
9933
9934
9935
9936
9937
9938
9939
9940
9941
9942
9943
9944
9945
9946
9947
9948
9949
9950
9951
9952
9953
9954
9955
9956
9957
9958
9959
9960
9961
9962
9963
9964
9965
9966
9967
9968
9969
9970
9971
9972
9973
9974
9975
9976
9977
9978
9979
9980
9981
9982
9983
9984
9985
9986
9987
9988
9989
9990
9991
9992
9993
9994
9995
9996
9997
9998
9999
10000
10001
10002
10003
10004
10005
10006
10007
10008
10009
10010
10011
10012
10013
10014
10015
10016
10017
10018
10019
10020
10021
10022
10023
10024
10025
10026
10027
10028
10029
10030
10031
10032
10033
10034
10035
10036
10037
10038
10039
10040
10041
10042
10043
10044
10045
10046
10047
10048
10049
10050
10051
10052
10053
10054
10055
10056
10057
10058
10059
10060
10061
10062
10063
10064
10065
10066
10067
10068
10069
10070
10071
10072
10073
10074
10075
10076
10077
10078
10079
10080
10081
10082
10083
10084
10085
10086
10087
10088
10089
10090
10091
10092
10093
10094
10095
10096
10097
10098
10099
10100
10101
10102
10103
10104
10105
10106
10107
10108
10109
10110
10111
10112
10113
10114
10115
10116
10117
10118
10119
10120
10121
10122
10123
10124
10125
10126
10127
10128
10129
10130
10131
10132
10133
10134
10135
10136
10137
10138
10139
10140
10141
10142
10143
10144
10145
10146
10147
10148
10149
10150
10151
10152
10153
10154
10155
10156
10157
10158
10159
10160
10161
10162
10163
10164
10165
10166
10167
10168
10169
10170
10171
10172
10173
10174
10175
10176
10177
10178
10179
10180
10181
10182
10183
10184
10185
10186
10187
10188
10189
10190
10191
10192
10193
10194
10195
10196
10197
10198
10199
10200
10201
10202
10203
10204
10205
10206
10207
10208
10209
10210
10211
10212
10213
10214
10215
10216
10217
10218
10219
10220
10221
10222
10223
10224
10225
10226
10227
10228
10229
10230
10231
10232
10233
10234
10235
10236
10237
10238
10239
10240
10241
10242
10243
10244
10245
10246
10247
10248
10249
10250
10251
10252
10253
10254
10255
10256
10257
10258
10259
10260
10261
10262
10263
10264
10265
10266
10267
10268
10269
10270
10271
10272
10273
10274
10275
10276
10277
10278
10279
10280
10281
10282
10283
10284
10285
10286
10287
10288
10289
10290
10291
10292
10293
10294
10295
10296
10297
10298
10299
10300
10301
10302
10303
10304
10305
10306
10307
10308
10309
10310
10311
10312
10313
10314
10315
10316
10317
10318
10319
10320
10321
10322
10323
10324
10325
10326
10327
10328
10329
10330
10331
10332
10333
10334
10335
10336
10337
10338
10339
10340
10341
10342
10343
10344
10345
10346
10347
10348
10349
10350
10351
10352
10353
10354
10355
10356
10357
10358
10359
10360
10361
10362
10363
10364
10365
10366
10367
10368
10369
10370
10371
10372
10373
10374
10375
10376
10377
10378
10379
10380
10381
10382
10383
10384
10385
10386
10387
10388
10389
10390
10391
10392
10393
10394
10395
10396
10397
10398
10399
10400
10401
10402
10403
10404
10405
10406
10407
10408
10409
10410
10411
10412
10413
10414
10415
10416
10417
10418
10419
10420
10421
10422
10423
10424
10425
10426
10427
10428
10429
10430
10431
10432
10433
10434
10435
10436
10437
10438
10439
10440
10441
10442
10443
10444
10445
10446
10447
10448
10449
10450
10451
10452
10453
10454
10455
10456
10457
10458
10459
10460
10461
10462
10463
10464
10465
10466
10467
10468
10469
10470
10471
10472
10473
10474
10475
10476
10477
10478
10479
10480
10481
10482
10483
10484
10485
10486
10487
10488
10489
10490
10491
10492
10493
10494
10495
10496
10497
10498
10499
10500
10501
10502
10503
10504
10505
10506
10507
10508
10509
10510
10511
10512
10513
10514
10515
10516
10517
10518
10519
10520
10521
10522
10523
10524
10525
10526
10527
10528
10529
10530
10531
10532
10533
10534
10535
10536
10537
10538
10539
10540
10541
10542
10543
10544
10545
10546
10547
10548
10549
10550
10551
10552
10553
10554
10555
10556
10557
10558
10559
10560
10561
10562
10563
10564
10565
10566
10567
10568
10569
10570
10571
10572
10573
10574
10575
10576
10577
10578
10579
10580
10581
10582
10583
10584
10585
10586
10587
10588
10589
10590
10591
10592
10593
10594
10595
10596
10597
10598
10599
10600
10601
10602
10603
10604
10605
10606
10607
10608
10609
10610
10611
10612
10613
10614
10615
10616
10617
10618
10619
10620
10621
10622
10623
10624
10625
10626
10627
10628
10629
10630
10631
10632
10633
10634
10635
10636
10637
10638
10639
10640
10641
10642
10643
10644
10645
10646
10647
10648
10649
10650
10651
10652
10653
10654
10655
10656
10657
10658
10659
10660
10661
10662
10663
10664
10665
10666
10667
10668
10669
10670
10671
10672
10673
10674
10675
10676
10677
10678
10679
10680
10681
10682
10683
10684
10685
10686
10687
10688
10689
10690
10691
10692
10693
10694
10695
10696
10697
10698
10699
10700
10701
10702
10703
10704
10705
10706
10707
10708
10709
10710
10711
10712
10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
11068
11069
11070
11071
11072
11073
11074
11075
11076
11077
11078
11079
11080
11081
11082
11083
11084
11085
11086
11087
11088
11089
11090
11091
11092
11093
11094
11095
11096
11097
11098
11099
11100
11101
11102
11103
11104
11105
11106
11107
11108
11109
11110
11111
11112
11113
11114
11115
11116
11117
11118
11119
11120
11121
11122
11123
11124
11125
11126
11127
11128
11129
11130
11131
11132
11133
11134
11135
11136
11137
11138
11139
11140
11141
11142
11143
11144
11145
11146
11147
11148
11149
11150
11151
11152
11153
11154
11155
11156
11157
11158
11159
11160
11161
11162
11163
11164
11165
11166
11167
11168
11169
11170
11171
11172
11173
11174
11175
11176
11177
11178
11179
11180
11181
11182
11183
11184
11185
11186
11187
11188
11189
11190
11191
11192
11193
11194
11195
11196
11197
11198
11199
11200
11201
11202
11203
11204
11205
11206
11207
11208
11209
11210
11211
11212
11213
11214
11215
11216
11217
11218
11219
11220
11221
11222
11223
11224
11225
11226
11227
11228
11229
11230
11231
11232
11233
11234
11235
11236
11237
11238
11239
11240
11241
11242
11243
11244
11245
11246
11247
11248
11249
11250
11251
11252
11253
11254
11255
11256
11257
11258
11259
11260
11261
11262
11263
11264
11265
11266
11267
11268
11269
11270
11271
11272
11273
11274
11275
11276
11277
11278
11279
11280
11281
11282
11283
11284
11285
11286
11287
11288
11289
11290
11291
11292
11293
11294
11295
11296
11297
11298
11299
11300
11301
11302
11303
11304
11305
11306
11307
11308
11309
11310
11311
11312
11313
11314
11315
11316
11317
11318
11319
11320
11321
11322
11323
11324
11325
11326
11327
11328
11329
11330
11331
11332
11333
11334
11335
11336
11337
11338
11339
11340
11341
11342
11343
11344
11345
11346
11347
11348
11349
11350
11351
11352
11353
11354
11355
11356
11357
11358
11359
11360
11361
11362
11363
11364
11365
11366
11367
11368
11369
11370
11371
11372
11373
11374
11375
11376
11377
11378
11379
11380
11381
11382
11383
11384
11385
11386
11387
11388
11389
11390
11391
11392
11393
11394
11395
11396
11397
11398
11399
11400
11401
11402
11403
11404
11405
11406
11407
11408
11409
11410
11411
11412
11413
11414
11415
11416
11417
11418
11419
11420
11421
11422
11423
11424
11425
11426
11427
11428
11429
11430
11431
11432
11433
11434
11435
11436
11437
11438
11439
11440
11441
11442
11443
11444
11445
11446
11447
11448
11449
11450
11451
11452
11453
11454
11455
11456
11457
11458
11459
11460
11461
11462
11463
11464
11465
11466
11467
11468
11469
11470
11471
11472
11473
11474
11475
11476
11477
11478
11479
11480
11481
11482
11483
11484
11485
11486
11487
11488
11489
11490
11491
11492
11493
11494
11495
11496
11497
11498
11499
11500
11501
11502
11503
11504
11505
11506
11507
11508
11509
11510
11511
11512
11513
11514
11515
11516
11517
11518
11519
11520
11521
11522
11523
11524
11525
11526
11527
11528
11529
11530
11531
11532
11533
11534
11535
11536
11537
11538
11539
11540
11541
11542
11543
11544
11545
11546
11547
11548
11549
11550
11551
11552
11553
11554
11555
11556
11557
11558
11559
11560
11561
11562
11563
11564
11565
11566
11567
11568
11569
11570
11571
11572
11573
11574
11575
11576
11577
11578
11579
11580
11581
11582
11583
11584
11585
11586
11587
11588
11589
11590
11591
11592
11593
11594
11595
11596
11597
11598
11599
11600
11601
11602
11603
11604
11605
11606
11607
11608
11609
11610
11611
11612
11613
11614
11615
11616
11617
11618
11619
11620
11621
11622
11623
11624
11625
11626
11627
11628
11629
11630
11631
11632
11633
11634
11635
11636
11637
11638
11639
11640
11641
11642
11643
11644
11645
11646
11647
11648
11649
11650
11651
11652
11653
11654
11655
11656
11657
11658
11659
11660
11661
11662
11663
11664
11665
11666
11667
11668
11669
11670
11671
11672
11673
11674
11675
11676
11677
11678
11679
11680
11681
11682
11683
11684
11685
11686
11687
11688
11689
11690
11691
11692
11693
11694
11695
11696
11697
11698
11699
11700
11701
11702
11703
11704
11705
11706
11707
11708
11709
11710
11711
11712
11713
11714
11715
11716
11717
11718
11719
11720
11721
11722
11723
11724
11725
11726
11727
11728
11729
11730
11731
11732
11733
11734
11735
11736
11737
11738
11739
11740
11741
11742
11743
11744
11745
11746
11747
11748
11749
11750
11751
11752
11753
11754
11755
11756
11757
11758
11759
11760
11761
11762
11763
11764
11765
11766
11767
11768
11769
11770
11771
11772
11773
11774
11775
11776
11777
11778
11779
11780
11781
11782
11783
11784
11785
11786
11787
11788
11789
11790
11791
11792
11793
11794
11795
11796
11797
11798
11799
11800
11801
11802
11803
11804
11805
11806
11807
11808
11809
11810
11811
11812
11813
11814
11815
11816
11817
11818
11819
11820
11821
11822
11823
11824
11825
11826
11827
11828
11829
11830
11831
11832
11833
11834
11835
11836
11837
11838
11839
11840
11841
11842
11843
11844
11845
11846
11847
11848
11849
11850
11851
11852
11853
11854
11855
11856
11857
11858
11859
11860
11861
11862
11863
11864
11865
11866
11867
11868
11869
11870
11871
11872
11873
11874
11875
11876
11877
11878
11879
11880
11881
11882
11883
11884
11885
11886
11887
11888
11889
11890
11891
11892
11893
11894
11895
11896
11897
11898
11899
11900
11901
11902
11903
11904
11905
11906
11907
11908
11909
11910
11911
11912
11913
11914
11915
11916
11917
11918
11919
11920
11921
11922
11923
11924
11925
11926
11927
11928
11929
11930
11931
11932
11933
11934
11935
11936
11937
11938
11939
11940
11941
11942
11943
11944
11945
11946
11947
11948
11949
11950
11951
11952
11953
11954
11955
11956
11957
11958
11959
11960
11961
11962
11963
11964
11965
11966
11967
11968
11969
11970
11971
11972
11973
11974
11975
11976
11977
11978
11979
11980
11981
11982
11983
11984
11985
11986
11987
11988
11989
11990
11991
11992
11993
11994
11995
11996
11997
11998
11999
12000
12001
12002
12003
12004
12005
12006
12007
12008
12009
12010
12011
12012
12013
12014
12015
12016
12017
12018
12019
12020
12021
12022
12023
12024
12025
12026
12027
12028
12029
12030
12031
12032
12033
12034
12035
12036
12037
12038
12039
12040
12041
12042
12043
12044
12045
12046
12047
12048
12049
12050
12051
12052
12053
12054
12055
12056
12057
12058
12059
12060
12061
12062
12063
12064
12065
12066
12067
12068
12069
12070
12071
12072
12073
12074
12075
12076
12077
12078
12079
12080
12081
12082
12083
12084
12085
12086
12087
12088
12089
12090
12091
12092
12093
12094
12095
12096
12097
12098
12099
12100
12101
12102
12103
12104
12105
12106
12107
12108
12109
12110
12111
12112
12113
12114
12115
12116
12117
12118
12119
12120
12121
12122
12123
12124
12125
12126
12127
12128
12129
12130
12131
12132
12133
12134
12135
12136
12137
12138
12139
12140
12141
12142
12143
12144
12145
12146
12147
12148
12149
12150
12151
12152
12153
12154
12155
12156
12157
12158
12159
12160
12161
12162
12163
12164
12165
12166
12167
12168
12169
12170
12171
12172
12173
12174
12175
12176
12177
12178
12179
12180
12181
12182
12183
12184
12185
12186
12187
12188
12189
12190
12191
12192
12193
12194
12195
12196
12197
12198
12199
12200
12201
12202
12203
12204
12205
12206
12207
12208
12209
12210
12211
12212
12213
12214
12215
12216
12217
12218
12219
12220
12221
12222
12223
12224
12225
12226
12227
12228
12229
12230
12231
12232
12233
12234
12235
12236
12237
12238
12239
12240
12241
12242
12243
12244
12245
12246
12247
12248
12249
12250
12251
12252
12253
12254
12255
12256
12257
12258
12259
12260
12261
12262
12263
12264
12265
12266
12267
12268
12269
12270
12271
12272
12273
12274
12275
12276
12277
12278
12279
12280
12281
12282
12283
12284
12285
12286
12287
12288
12289
12290
12291
12292
12293
12294
12295
12296
12297
12298
12299
12300
12301
12302
12303
12304
12305
12306
12307
12308
12309
12310
12311
12312
12313
12314
12315
12316
12317
12318
12319
12320
12321
12322
12323
12324
12325
12326
12327
12328
12329
12330
12331
12332
12333
12334
12335
12336
12337
12338
12339
12340
12341
12342
12343
12344
12345
12346
12347
12348
12349
12350
12351
12352
12353
12354
12355
12356
12357
12358
12359
12360
12361
12362
12363
12364
12365
12366
12367
12368
12369
12370
12371
12372
12373
12374
12375
12376
12377
12378
12379
12380
12381
12382
12383
12384
12385
12386
12387
12388
12389
12390
12391
12392
12393
12394
12395
12396
12397
12398
12399
12400
12401
12402
12403
12404
12405
12406
12407
12408
12409
12410
12411
12412
12413
12414
12415
12416
12417
12418
12419
12420
12421
12422
12423
12424
12425
12426
12427
12428
12429
12430
12431
12432
12433
12434
12435
12436
12437
12438
12439
12440
12441
12442
12443
12444
12445
12446
12447
12448
12449
12450
12451
12452
12453
12454
12455
12456
12457
12458
12459
12460
12461
12462
12463
12464
12465
12466
12467
12468
12469
12470
12471
12472
12473
12474
12475
12476
12477
12478
12479
12480
12481
12482
12483
12484
12485
12486
12487
12488
12489
12490
12491
12492
12493
12494
12495
12496
12497
12498
12499
12500
12501
12502
12503
12504
12505
12506
12507
12508
12509
12510
12511
12512
12513
12514
12515
12516
12517
12518
12519
12520
12521
12522
12523
12524
12525
12526
12527
12528
12529
12530
12531
12532
12533
12534
12535
12536
12537
12538
12539
12540
12541
12542
12543
12544
12545
12546
12547
12548
12549
12550
12551
12552
12553
12554
12555
12556
12557
12558
12559
12560
12561
12562
12563
12564
12565
12566
12567
12568
12569
12570
12571
12572
12573
12574
12575
12576
12577
12578
12579
12580
12581
12582
12583
12584
12585
12586
12587
12588
12589
12590
12591
12592
12593
12594
12595
12596
12597
12598
12599
12600
12601
12602
12603
12604
12605
12606
12607
12608
12609
12610
12611
12612
12613
12614
12615
12616
12617
12618
12619
12620
12621
12622
12623
12624
12625
12626
12627
12628
12629
12630
12631
12632
12633
12634
12635
12636
12637
12638
12639
12640
12641
12642
12643
12644
12645
12646
12647
12648
12649
12650
12651
12652
12653
12654
12655
12656
12657
12658
12659
12660
12661
12662
12663
12664
12665
12666
12667
12668
12669
12670
12671
12672
12673
12674
12675
12676
12677
12678
12679
12680
12681
12682
12683
12684
12685
12686
12687
12688
12689
12690
12691
12692
12693
12694
12695
12696
12697
12698
12699
12700
12701
12702
12703
12704
12705
12706
12707
12708
12709
12710
12711
12712
12713
12714
12715
12716
12717
12718
12719
12720
12721
12722
12723
12724
12725
12726
12727
12728
12729
12730
12731
12732
12733
12734
12735
12736
12737
12738
12739
12740
12741
12742
12743
12744
12745
12746
12747
12748
12749
12750
12751
12752
12753
12754
12755
12756
12757
12758
12759
12760
12761
12762
12763
12764
12765
12766
12767
12768
12769
12770
12771
12772
12773
12774
12775
12776
12777
12778
12779
12780
12781
12782
12783
12784
12785
12786
12787
12788
12789
12790
12791
12792
12793
12794
12795
12796
12797
12798
12799
12800
12801
12802
12803
12804
12805
12806
12807
12808
12809
12810
12811
12812
12813
12814
12815
12816
12817
12818
12819
12820
12821
12822
12823
12824
12825
12826
12827
12828
12829
12830
12831
12832
12833
12834
12835
12836
12837
12838
12839
12840
12841
12842
12843
12844
12845
12846
12847
12848
12849
12850
12851
12852
12853
12854
12855
12856
12857
12858
12859
12860
12861
12862
12863
12864
12865
12866
12867
12868
12869
12870
12871
12872
12873
12874
12875
12876
12877
12878
12879
12880
12881
12882
12883
12884
12885
12886
12887
12888
12889
12890
12891
12892
12893
12894
12895
12896
12897
12898
12899
12900
12901
12902
12903
12904
12905
12906
12907
12908
12909
12910
12911
12912
12913
12914
12915
12916
12917
12918
12919
12920
12921
12922
12923
12924
12925
12926
12927
12928
12929
12930
12931
12932
12933
12934
12935
12936
12937
12938
12939
12940
12941
12942
12943
12944
12945
12946
12947
12948
12949
12950
12951
12952
12953
12954
12955
12956
12957
12958
12959
12960
12961
12962
12963
12964
12965
12966
12967
12968
12969
12970
12971
12972
12973
12974
12975
12976
12977
12978
12979
12980
12981
12982
12983
12984
12985
12986
12987
12988
12989
12990
12991
12992
12993
12994
12995
12996
12997
12998
12999
13000
13001
13002
13003
13004
13005
13006
13007
13008
13009
13010
13011
13012
13013
13014
13015
13016
13017
13018
13019
13020
13021
13022
13023
13024
13025
13026
13027
13028
13029
13030
13031
13032
13033
13034
13035
13036
13037
13038
13039
13040
13041
13042
13043
13044
13045
13046
13047
13048
13049
13050
13051
13052
13053
13054
13055
13056
13057
13058
13059
13060
13061
13062
13063
13064
13065
13066
13067
13068
13069
13070
13071
13072
13073
13074
13075
13076
13077
13078
13079
13080
13081
13082
13083
13084
13085
13086
13087
13088
13089
13090
13091
13092
13093
13094
13095
13096
13097
13098
13099
13100
13101
13102
13103
13104
13105
13106
13107
13108
13109
13110
13111
13112
13113
13114
13115
13116
13117
13118
13119
13120
13121
13122
13123
13124
13125
13126
13127
13128
13129
13130
13131
13132
13133
13134
13135
13136
13137
13138
13139
13140
13141
13142
13143
13144
13145
13146
13147
13148
13149
13150
13151
13152
13153
13154
13155
13156
13157
13158
13159
13160
13161
13162
13163
13164
13165
13166
13167
13168
13169
13170
13171
13172
13173
13174
13175
13176
13177
13178
13179
13180
13181
13182
13183
13184
13185
13186
13187
13188
13189
13190
13191
13192
13193
13194
13195
13196
13197
13198
13199
13200
13201
13202
13203
13204
13205
13206
13207
13208
13209
13210
13211
13212
13213
13214
13215
13216
13217
13218
13219
13220
13221
13222
13223
13224
13225
13226
13227
13228
13229
13230
13231
13232
13233
13234
13235
13236
13237
13238
13239
13240
13241
13242
13243
13244
13245
13246
13247
13248
13249
13250
13251
13252
13253
13254
13255
13256
13257
13258
13259
13260
13261
13262
13263
13264
13265
13266
13267
13268
13269
13270
13271
13272
13273
13274
13275
13276
13277
13278
13279
13280
13281
13282
13283
13284
13285
13286
13287
13288
13289
13290
13291
13292
13293
13294
13295
13296
13297
13298
13299
13300
13301
13302
13303
13304
13305
13306
13307
13308
13309
13310
13311
13312
13313
13314
13315
13316
13317
13318
13319
13320
13321
13322
13323
13324
13325
13326
13327
13328
13329
13330
13331
13332
13333
13334
13335
13336
13337
13338
13339
13340
13341
13342
13343
13344
13345
13346
13347
13348
13349
13350
13351
13352
13353
13354
13355
13356
13357
13358
13359
13360
13361
13362
13363
13364
13365
13366
13367
13368
13369
13370
13371
13372
13373
13374
13375
13376
13377
13378
13379
13380
13381
13382
13383
13384
13385
13386
13387
13388
13389
13390
13391
13392
13393
13394
13395
13396
13397
13398
13399
13400
13401
13402
13403
13404
13405
13406
13407
13408
13409
13410
13411
13412
13413
13414
13415
13416
13417
13418
13419
13420
13421
13422
13423
13424
13425
13426
13427
13428
13429
13430
13431
13432
13433
13434
13435
13436
13437
13438
13439
13440
13441
13442
13443
13444
13445
13446
13447
13448
13449
13450
13451
13452
13453
13454
13455
13456
13457
13458
13459
13460
13461
13462
13463
13464
13465
13466
13467
13468
13469
13470
13471
13472
13473
13474
13475
13476
13477
13478
13479
13480
13481
13482
13483
13484
13485
13486
13487
13488
13489
13490
13491
13492
13493
13494
13495
13496
13497
13498
13499
13500
13501
13502
13503
13504
13505
13506
13507
13508
13509
13510
13511
13512
13513
13514
13515
13516
13517
13518
13519
13520
13521
13522
13523
13524
13525
13526
13527
13528
13529
13530
13531
13532
13533
13534
13535
13536
13537
13538
13539
13540
13541
13542
13543
13544
13545
13546
13547
13548
13549
13550
13551
13552
13553
13554
13555
13556
13557
13558
13559
13560
13561
13562
13563
13564
13565
13566
13567
13568
13569
13570
13571
13572
13573
13574
13575
13576
13577
13578
13579
13580
13581
13582
13583
13584
13585
13586
13587
13588
13589
13590
13591
13592
13593
13594
13595
13596
13597
13598
13599
13600
13601
13602
13603
13604
13605
13606
13607
13608
13609
13610
13611
13612
13613
13614
13615
13616
13617
13618
13619
13620
13621
13622
13623
13624
13625
13626
13627
13628
13629
13630
13631
13632
13633
13634
13635
13636
13637
13638
13639
13640
13641
13642
13643
13644
13645
13646
13647
13648
13649
13650
13651
13652
13653
13654
13655
13656
13657
13658
13659
13660
13661
13662
13663
13664
13665
13666
13667
13668
13669
13670
13671
13672
13673
13674
13675
13676
13677
13678
13679
13680
13681
13682
13683
13684
13685
13686
13687
13688
13689
13690
13691
13692
13693
13694
13695
13696
13697
13698
13699
13700
13701
13702
13703
13704
13705
13706
13707
13708
13709
13710
13711
13712
13713
13714
13715
13716
13717
13718
13719
13720
13721
13722
13723
13724
13725
13726
13727
13728
13729
13730
13731
13732
13733
13734
13735
13736
13737
13738
13739
13740
13741
13742
13743
13744
13745
13746
13747
13748
13749
13750
13751
13752
13753
13754
13755
13756
13757
13758
13759
13760
13761
13762
13763
13764
13765
13766
13767
13768
13769
13770
13771
13772
13773
13774
13775
13776
13777
13778
13779
13780
13781
13782
13783
13784
13785
13786
13787
13788
13789
13790
13791
13792
13793
13794
13795
13796
13797
13798
13799
13800
13801
13802
13803
13804
13805
13806
13807
13808
13809
13810
13811
13812
13813
13814
13815
13816
13817
13818
13819
13820
13821
13822
13823
13824
13825
13826
13827
13828
13829
13830
13831
13832
13833
13834
13835
13836
13837
13838
13839
13840
13841
13842
13843
13844
13845
13846
13847
13848
13849
13850
13851
13852
13853
13854
13855
13856
13857
13858
13859
13860
13861
13862
13863
13864
13865
13866
13867
13868
13869
13870
13871
13872
13873
13874
13875
13876
13877
13878
13879
13880
13881
13882
13883
13884
13885
13886
13887
13888
13889
13890
13891
13892
13893
13894
13895
13896
13897
13898
13899
13900
13901
13902
13903
13904
13905
13906
13907
13908
13909
13910
13911
13912
13913
13914
13915
13916
13917
13918
13919
13920
13921
13922
13923
13924
13925
13926
13927
13928
13929
13930
13931
13932
13933
13934
13935
13936
13937
13938
13939
13940
13941
13942
13943
13944
13945
13946
13947
13948
13949
13950
13951
13952
13953
13954
13955
13956
13957
13958
13959
13960
13961
13962
13963
13964
13965
13966
13967
13968
13969
13970
13971
13972
13973
13974
13975
13976
13977
13978
13979
13980
13981
13982
13983
13984
13985
13986
13987
13988
13989
13990
13991
13992
13993
13994
13995
13996
13997
13998
13999
14000
14001
14002
14003
14004
14005
14006
14007
14008
14009
14010
14011
14012
14013
14014
14015
14016
14017
14018
14019
14020
14021
14022
14023
14024
14025
14026
14027
14028
14029
14030
14031
14032
14033
14034
14035
14036
14037
14038
14039
14040
14041
14042
14043
14044
14045
14046
14047
14048
14049
14050
14051
14052
14053
14054
14055
14056
14057
14058
14059
14060
14061
14062
14063
14064
14065
14066
14067
14068
14069
14070
14071
14072
14073
14074
14075
14076
14077
14078
14079
14080
14081
14082
14083
14084
14085
14086
14087
14088
14089
14090
14091
14092
14093
14094
14095
14096
14097
14098
14099
14100
14101
14102
14103
14104
14105
14106
14107
14108
14109
14110
14111
14112
14113
14114
14115
14116
14117
14118
14119
14120
14121
14122
14123
14124
14125
14126
14127
14128
14129
14130
14131
14132
14133
14134
14135
14136
14137
14138
14139
14140
14141
14142
14143
14144
14145
14146
14147
14148
14149
14150
14151
14152
14153
14154
14155
14156
14157
14158
14159
14160
14161
14162
14163
14164
14165
14166
14167
14168
14169
14170
14171
14172
14173
14174
14175
14176
14177
14178
14179
14180
14181
14182
14183
14184
14185
14186
14187
14188
14189
14190
14191
14192
14193
14194
14195
14196
14197
14198
14199
14200
14201
14202
14203
14204
14205
14206
14207
14208
14209
14210
14211
14212
14213
14214
14215
14216
14217
14218
14219
14220
14221
14222
14223
14224
14225
14226
14227
14228
14229
14230
14231
14232
14233
14234
14235
14236
14237
14238
14239
14240
14241
14242
14243
14244
14245
14246
14247
14248
14249
14250
14251
14252
14253
14254
14255
14256
14257
14258
14259
14260
14261
14262
14263
14264
14265
14266
14267
14268
14269
14270
14271
14272
14273
14274
14275
14276
14277
14278
14279
14280
14281
14282
14283
14284
14285
14286
14287
14288
14289
14290
14291
14292
14293
14294
14295
14296
14297
14298
14299
14300
14301
14302
14303
14304
14305
14306
14307
14308
14309
14310
14311
14312
14313
14314
14315
14316
14317
14318
14319
14320
14321
14322
14323
14324
14325
14326
14327
14328
14329
14330
14331
14332
14333
14334
14335
14336
14337
14338
14339
14340
14341
14342
14343
14344
14345
14346
14347
14348
14349
14350
14351
14352
14353
14354
14355
14356
14357
14358
14359
14360
14361
14362
14363
14364
14365
14366
14367
14368
14369
14370
14371
14372
14373
14374
14375
14376
14377
14378
14379
14380
14381
14382
14383
14384
14385
14386
14387
14388
14389
14390
14391
14392
14393
14394
14395
14396
14397
14398
14399
14400
14401
14402
14403
14404
14405
14406
14407
14408
14409
14410
14411
14412
14413
14414
14415
14416
14417
14418
14419
14420
14421
14422
14423
14424
14425
14426
14427
14428
14429
14430
14431
14432
14433
14434
14435
14436
14437
14438
14439
14440
14441
14442
14443
14444
14445
14446
14447
14448
14449
14450
14451
14452
14453
14454
14455
14456
14457
14458
14459
14460
14461
14462
14463
14464
14465
14466
14467
14468
14469
14470
14471
14472
14473
14474
14475
14476
14477
14478
14479
14480
14481
14482
14483
14484
14485
14486
14487
14488
14489
14490
14491
14492
14493
14494
14495
14496
14497
14498
14499
14500
14501
14502
14503
14504
14505
14506
14507
14508
14509
14510
14511
14512
14513
14514
14515
14516
14517
14518
14519
14520
14521
14522
14523
14524
14525
14526
14527
14528
14529
14530
14531
14532
14533
14534
14535
14536
14537
14538
14539
14540
14541
14542
14543
14544
14545
14546
14547
14548
14549
14550
14551
14552
14553
14554
14555
14556
14557
14558
14559
14560
14561
14562
14563
14564
14565
14566
14567
14568
14569
14570
14571
14572
14573
14574
14575
14576
14577
14578
14579
14580
14581
14582
14583
14584
14585
14586
14587
14588
14589
14590
14591
14592
14593
14594
14595
14596
14597
14598
14599
14600
14601
14602
14603
14604
14605
14606
14607
14608
14609
14610
14611
14612
14613
14614
14615
14616
14617
14618
14619
14620
14621
14622
14623
14624
14625
14626
14627
14628
14629
14630
14631
14632
14633
14634
14635
14636
14637
14638
14639
14640
14641
14642
14643
14644
14645
14646
14647
14648
14649
14650
14651
14652
14653
14654
14655
14656
14657
14658
14659
14660
14661
14662
14663
14664
14665
14666
14667
14668
14669
14670
14671
14672
14673
14674
14675
14676
14677
14678
14679
14680
14681
14682
14683
14684
14685
14686
14687
14688
14689
14690
14691
14692
14693
14694
14695
14696
14697
14698
14699
14700
14701
14702
14703
14704
14705
14706
14707
14708
14709
14710
14711
14712
14713
14714
14715
14716
14717
14718
14719
14720
14721
14722
14723
14724
14725
14726
14727
14728
14729
14730
14731
14732
14733
14734
14735
14736
14737
14738
14739
14740
14741
14742
14743
14744
14745
14746
14747
14748
14749
14750
14751
14752
14753
14754
14755
14756
14757
14758
14759
14760
14761
14762
14763
14764
14765
14766
14767
14768
14769
14770
14771
14772
14773
14774
14775
14776
14777
14778
14779
14780
14781
14782
14783
14784
14785
14786
14787
14788
14789
14790
14791
14792
14793
14794
14795
14796
14797
14798
14799
14800
14801
14802
14803
14804
14805
14806
14807
14808
14809
14810
14811
14812
14813
14814
14815
14816
14817
14818
14819
14820
14821
14822
14823
14824
14825
14826
14827
14828
14829
14830
14831
14832
14833
14834
14835
14836
14837
14838
14839
14840
14841
14842
14843
14844
14845
14846
14847
14848
14849
14850
14851
14852
14853
14854
14855
14856
14857
14858
14859
14860
14861
14862
14863
14864
14865
14866
14867
14868
14869
14870
14871
14872
14873
14874
14875
14876
14877
14878
14879
14880
14881
14882
14883
14884
14885
14886
14887
14888
14889
14890
14891
14892
14893
14894
14895
14896
14897
14898
14899
14900
14901
14902
14903
14904
14905
14906
14907
14908
14909
14910
14911
14912
14913
14914
14915
14916
14917
14918
14919
14920
14921
14922
14923
14924
14925
14926
14927
14928
14929
14930
14931
14932
14933
14934
14935
14936
14937
14938
14939
14940
14941
14942
14943
14944
14945
14946
14947
14948
14949
14950
14951
14952
14953
14954
14955
14956
14957
14958
14959
14960
14961
14962
14963
14964
14965
14966
14967
14968
14969
14970
14971
14972
14973
14974
14975
14976
14977
14978
14979
14980
14981
14982
14983
14984
14985
14986
14987
14988
14989
14990
14991
14992
14993
14994
14995
14996
14997
14998
14999
15000
15001
15002
15003
15004
15005
15006
15007
15008
15009
15010
15011
15012
15013
15014
15015
15016
15017
15018
15019
15020
15021
15022
15023
15024
15025
15026
15027
15028
15029
15030
15031
15032
15033
15034
15035
15036
15037
15038
15039
15040
15041
15042
15043
15044
15045
15046
15047
15048
15049
15050
15051
15052
15053
15054
15055
15056
15057
15058
15059
15060
15061
15062
15063
15064
15065
15066
15067
15068
15069
15070
15071
15072
15073
15074
15075
15076
15077
15078
15079
15080
15081
15082
15083
15084
15085
15086
15087
15088
15089
15090
15091
15092
15093
15094
15095
15096
15097
15098
15099
15100
15101
15102
15103
15104
15105
15106
15107
15108
15109
15110
15111
15112
15113
15114
15115
15116
15117
15118
15119
15120
15121
15122
15123
15124
15125
15126
15127
15128
15129
15130
15131
15132
15133
15134
15135
15136
15137
15138
15139
15140
15141
15142
15143
15144
15145
15146
15147
15148
15149
15150
15151
15152
15153
15154
15155
15156
15157
15158
15159
15160
15161
15162
15163
15164
15165
15166
15167
15168
15169
15170
15171
15172
15173
15174
15175
15176
15177
15178
15179
15180
15181
15182
15183
15184
15185
15186
15187
15188
15189
15190
15191
15192
15193
15194
15195
15196
15197
15198
15199
15200
15201
15202
15203
15204
15205
15206
15207
15208
15209
15210
15211
15212
15213
15214
15215
15216
15217
15218
15219
15220
15221
15222
15223
15224
15225
15226
15227
15228
15229
15230
15231
15232
15233
15234
15235
15236
15237
15238
15239
15240
15241
15242
15243
15244
15245
15246
15247
15248
15249
15250
15251
15252
15253
15254
15255
15256
15257
15258
15259
15260
15261
15262
15263
15264
15265
15266
15267
15268
15269
15270
15271
15272
15273
15274
15275
15276
15277
15278
15279
15280
15281
15282
15283
15284
15285
15286
15287
15288
15289
15290
15291
15292
15293
15294
15295
15296
15297
15298
15299
15300
15301
15302
15303
15304
15305
15306
15307
15308
15309
15310
15311
15312
15313
15314
15315
15316
15317
15318
15319
15320
15321
15322
15323
15324
15325
15326
15327
15328
15329
15330
15331
15332
15333
15334
15335
15336
15337
15338
15339
15340
15341
15342
15343
15344
15345
15346
15347
15348
15349
15350
15351
15352
15353
15354
15355
15356
15357
15358
15359
15360
15361
15362
15363
15364
15365
15366
15367
15368
15369
15370
15371
15372
15373
15374
15375
15376
15377
15378
15379
15380
15381
15382
15383
15384
15385
15386
15387
15388
15389
15390
15391
15392
15393
15394
15395
15396
15397
15398
15399
15400
15401
15402
15403
15404
15405
15406
15407
15408
15409
15410
15411
15412
15413
15414
15415
15416
15417
15418
15419
15420
15421
15422
15423
15424
15425
15426
15427
15428
15429
15430
15431
15432
15433
15434
15435
15436
15437
15438
15439
15440
15441
15442
15443
15444
15445
15446
15447
15448
15449
15450
15451
15452
15453
15454
15455
15456
15457
15458
15459
15460
15461
15462
15463
15464
15465
15466
15467
15468
15469
15470
15471
15472
15473
15474
15475
15476
15477
15478
15479
15480
15481
15482
15483
15484
15485
15486
15487
15488
15489
15490
15491
15492
15493
15494
15495
15496
15497
15498
15499
15500
15501
15502
15503
15504
15505
15506
15507
15508
15509
15510
15511
15512
15513
15514
15515
15516
15517
15518
15519
15520
15521
15522
15523
15524
15525
15526
15527
15528
15529
15530
15531
15532
15533
15534
15535
15536
15537
15538
15539
15540
15541
15542
15543
15544
15545
15546
15547
15548
15549
15550
15551
15552
15553
15554
15555
15556
15557
15558
15559
15560
15561
15562
15563
15564
15565
15566
15567
15568
15569
15570
15571
15572
15573
15574
15575
15576
15577
15578
15579
15580
15581
15582
15583
15584
15585
15586
15587
15588
15589
15590
15591
15592
15593
15594
15595
15596
15597
15598
15599
15600
15601
15602
15603
15604
15605
15606
15607
15608
15609
15610
15611
15612
15613
15614
15615
15616
15617
15618
15619
15620
15621
15622
15623
15624
15625
15626
15627
15628
15629
15630
15631
15632
15633
15634
15635
15636
15637
15638
15639
15640
15641
15642
15643
15644
15645
15646
15647
15648
15649
15650
15651
15652
15653
15654
15655
15656
15657
15658
15659
15660
15661
15662
15663
15664
15665
15666
15667
15668
15669
15670
15671
15672
15673
15674
15675
15676
15677
15678
15679
15680
15681
15682
15683
15684
15685
15686
15687
15688
15689
15690
15691
15692
15693
15694
15695
15696
15697
15698
15699
15700
15701
15702
15703
15704
15705
15706
15707
15708
15709
15710
15711
15712
15713
15714
15715
15716
15717
15718
15719
15720
15721
15722
15723
15724
15725
15726
15727
15728
15729
15730
15731
15732
15733
15734
15735
15736
15737
15738
15739
15740
15741
15742
15743
15744
15745
15746
15747
15748
15749
15750
15751
15752
15753
15754
15755
15756
15757
15758
15759
15760
15761
15762
15763
15764
15765
15766
15767
15768
15769
15770
15771
15772
15773
15774
15775
15776
15777
15778
15779
15780
15781
15782
15783
15784
15785
15786
15787
15788
15789
15790
15791
15792
15793
15794
15795
15796
15797
15798
15799
15800
15801
15802
15803
15804
15805
15806
15807
15808
15809
15810
15811
15812
15813
15814
15815
15816
15817
15818
15819
15820
15821
15822
15823
15824
15825
15826
15827
15828
15829
15830
15831
15832
15833
15834
15835
15836
15837
15838
15839
15840
15841
15842
15843
15844
15845
15846
15847
15848
15849
15850
15851
15852
15853
15854
15855
15856
15857
15858
15859
15860
15861
15862
15863
15864
15865
15866
15867
15868
15869
15870
15871
15872
15873
15874
15875
15876
15877
15878
15879
15880
15881
15882
15883
15884
15885
15886
15887
15888
15889
15890
15891
15892
15893
15894
15895
15896
15897
15898
15899
15900
15901
15902
15903
15904
15905
15906
15907
15908
15909
15910
15911
15912
15913
15914
15915
15916
15917
15918
15919
15920
15921
15922
15923
15924
15925
15926
15927
15928
15929
15930
15931
15932
15933
15934
15935
15936
15937
15938
15939
15940
15941
15942
15943
15944
15945
15946
15947
15948
15949
15950
15951
15952
15953
15954
15955
15956
15957
15958
15959
15960
15961
15962
15963
15964
15965
15966
15967
15968
15969
15970
15971
15972
15973
15974
15975
15976
15977
15978
15979
15980
15981
15982
15983
15984
15985
15986
15987
15988
15989
15990
15991
15992
15993
15994
15995
15996
15997
15998
15999
16000
16001
16002
16003
16004
16005
16006
16007
16008
16009
16010
16011
16012
16013
16014
16015
16016
16017
16018
16019
16020
16021
16022
16023
16024
16025
16026
16027
16028
16029
16030
16031
16032
16033
16034
16035
16036
16037
16038
16039
16040
16041
16042
16043
16044
16045
16046
16047
16048
16049
16050
16051
16052
16053
16054
16055
16056
16057
16058
16059
16060
16061
16062
16063
16064
16065
16066
16067
16068
16069
16070
16071
16072
16073
16074
16075
16076
16077
16078
16079
16080
16081
16082
16083
16084
16085
16086
16087
16088
16089
16090
16091
16092
16093
16094
16095
16096
16097
16098
16099
16100
16101
16102
16103
16104
16105
16106
16107
16108
16109
16110
16111
16112
16113
16114
16115
16116
16117
16118
16119
16120
16121
16122
16123
16124
16125
16126
16127
16128
16129
16130
16131
16132
16133
16134
16135
16136
16137
16138
16139
16140
16141
16142
16143
16144
16145
16146
16147
16148
16149
16150
16151
16152
16153
16154
16155
16156
16157
16158
16159
16160
16161
16162
16163
16164
16165
16166
16167
16168
16169
16170
16171
16172
16173
16174
16175
16176
16177
16178
16179
16180
16181
16182
16183
16184
16185
16186
16187
16188
16189
16190
16191
16192
16193
16194
16195
16196
16197
16198
16199
16200
16201
16202
16203
16204
16205
16206
16207
16208
16209
16210
16211
16212
16213
16214
16215
16216
16217
16218
16219
16220
16221
16222
16223
16224
16225
16226
16227
16228
16229
16230
16231
16232
16233
16234
16235
16236
16237
16238
16239
16240
16241
16242
16243
16244
16245
16246
16247
16248
16249
16250
16251
16252
16253
16254
16255
16256
16257
16258
16259
16260
16261
16262
16263
16264
16265
16266
16267
16268
16269
16270
16271
16272
16273
16274
16275
16276
16277
16278
16279
16280
16281
16282
16283
16284
16285
16286
16287
16288
16289
16290
16291
16292
16293
16294
16295
16296
16297
16298
16299
16300
16301
16302
16303
16304
16305
16306
16307
16308
16309
16310
16311
16312
16313
16314
16315
16316
16317
16318
16319
16320
16321
16322
16323
16324
16325
16326
16327
16328
16329
16330
16331
16332
16333
16334
16335
16336
16337
16338
16339
16340
16341
16342
16343
16344
16345
16346
16347
16348
16349
16350
16351
16352
16353
16354
16355
16356
16357
16358
16359
16360
16361
16362
16363
16364
16365
16366
16367
16368
16369
16370
16371
16372
16373
16374
16375
16376
16377
16378
16379
16380
16381
16382
16383
16384
16385
16386
16387
16388
16389
16390
16391
16392
16393
16394
16395
16396
16397
16398
16399
16400
16401
16402
16403
16404
16405
16406
16407
16408
16409
16410
16411
16412
16413
16414
16415
16416
16417
16418
16419
16420
16421
16422
16423
16424
16425
16426
16427
16428
16429
16430
16431
16432
16433
16434
16435
16436
16437
16438
16439
16440
16441
16442
16443
16444
16445
16446
16447
16448
16449
16450
16451
16452
16453
16454
16455
16456
16457
16458
16459
16460
16461
16462
16463
16464
16465
16466
16467
16468
16469
16470
16471
16472
16473
16474
16475
16476
16477
16478
16479
16480
16481
16482
16483
16484
16485
16486
16487
16488
16489
16490
16491
16492
16493
16494
16495
16496
16497
16498
16499
16500
16501
16502
16503
16504
16505
16506
16507
16508
16509
16510
16511
16512
16513
16514
16515
16516
16517
16518
16519
16520
16521
16522
16523
16524
16525
16526
16527
16528
16529
16530
16531
16532
16533
16534
16535
16536
16537
16538
16539
16540
16541
16542
16543
16544
16545
16546
16547
16548
16549
16550
16551
16552
16553
16554
16555
16556
16557
16558
16559
16560
16561
16562
16563
16564
16565
16566
16567
16568
16569
16570
16571
16572
16573
16574
16575
16576
16577
16578
16579
16580
16581
16582
16583
16584
16585
16586
16587
16588
16589
16590
16591
16592
16593
16594
16595
16596
16597
16598
16599
16600
16601
16602
16603
16604
16605
16606
16607
16608
16609
16610
16611
16612
16613
16614
16615
16616
16617
16618
16619
16620
16621
16622
16623
16624
16625
16626
16627
16628
16629
16630
16631
16632
16633
16634
16635
16636
16637
16638
16639
16640
16641
16642
16643
16644
16645
16646
16647
16648
16649
16650
16651
16652
16653
16654
16655
16656
16657
16658
16659
16660
16661
16662
16663
16664
16665
16666
16667
16668
16669
16670
16671
16672
16673
16674
16675
16676
16677
16678
16679
16680
16681
16682
16683
16684
16685
16686
16687
16688
16689
16690
16691
16692
16693
16694
16695
16696
16697
16698
16699
16700
16701
16702
16703
16704
16705
16706
16707
16708
16709
16710
16711
16712
16713
16714
16715
16716
16717
16718
16719
16720
16721
16722
16723
16724
16725
16726
16727
16728
16729
16730
16731
16732
16733
16734
16735
16736
16737
16738
16739
16740
16741
16742
16743
16744
16745
16746
16747
16748
16749
16750
16751
16752
16753
16754
16755
16756
16757
16758
16759
16760
16761
16762
16763
16764
16765
16766
16767
16768
16769
16770
16771
16772
16773
16774
16775
16776
16777
16778
16779
16780
16781
16782
16783
16784
16785
16786
16787
16788
16789
16790
16791
16792
16793
16794
16795
16796
16797
16798
16799
16800
16801
16802
16803
16804
16805
16806
16807
16808
16809
16810
16811
16812
16813
16814
16815
16816
16817
16818
16819
16820
16821
16822
16823
16824
16825
16826
16827
16828
16829
16830
16831
16832
16833
16834
16835
16836
16837
16838
16839
16840
16841
16842
16843
16844
16845
16846
16847
16848
16849
16850
16851
16852
16853
16854
16855
16856
16857
16858
16859
16860
16861
16862
16863
16864
16865
16866
16867
16868
16869
16870
16871
16872
16873
16874
16875
16876
16877
16878
16879
16880
16881
16882
16883
16884
16885
16886
16887
16888
16889
16890
16891
16892
16893
16894
16895
16896
16897
16898
16899
16900
16901
16902
16903
16904
16905
16906
16907
16908
16909
16910
16911
16912
16913
16914
16915
16916
16917
16918
16919
16920
16921
16922
16923
16924
16925
16926
16927
16928
16929
16930
16931
16932
16933
16934
16935
16936
16937
16938
16939
16940
16941
16942
16943
16944
16945
16946
16947
16948
16949
16950
16951
16952
16953
16954
16955
16956
16957
16958
16959
16960
16961
16962
16963
16964
16965
16966
16967
16968
16969
16970
16971
16972
16973
16974
16975
16976
16977
16978
16979
16980
16981
16982
16983
16984
16985
16986
16987
16988
16989
16990
16991
16992
16993
16994
16995
16996
16997
16998
16999
17000
17001
17002
17003
17004
17005
17006
17007
17008
17009
17010
17011
17012
17013
17014
17015
17016
17017
17018
17019
17020
17021
17022
17023
17024
17025
17026
17027
17028
17029
17030
17031
17032
17033
17034
17035
17036
17037
17038
17039
17040
17041
17042
17043
17044
17045
17046
17047
17048
17049
17050
17051
17052
17053
17054
17055
17056
17057
17058
17059
17060
17061
17062
17063
17064
17065
17066
17067
17068
17069
17070
17071
17072
17073
17074
17075
17076
17077
17078
17079
17080
17081
17082
17083
17084
17085
17086
17087
17088
17089
17090
17091
17092
17093
17094
17095
17096
17097
17098
17099
17100
17101
17102
17103
17104
17105
17106
17107
17108
17109
17110
17111
17112
17113
17114
17115
17116
17117
17118
17119
17120
17121
17122
17123
17124
17125
17126
17127
17128
17129
17130
17131
17132
17133
17134
17135
17136
17137
17138
17139
17140
17141
17142
17143
17144
17145
17146
17147
17148
17149
17150
17151
17152
17153
17154
17155
17156
17157
17158
17159
17160
17161
17162
17163
17164
17165
17166
17167
17168
17169
17170
17171
17172
17173
17174
17175
17176
17177
17178
17179
17180
17181
17182
17183
17184
17185
17186
17187
17188
17189
17190
17191
17192
17193
17194
17195
17196
17197
17198
17199
17200
17201
17202
17203
17204
17205
17206
17207
17208
17209
17210
17211
17212
17213
17214
17215
17216
17217
17218
17219
17220
17221
17222
17223
17224
17225
17226
17227
17228
17229
17230
17231
17232
17233
17234
17235
17236
17237
17238
17239
17240
17241
17242
17243
17244
17245
17246
17247
17248
17249
17250
17251
17252
17253
17254
17255
17256
17257
17258
17259
17260
17261
17262
17263
17264
17265
17266
17267
17268
17269
17270
17271
17272
17273
17274
17275
17276
17277
17278
17279
17280
17281
17282
17283
17284
17285
17286
using System;
using System.Runtime.InteropServices;
namespace CameraVisionLib.Model
{
/// <summary>
/// CHCNetSDK 的摘要说明。
/// </summary>
internal class IPCameraAPI
{
public IPCameraAPI()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
//SDK类型
public const int SDK_PLAYMPEG4 = 1;//播放库
public const int SDK_HCNETSDK = 2;//网络库
public const int NAME_LEN = 32;//用户名长度
public const int PASSWD_LEN = 16;//密码长度
public const int GUID_LEN = 16; //GUID长度
public const int DEV_TYPE_NAME_LEN = 24; //设备类型名称长度
public const int MAX_NAMELEN = 16;//DVR本地登陆名
public const int MAX_RIGHT = 32;//设备支持的权限(1-12表示本地权限,13-32表示远程权限)
public const int SERIALNO_LEN = 48;//序列号长度
public const int MACADDR_LEN = 6;//mac地址长度
public const int MAX_ETHERNET = 2;//设备可配以太网络
public const int MAX_NETWORK_CARD = 4; //设备可配最大网卡数目
public const int PATHNAME_LEN = 128;//路径长度
public const int MAX_NUMBER_LEN = 32; //号码最大长度
public const int MAX_NAME_LEN = 128; //设备名称最大长度
public const int MAX_TIMESEGMENT_V30 = 8;//9000设备最大时间段数
public const int MAX_TIMESEGMENT = 4;//8000设备最大时间段数
public const int MAX_ICR_NUM = 8; //抓拍机红外滤光片预置点数
public const int MAX_SHELTERNUM = 4;//8000设备最大遮挡区域数
public const int PHONENUMBER_LEN = 32;//pppoe拨号号码最大长度
public const int MAX_DISKNUM = 16;//8000设备最大硬盘数
public const int MAX_DISKNUM_V10 = 8;//1.2版本之前版本
public const int MAX_WINDOW_V30 = 32;//9000设备本地显示最大播放窗口数
public const int MAX_WINDOW = 16;//8000设备最大硬盘数
public const int MAX_VGA_V30 = 4;//9000设备最大可接VGA数
public const int MAX_VGA = 1;//8000设备最大可接VGA数
public const int MAX_USERNUM_V30 = 32;//9000设备最大用户数
public const int MAX_USERNUM = 16;//8000设备最大用户数
public const int MAX_EXCEPTIONNUM_V30 = 32;//9000设备最大异常处理数
public const int MAX_EXCEPTIONNUM = 16;//8000设备最大异常处理数
public const int MAX_LINK = 6;//8000设备单通道最大视频流连接数
public const int MAX_ITC_EXCEPTIONOUT = 32;//抓拍机最大报警输出
public const int MAX_DECPOOLNUM = 4;//单路解码器每个解码通道最大可循环解码数
public const int MAX_DECNUM = 4;//单路解码器的最大解码通道数(实际只有一个,其他三个保留)
public const int MAX_TRANSPARENTNUM = 2;//单路解码器可配置最大透明通道数
public const int MAX_CYCLE_CHAN = 16; //单路解码器最大轮循通道数
public const int MAX_CYCLE_CHAN_V30 = 64;//最大轮询通道数(扩展)
public const int MAX_DIRNAME_LENGTH = 80;//最大目录长度
public const int MAX_STRINGNUM_V30 = 8;//9000设备最大OSD字符行数数
public const int MAX_STRINGNUM = 4;//8000设备最大OSD字符行数数
public const int MAX_STRINGNUM_EX = 8;//8000定制扩展
public const int MAX_AUXOUT_V30 = 16;//9000设备最大辅助输出数
public const int MAX_AUXOUT = 4;//8000设备最大辅助输出数
public const int MAX_HD_GROUP = 16;//9000设备最大硬盘组数
public const int MAX_NFS_DISK = 8; //8000设备最大NFS硬盘数
public const int IW_ESSID_MAX_SIZE = 32;//WIFI的SSID号长度
public const int IW_ENCODING_TOKEN_MAX = 32;//WIFI密锁最大字节数
public const int WIFI_WEP_MAX_KEY_COUNT = 4;
public const int WIFI_WEP_MAX_KEY_LENGTH = 33;
public const int WIFI_WPA_PSK_MAX_KEY_LENGTH = 63;
public const int WIFI_WPA_PSK_MIN_KEY_LENGTH = 8;
public const int WIFI_MAX_AP_COUNT = 20;
public const int MAX_SERIAL_NUM = 64;//最多支持的透明通道路数
public const int MAX_DDNS_NUMS = 10;//9000设备最大可配ddns数
public const int MAX_EMAIL_ADDR_LEN = 48;//最大email地址长度
public const int MAX_EMAIL_PWD_LEN = 32;//最大email密码长度
public const int MAXPROGRESS = 100;//回放时的最大百分率
public const int MAX_SERIALNUM = 2;//8000设备支持的串口数 1-232, 2-485
public const int CARDNUM_LEN = 20;//卡号长度
public const int CARDNUM_LEN_OUT = 32; //外部结构体卡号长度
public const int MAX_VIDEOOUT_V30 = 4;//9000设备的视频输出数
public const int MAX_VIDEOOUT = 2;//8000设备的视频输出数
public const int MAX_PRESET_V30 = 256;// 9000设备支持的云台预置点数
public const int MAX_TRACK_V30 = 256;// 9000设备支持的云台轨迹数
public const int MAX_CRUISE_V30 = 256;// 9000设备支持的云台巡航数
public const int MAX_PRESET = 128;// 8000设备支持的云台预置点数
public const int MAX_TRACK = 128;// 8000设备支持的云台轨迹数
public const int MAX_CRUISE = 128;// 8000设备支持的云台巡航数
public const int CRUISE_MAX_PRESET_NUMS = 32;// 一条巡航最多的巡航点
public const int MAX_SERIAL_PORT = 8;//9000设备支持232串口数
public const int MAX_PREVIEW_MODE = 8;// 设备支持最大预览模式数目 1画面,4画面,9画面,16画面....
public const int MAX_MATRIXOUT = 16;// 最大模拟矩阵输出个数
public const int LOG_INFO_LEN = 11840; // 日志附加信息
public const int DESC_LEN = 16;// 云台描述字符串长度
public const int PTZ_PROTOCOL_NUM = 200;// 9000最大支持的云台协议数
public const int MAX_AUDIO = 1;//8000语音对讲通道数
public const int MAX_AUDIO_V30 = 2;//9000语音对讲通道数
public const int MAX_CHANNUM = 16;//8000设备最大通道数
public const int MAX_ALARMIN = 16;//8000设备最大报警输入数
public const int MAX_ALARMOUT = 4;//8000设备最大报警输出数
//9000 IPC接入
public const int MAX_ANALOG_CHANNUM = 32;//最大32个模拟通道
public const int MAX_ANALOG_ALARMOUT = 32; //最大32路模拟报警输出
public const int MAX_ANALOG_ALARMIN = 32;//最大32路模拟报警输入
public const int MAX_IP_DEVICE = 32;//允许接入的最大IP设备数
public const int MAX_IP_DEVICE_V40 = 64;//允许接入的最大IP设备数
public const int MAX_IP_CHANNEL = 32;//允许加入的最多IP通道数
public const int MAX_IP_ALARMIN = 128;//允许加入的最多报警输入数
public const int MAX_IP_ALARMOUT = 64;//允许加入的最多报警输出数
public const int MAX_IP_ALARMIN_V40 = 4096; //允许加入的最多报警输入数
public const int MAX_IP_ALARMOUT_V40 = 4096; //允许加入的最多报警输出数
public const int MAX_RECORD_FILE_NUM = 20; // 每次删除或者刻录的最大文件数
//SDK_V31 ATM
public const int MAX_ATM_NUM = 1;
public const int MAX_ACTION_TYPE = 12;
public const int ATM_FRAMETYPE_NUM = 4;
public const int MAX_ATM_PROTOCOL_NUM = 1025;
public const int ATM_PROTOCOL_SORT = 4;
public const int ATM_DESC_LEN = 32;
// SDK_V31 ATM
/* 最大支持的通道数 最大模拟加上最大IP支持 */
public const int MAX_CHANNUM_V30 = MAX_ANALOG_CHANNUM + MAX_IP_CHANNEL;//64
public const int MAX_ALARMOUT_V30 = MAX_ANALOG_ALARMOUT + MAX_IP_ALARMOUT;//96
public const int MAX_ALARMIN_V30 = MAX_ANALOG_ALARMIN + MAX_IP_ALARMIN;//160
public const int MAX_CHANNUM_V40 = 512;
public const int MAX_ALARMOUT_V40 = MAX_IP_ALARMOUT_V40 + MAX_ANALOG_ALARMOUT;//4128
public const int MAX_ALARMIN_V40 = MAX_IP_ALARMIN_V40 + MAX_ANALOG_ALARMOUT;//4128
public const int MAX_MULTI_AREA_NUM = 24;
public const int MAX_HUMAN_PICTURE_NUM = 10; //最大照片数
public const int MAX_HUMAN_BIRTHDATE_LEN = 10;
public const int MAX_LAYERNUMS = 32;
public const int MAX_ROIDETECT_NUM = 8; //支持的ROI区域数
public const int MAX_LANERECT_NUM = 5; //最大车牌识别区域数
public const int MAX_FORTIFY_NUM = 10; //最大布防个数
public const int MAX_INTERVAL_NUM = 4; //最大时间间隔个数
public const int MAX_CHJC_NUM = 3; //最大车辆省份简称字符个数
public const int MAX_VL_NUM = 5; //最大虚拟线圈个数
public const int MAX_DRIVECHAN_NUM = 16; //最大车道数
public const int MAX_COIL_NUM = 3; //最大线圈个数
public const int MAX_SIGNALLIGHT_NUM = 6; //最大信号灯个数
public const int LEN_32 = 32;
public const int LEN_31 = 31;
public const int MAX_CABINET_COUNT = 8; //最大支持机柜数量
public const int MAX_ID_LEN = 48;
public const int MAX_PARKNO_LEN = 16;
public const int MAX_ALARMREASON_LEN = 32;
public const int MAX_UPGRADE_INFO_LEN = 48; //获取升级文件匹配信息(模糊升级)
public const int MAX_CUSTOMDIR_LEN = 32; //自定义目录长度
public const int MAX_TRANSPARENT_CHAN_NUM = 4; //每个串口允许建立的最大透明通道数
public const int MAX_TRANSPARENT_ACCESS_NUM = 4; //每个监听端口允许接入的最大主机数
//ITS
public const int MAX_PARKING_STATUS = 8; //车位状态 0代表无车,1代表有车,2代表压线(优先级最高), 3特殊车位
public const int MAX_PARKING_NUM = 4; //一个通道最大4个车位 (从左到右车位 数组0~3)
public const int MAX_ITS_SCENE_NUM = 16; //最大场景数量
public const int MAX_SCENE_TIMESEG_NUM = 16; //最大场景时间段数量
public const int MAX_IVMS_IP_CHANNEL = 128; //最大IP通道数
public const int DEVICE_ID_LEN = 48; //设备编号长度
public const int MONITORSITE_ID_LEN = 48; //监测点编号长度
public const int MAX_AUXAREA_NUM = 16; //辅助区域最大数目
public const int MAX_SLAVE_CHANNEL_NUM = 16; //最大从通道数量
public const int MAX_SCH_TASKS_NUM = 10;
public const int MAX_SERVERID_LEN = 64; //最大服务器ID的长度
public const int MAX_SERVERDOMAIN_LEN = 128; //服务器域名最大长度
public const int MAX_AUTHENTICATEID_LEN = 64; //认证ID最大长度
public const int MAX_AUTHENTICATEPASSWD_LEN = 32; //认证密码最大长度
public const int MAX_SERVERNAME_LEN = 64; //最大服务器用户名
public const int MAX_COMPRESSIONID_LEN = 64; //编码ID的最大长度
public const int MAX_SIPSERVER_ADDRESS_LEN = 128; //SIP服务器地址支持域名和IP地址
//压线报警
public const int MAX_PlATE_NO_LEN = 32; //车牌号码最大长度 2013-09-27
public const int UPNP_PORT_NUM = 12; //upnp端口映射端口数目
public const int MAX_LOCAL_ADDR_LEN = 96; //SOCKS最大本地网段个数
public const int MAX_COUNTRY_NAME_LEN = 4; //国家简写名称长度
public const int THERMOMETRY_ALARMRULE_NUM = 40; //热成像报警规则数
public const int ACS_CARD_NO_LEN = 32; //门禁卡号长度
public const int MAX_ID_NUM_LEN = 32; //最大身份证号长度
public const int MAX_ID_NAME_LEN = 128; //最大姓名长度
public const int MAX_ID_ADDR_LEN = 280; //最大住址长度
public const int MAX_ID_ISSUING_AUTHORITY_LEN = 128; //最大签发机关长度
public const int MAX_CARD_RIGHT_PLAN_NUM = 4; //卡权限最大计划个数
public const int MAX_GROUP_NUM_128 = 128; //最大群组数
public const int MAX_CARD_READER_NUM = 64; //最大读卡器数
public const int MAX_SNEAK_PATH_NODE = 8; //最大后续读卡器数
public const int MAX_MULTI_DOOR_INTERLOCK_GROUP = 8; //最大多门互锁组数
public const int MAX_INTER_LOCK_DOOR_NUM = 8; //一个多门互锁组中最大互锁门数
public const int MAX_CASE_SENSOR_NUM = 8; //最大case sensor触发器数
public const int MAX_DOOR_NUM_256 = 256; //最大门数
public const int MAX_READER_ROUTE_NUM = 16; //最大刷卡循序路径
public const int MAX_FINGER_PRINT_NUM = 10; //最大指纹个数
public const int MAX_CARD_READER_NUM_512 = 512; //最大读卡器数
public const int NET_SDK_MULTI_CARD_GROUP_NUM_20 = 20; //单门最大多重卡组数
public const int CARD_PASSWORD_LEN = 8; //卡密码长度
public const int MAX_DOOR_CODE_LEN = 8; //房间代码长度
public const int MAX_LOCK_CODE_LEN = 8; //锁代码长度
public const int MAX_NOTICE_NUMBER_LEN = 32; //公告编号最大长度
public const int MAX_NOTICE_THEME_LEN = 64; //公告主题最大长度
public const int MAX_NOTICE_DETAIL_LEN = 1024; //公告详情最大长度
public const int MAX_NOTICE_PIC_NUM = 6; //公告信息最大图片数量
public const int MAX_DEV_NUMBER_LEN = 32; //设备编号最大长度
public const int LOCK_NAME_LEN = 32; //锁名称
public const int NET_SDK_EMPLOYEE_NO_LEN = 32; //工号长度
public const int VCA_MAX_POLYGON_POINT_NUM = 10;//检测区域最多支持10个点的多边形
public const int MAX_RULE_NUM = 8;//最多规则条数
public const int MAX_TARGET_NUM = 30;//最多目标个数
public const int MAX_CALIB_PT = 6;//最大标定点个数
public const int MIN_CALIB_PT = 4;//最小标定点个数
public const int MAX_TIMESEGMENT_2 = 2;//最大时间段数
public const int MAX_LICENSE_LEN = 16;//车牌号最大长度
public const int MAX_PLATE_NUM = 3;//车牌个数
public const int MAX_MASK_REGION_NUM = 4;//最多四个屏蔽区域
public const int MAX_SEGMENT_NUM = 6;//摄像机标定最大样本线数目
public const int MIN_SEGMENT_NUM = 3;//摄像机标定最小样本线数目
public const int MAX_CATEGORY_LEN = 8; //车牌附加信息最大字符
public const int SERIAL_NO_LEN = 16; //泊车位编号
//码流连接方式
public const int NORMALCONNECT = 1;
public const int MEDIACONNECT = 2;
//设备型号(大类)
public const int HCDVR = 1;
public const int MEDVR = 2;
public const int PCDVR = 3;
public const int HC_9000 = 4;
public const int HF_I = 5;
public const int PCNVR = 6;
public const int HC_76NVR = 8;
//NVR类型
public const int DS8000HC_NVR = 0;
public const int DS9000HC_NVR = 1;
public const int DS8000ME_NVR = 2;
/*******************全局错误码 begin**********************/
public const int NET_DVR_NOERROR = 0;//没有错误
public const int NET_DVR_PASSWORD_ERROR = 1;//用户名密码错误
public const int NET_DVR_NOENOUGHPRI = 2;//权限不足
public const int NET_DVR_NOINIT = 3;//没有初始化
public const int NET_DVR_CHANNEL_ERROR = 4;//通道号错误
public const int NET_DVR_OVER_MAXLINK = 5;//连接到DVR的客户端个数超过最大
public const int NET_DVR_VERSIONNOMATCH = 6;//版本不匹配
public const int NET_DVR_NETWORK_FAIL_CONNECT = 7;//连接服务器失败
public const int NET_DVR_NETWORK_SEND_ERROR = 8;//向服务器发送失败
public const int NET_DVR_NETWORK_RECV_ERROR = 9;//从服务器接收数据失败
public const int NET_DVR_NETWORK_RECV_TIMEOUT = 10;//从服务器接收数据超时
public const int NET_DVR_NETWORK_ERRORDATA = 11;//传送的数据有误
public const int NET_DVR_ORDER_ERROR = 12;//调用次序错误
public const int NET_DVR_OPERNOPERMIT = 13;//无此权限
public const int NET_DVR_COMMANDTIMEOUT = 14;//DVR命令执行超时
public const int NET_DVR_ERRORSERIALPORT = 15;//串口号错误
public const int NET_DVR_ERRORALARMPORT = 16;//报警端口错误
public const int NET_DVR_PARAMETER_ERROR = 17;//参数错误
public const int NET_DVR_CHAN_EXCEPTION = 18;//服务器通道处于错误状态
public const int NET_DVR_NODISK = 19;//没有硬盘
public const int NET_DVR_ERRORDISKNUM = 20;//硬盘号错误
public const int NET_DVR_DISK_FULL = 21;//服务器硬盘满
public const int NET_DVR_DISK_ERROR = 22;//服务器硬盘出错
public const int NET_DVR_NOSUPPORT = 23;//服务器不支持
public const int NET_DVR_BUSY = 24;//服务器忙
public const int NET_DVR_MODIFY_FAIL = 25;//服务器修改不成功
public const int NET_DVR_PASSWORD_FORMAT_ERROR = 26;//密码输入格式不正确
public const int NET_DVR_DISK_FORMATING = 27;//硬盘正在格式化,不能启动操作
public const int NET_DVR_DVRNORESOURCE = 28;//DVR资源不足
public const int NET_DVR_DVROPRATEFAILED = 29;//DVR操作失败
public const int NET_DVR_OPENHOSTSOUND_FAIL = 30;//打开PC声音失败
public const int NET_DVR_DVRVOICEOPENED = 31;//服务器语音对讲被占用
public const int NET_DVR_TIMEINPUTERROR = 32;//时间输入不正确
public const int NET_DVR_NOSPECFILE = 33;//回放时服务器没有指定的文件
public const int NET_DVR_CREATEFILE_ERROR = 34;//创建文件出错
public const int NET_DVR_FILEOPENFAIL = 35;//打开文件出错
public const int NET_DVR_OPERNOTFINISH = 36; //上次的操作还没有完成
public const int NET_DVR_GETPLAYTIMEFAIL = 37;//获取当前播放的时间出错
public const int NET_DVR_PLAYFAIL = 38;//播放出错
public const int NET_DVR_FILEFORMAT_ERROR = 39;//文件格式不正确
public const int NET_DVR_DIR_ERROR = 40;//路径错误
public const int NET_DVR_ALLOC_RESOURCE_ERROR = 41;//资源分配错误
public const int NET_DVR_AUDIO_MODE_ERROR = 42;//声卡模式错误
public const int NET_DVR_NOENOUGH_BUF = 43;//缓冲区太小
public const int NET_DVR_CREATESOCKET_ERROR = 44;//创建SOCKET出错
public const int NET_DVR_SETSOCKET_ERROR = 45;//设置SOCKET出错
public const int NET_DVR_MAX_NUM = 46;//个数达到最大
public const int NET_DVR_USERNOTEXIST = 47;//用户不存在
public const int NET_DVR_WRITEFLASHERROR = 48;//写FLASH出错
public const int NET_DVR_UPGRADEFAIL = 49;//DVR升级失败
public const int NET_DVR_CARDHAVEINIT = 50;//解码卡已经初始化过
public const int NET_DVR_PLAYERFAILED = 51;//调用播放库中某个函数失败
public const int NET_DVR_MAX_USERNUM = 52;//设备端用户数达到最大
public const int NET_DVR_GETLOCALIPANDMACFAIL = 53;//获得客户端的IP地址或物理地址失败
public const int NET_DVR_NOENCODEING = 54;//该通道没有编码
public const int NET_DVR_IPMISMATCH = 55;//IP地址不匹配
public const int NET_DVR_MACMISMATCH = 56;//MAC地址不匹配
public const int NET_DVR_UPGRADELANGMISMATCH = 57;//升级文件语言不匹配
public const int NET_DVR_MAX_PLAYERPORT = 58;//播放器路数达到最大
public const int NET_DVR_NOSPACEBACKUP = 59;//备份设备中没有足够空间进行备份
public const int NET_DVR_NODEVICEBACKUP = 60;//没有找到指定的备份设备
public const int NET_DVR_PICTURE_BITS_ERROR = 61;//图像素位数不符,限24色
public const int NET_DVR_PICTURE_DIMENSION_ERROR = 62;//图片高*宽超限, 限128*256
public const int NET_DVR_PICTURE_SIZ_ERROR = 63;//图片大小超限,限100K
public const int NET_DVR_LOADPLAYERSDKFAILED = 64;//载入当前目录下Player Sdk出错
public const int NET_DVR_LOADPLAYERSDKPROC_ERROR = 65;//找不到Player Sdk中某个函数入口
public const int NET_DVR_LOADDSSDKFAILED = 66;//载入当前目录下DSsdk出错
public const int NET_DVR_LOADDSSDKPROC_ERROR = 67;//找不到DsSdk中某个函数入口
public const int NET_DVR_DSSDK_ERROR = 68;//调用硬解码库DsSdk中某个函数失败
public const int NET_DVR_VOICEMONOPOLIZE = 69;//声卡被独占
public const int NET_DVR_JOINMULTICASTFAILED = 70;//加入多播组失败
public const int NET_DVR_CREATEDIR_ERROR = 71;//建立日志文件目录失败
public const int NET_DVR_BINDSOCKET_ERROR = 72;//绑定套接字失败
public const int NET_DVR_SOCKETCLOSE_ERROR = 73;//socket连接中断,此错误通常是由于连接中断或目的地不可达
public const int NET_DVR_USERID_ISUSING = 74;//注销时用户ID正在进行某操作
public const int NET_DVR_SOCKETLISTEN_ERROR = 75;//监听失败
public const int NET_DVR_PROGRAM_EXCEPTION = 76;//程序异常
public const int NET_DVR_WRITEFILE_FAILED = 77;//写文件失败
public const int NET_DVR_FORMAT_READONLY = 78;//禁止格式化只读硬盘
public const int NET_DVR_WITHSAMEUSERNAME = 79;//用户配置结构中存在相同的用户名
public const int NET_DVR_DEVICETYPE_ERROR = 80;//导入参数时设备型号不匹配
public const int NET_DVR_LANGUAGE_ERROR = 81;//导入参数时语言不匹配
public const int NET_DVR_PARAVERSION_ERROR = 82;//导入参数时软件版本不匹配
public const int NET_DVR_IPCHAN_NOTALIVE = 83; //预览时外接IP通道不在线
public const int NET_DVR_RTSP_SDK_ERROR = 84;//加载高清IPC通讯库StreamTransClient.dll失败
public const int NET_DVR_CONVERT_SDK_ERROR = 85;//加载转码库失败
public const int NET_DVR_IPC_COUNT_OVERFLOW = 86;//超出最大的ip接入通道数
public const int NET_PLAYM4_NOERROR = 500;//no error
public const int NET_PLAYM4_PARA_OVER = 501;//input parameter is invalid
public const int NET_PLAYM4_ORDER_ERROR = 502;//The order of the function to be called is error
public const int NET_PLAYM4_TIMER_ERROR = 503;//Create multimedia clock failed
public const int NET_PLAYM4_DEC_VIDEO_ERROR = 504;//Decode video data failed
public const int NET_PLAYM4_DEC_AUDIO_ERROR = 505;//Decode audio data failed
public const int NET_PLAYM4_ALLOC_MEMORY_ERROR = 506;//Allocate memory failed
public const int NET_PLAYM4_OPEN_FILE_ERROR = 507;//Open the file failed
public const int NET_PLAYM4_CREATE_OBJ_ERROR = 508;//Create thread or event failed
public const int NET_PLAYM4_CREATE_DDRAW_ERROR = 509;//Create DirectDraw object failed
public const int NET_PLAYM4_CREATE_OFFSCREEN_ERROR = 510;//failed when creating off-screen surface
public const int NET_PLAYM4_BUF_OVER = 511;//buffer is overflow
public const int NET_PLAYM4_CREATE_SOUND_ERROR = 512;//failed when creating audio device
public const int NET_PLAYM4_SET_VOLUME_ERROR = 513;//Set volume failed
public const int NET_PLAYM4_SUPPORT_FILE_ONLY = 514;//The function only support play file
public const int NET_PLAYM4_SUPPORT_STREAM_ONLY = 515;//The function only support play stream
public const int NET_PLAYM4_SYS_NOT_SUPPORT = 516;//System not support
public const int NET_PLAYM4_FILEHEADER_UNKNOWN = 517;//No file header
public const int NET_PLAYM4_VERSION_INCORRECT = 518;//The version of decoder and encoder is not adapted
public const int NET_PALYM4_INIT_DECODER_ERROR = 519;//Initialize decoder failed
public const int NET_PLAYM4_CHECK_FILE_ERROR = 520;//The file data is unknown
public const int NET_PLAYM4_INIT_TIMER_ERROR = 521;//Initialize multimedia clock failed
public const int NET_PLAYM4_BLT_ERROR = 522;//Blt failed
public const int NET_PLAYM4_UPDATE_ERROR = 523;//Update failed
public const int NET_PLAYM4_OPEN_FILE_ERROR_MULTI = 524;//openfile error, streamtype is multi
public const int NET_PLAYM4_OPEN_FILE_ERROR_VIDEO = 525;//openfile error, streamtype is video
public const int NET_PLAYM4_JPEG_COMPRESS_ERROR = 526;//JPEG compress error
public const int NET_PLAYM4_EXTRACT_NOT_SUPPORT = 527;//Don't support the version of this file
public const int NET_PLAYM4_EXTRACT_DATA_ERROR = 528;//extract video data failed
/*******************全局错误码 end**********************/
/*************************************************
NET_DVR_IsSupport()返回值
1-9位分别表示以下信息(位与是TRUE)表示支持;
**************************************************/
public const int NET_DVR_SUPPORT_DDRAW = 1;//支持DIRECTDRAW,如果不支持,则播放器不能工作
public const int NET_DVR_SUPPORT_BLT = 2;//显卡支持BLT操作,如果不支持,则播放器不能工作
public const int NET_DVR_SUPPORT_BLTFOURCC = 4;//显卡BLT支持颜色转换,如果不支持,播放器会用软件方法作RGB转换
public const int NET_DVR_SUPPORT_BLTSHRINKX = 8;//显卡BLT支持X轴缩小;如果不支持,系统会用软件方法转换
public const int NET_DVR_SUPPORT_BLTSHRINKY = 16;//显卡BLT支持Y轴缩小;如果不支持,系统会用软件方法转换
public const int NET_DVR_SUPPORT_BLTSTRETCHX = 32;//显卡BLT支持X轴放大;如果不支持,系统会用软件方法转换
public const int NET_DVR_SUPPORT_BLTSTRETCHY = 64;//显卡BLT支持Y轴放大;如果不支持,系统会用软件方法转换
public const int NET_DVR_SUPPORT_SSE = 128;//CPU支持SSE指令,Intel Pentium3以上支持SSE指令
public const int NET_DVR_SUPPORT_MMX = 256;//CPU支持MMX指令集,Intel Pentium3以上支持SSE指令
/**********************云台控制命令 begin*************************/
public const int LIGHT_PWRON = 2;// 接通灯光电源
public const int WIPER_PWRON = 3;// 接通雨刷开关
public const int FAN_PWRON = 4;// 接通风扇开关
public const int HEATER_PWRON = 5;// 接通加热器开关
public const int AUX_PWRON1 = 6;// 接通辅助设备开关
public const int AUX_PWRON2 = 7;// 接通辅助设备开关
public const int SET_PRESET = 8;// 设置预置点
public const int CLE_PRESET = 9;// 清除预置点
public const int ZOOM_IN = 11;// 焦距以速度SS变大(倍率变大)
public const int ZOOM_OUT = 12;// 焦距以速度SS变小(倍率变小)
public const int FOCUS_NEAR = 13;// 焦点以速度SS前调
public const int FOCUS_FAR = 14;// 焦点以速度SS后调
public const int IRIS_OPEN = 15;// 光圈以速度SS扩大
public const int IRIS_CLOSE = 16;// 光圈以速度SS缩小
public const int TILT_UP = 21;/* 云台以SS的速度上仰 */
public const int TILT_DOWN = 22;/* 云台以SS的速度下俯 */
public const int PAN_LEFT = 23;/* 云台以SS的速度左转 */
public const int PAN_RIGHT = 24;/* 云台以SS的速度右转 */
public const int UP_LEFT = 25;/* 云台以SS的速度上仰和左转 */
public const int UP_RIGHT = 26;/* 云台以SS的速度上仰和右转 */
public const int DOWN_LEFT = 27;/* 云台以SS的速度下俯和左转 */
public const int DOWN_RIGHT = 28;/* 云台以SS的速度下俯和右转 */
public const int PAN_AUTO = 29;/* 云台以SS的速度左右自动扫描 */
public const int FILL_PRE_SEQ = 30;/* 将预置点加入巡航序列 */
public const int SET_SEQ_DWELL = 31;/* 设置巡航点停顿时间 */
public const int SET_SEQ_SPEED = 32;/* 设置巡航速度 */
public const int CLE_PRE_SEQ = 33;/* 将预置点从巡航序列中删除 */
public const int STA_MEM_CRUISE = 34;/* 开始记录轨迹 */
public const int STO_MEM_CRUISE = 35;/* 停止记录轨迹 */
public const int RUN_CRUISE = 36;/* 开始轨迹 */
public const int RUN_SEQ = 37;/* 开始巡航 */
public const int STOP_SEQ = 38;/* 停止巡航 */
public const int GOTO_PRESET = 39;/* 快球转到预置点 */
/**********************云台控制命令 end*************************/
/*************************************************
回放时播放控制命令宏定义
NET_DVR_PlayBackControl
NET_DVR_PlayControlLocDisplay
NET_DVR_DecPlayBackCtrl的宏定义
具体支持查看函数说明和代码
**************************************************/
public const int NET_DVR_PLAYSTART = 1;//开始播放
public const int NET_DVR_PLAYSTOP = 2;//停止播放
public const int NET_DVR_PLAYPAUSE = 3;//暂停播放
public const int NET_DVR_PLAYRESTART = 4;//恢复播放
public const int NET_DVR_PLAYFAST = 5;//快放
public const int NET_DVR_PLAYSLOW = 6;//慢放
public const int NET_DVR_PLAYNORMAL = 7;//正常速度
public const int NET_DVR_PLAYFRAME = 8;//单帧放
public const int NET_DVR_PLAYSTARTAUDIO = 9;//打开声音
public const int NET_DVR_PLAYSTOPAUDIO = 10;//关闭声音
public const int NET_DVR_PLAYAUDIOVOLUME = 11;//调节音量
public const int NET_DVR_PLAYSETPOS = 12;//改变文件回放的进度
public const int NET_DVR_PLAYGETPOS = 13;//获取文件回放的进度
public const int NET_DVR_PLAYGETTIME = 14;//获取当前已经播放的时间(按文件回放的时候有效)
public const int NET_DVR_PLAYGETFRAME = 15;//获取当前已经播放的帧数(按文件回放的时候有效)
public const int NET_DVR_GETTOTALFRAMES = 16;//获取当前播放文件总的帧数(按文件回放的时候有效)
public const int NET_DVR_GETTOTALTIME = 17;//获取当前播放文件总的时间(按文件回放的时候有效)
public const int NET_DVR_THROWBFRAME = 20;//丢B帧
public const int NET_DVR_SETSPEED = 24;//设置码流速度
public const int NET_DVR_KEEPALIVE = 25;//保持与设备的心跳(如果回调阻塞,建议2秒发送一次)
public const int NET_DVR_PLAYSETTIME = 26;//按绝对时间定位
public const int NET_DVR_PLAYGETTOTALLEN = 27;//获取按时间回放对应时间段内的所有文件的总长度
public const int NET_DVR_PLAY_FORWARD = 29;//倒放切换为正放
public const int NET_DVR_PLAY_REVERSE = 30;//正放切换为倒放
public const int NET_DVR_SET_TRANS_TYPE = 32;//设置转封装类型
public const int NET_DVR_PLAY_CONVERT = 33;//正放切换为倒放
//远程按键定义如下:
/* key value send to CONFIG program */
public const int KEY_CODE_1 = 1;
public const int KEY_CODE_2 = 2;
public const int KEY_CODE_3 = 3;
public const int KEY_CODE_4 = 4;
public const int KEY_CODE_5 = 5;
public const int KEY_CODE_6 = 6;
public const int KEY_CODE_7 = 7;
public const int KEY_CODE_8 = 8;
public const int KEY_CODE_9 = 9;
public const int KEY_CODE_0 = 10;
public const int KEY_CODE_POWER = 11;
public const int KEY_CODE_MENU = 12;
public const int KEY_CODE_ENTER = 13;
public const int KEY_CODE_CANCEL = 14;
public const int KEY_CODE_UP = 15;
public const int KEY_CODE_DOWN = 16;
public const int KEY_CODE_LEFT = 17;
public const int KEY_CODE_RIGHT = 18;
public const int KEY_CODE_EDIT = 19;
public const int KEY_CODE_ADD = 20;
public const int KEY_CODE_MINUS = 21;
public const int KEY_CODE_PLAY = 22;
public const int KEY_CODE_REC = 23;
public const int KEY_CODE_PAN = 24;
public const int KEY_CODE_M = 25;
public const int KEY_CODE_A = 26;
public const int KEY_CODE_F1 = 27;
public const int KEY_CODE_F2 = 28;
/* for PTZ control */
public const int KEY_PTZ_UP_START = KEY_CODE_UP;
public const int KEY_PTZ_UP_STOP = 32;
public const int KEY_PTZ_DOWN_START = KEY_CODE_DOWN;
public const int KEY_PTZ_DOWN_STOP = 33;
public const int KEY_PTZ_LEFT_START = KEY_CODE_LEFT;
public const int KEY_PTZ_LEFT_STOP = 34;
public const int KEY_PTZ_RIGHT_START = KEY_CODE_RIGHT;
public const int KEY_PTZ_RIGHT_STOP = 35;
public const int KEY_PTZ_AP1_START = KEY_CODE_EDIT;/* 光圈+ */
public const int KEY_PTZ_AP1_STOP = 36;
public const int KEY_PTZ_AP2_START = KEY_CODE_PAN;/* 光圈- */
public const int KEY_PTZ_AP2_STOP = 37;
public const int KEY_PTZ_FOCUS1_START = KEY_CODE_A;/* 聚焦+ */
public const int KEY_PTZ_FOCUS1_STOP = 38;
public const int KEY_PTZ_FOCUS2_START = KEY_CODE_M;/* 聚焦- */
public const int KEY_PTZ_FOCUS2_STOP = 39;
public const int KEY_PTZ_B1_START = 40;/* 变倍+ */
public const int KEY_PTZ_B1_STOP = 41;
public const int KEY_PTZ_B2_START = 42;/* 变倍- */
public const int KEY_PTZ_B2_STOP = 43;
//9000新增
public const int KEY_CODE_11 = 44;
public const int KEY_CODE_12 = 45;
public const int KEY_CODE_13 = 46;
public const int KEY_CODE_14 = 47;
public const int KEY_CODE_15 = 48;
public const int KEY_CODE_16 = 49;
/*************************参数配置命令 begin*******************************/
//用于NET_DVR_SetDVRConfig和NET_DVR_GetDVRConfig,注意其对应的配置结构
public const int NET_DVR_GET_DEVICECFG = 100;//获取设备参数
public const int NET_DVR_SET_DEVICECFG = 101;//设置设备参数
public const int NET_DVR_GET_NETCFG = 102;//获取网络参数
public const int NET_DVR_SET_NETCFG = 103;//设置网络参数
public const int NET_DVR_GET_PICCFG = 104;//获取图象参数
public const int NET_DVR_SET_PICCFG = 105;//设置图象参数
public const int NET_DVR_GET_COMPRESSCFG = 106;//获取压缩参数
public const int NET_DVR_SET_COMPRESSCFG = 107;//设置压缩参数
public const int NET_DVR_GET_RECORDCFG = 108;//获取录像时间参数
public const int NET_DVR_SET_RECORDCFG = 109;//设置录像时间参数
public const int NET_DVR_GET_DECODERCFG = 110;//获取解码器参数
public const int NET_DVR_SET_DECODERCFG = 111;//设置解码器参数
public const int NET_DVR_GET_RS232CFG = 112;//获取232串口参数
public const int NET_DVR_SET_RS232CFG = 113;//设置232串口参数
public const int NET_DVR_GET_ALARMINCFG = 114;//获取报警输入参数
public const int NET_DVR_SET_ALARMINCFG = 115;//设置报警输入参数
public const int NET_DVR_GET_ALARMOUTCFG = 116;//获取报警输出参数
public const int NET_DVR_SET_ALARMOUTCFG = 117;//设置报警输出参数
public const int NET_DVR_GET_TIMECFG = 118;//获取DVR时间
public const int NET_DVR_SET_TIMECFG = 119;//设置DVR时间
public const int NET_DVR_GET_PREVIEWCFG = 120;//获取预览参数
public const int NET_DVR_SET_PREVIEWCFG = 121;//设置预览参数
public const int NET_DVR_GET_VIDEOOUTCFG = 122;//获取视频输出参数
public const int NET_DVR_SET_VIDEOOUTCFG = 123;//设置视频输出参数
public const int NET_DVR_GET_USERCFG = 124;//获取用户参数
public const int NET_DVR_SET_USERCFG = 125;//设置用户参数
public const int NET_DVR_GET_EXCEPTIONCFG = 126;//获取异常参数
public const int NET_DVR_SET_EXCEPTIONCFG = 127;//设置异常参数
public const int NET_DVR_GET_ZONEANDDST = 128;//获取时区和夏时制参数
public const int NET_DVR_SET_ZONEANDDST = 129;//设置时区和夏时制参数
public const int NET_DVR_GET_SHOWSTRING = 130;//获取叠加字符参数
public const int NET_DVR_SET_SHOWSTRING = 131;//设置叠加字符参数
public const int NET_DVR_GET_EVENTCOMPCFG = 132;//获取事件触发录像参数
public const int NET_DVR_SET_EVENTCOMPCFG = 133;//设置事件触发录像参数
public const int NET_DVR_GET_AUXOUTCFG = 140;//获取报警触发辅助输出设置(HS设备辅助输出2006-02-28)
public const int NET_DVR_SET_AUXOUTCFG = 141;//设置报警触发辅助输出设置(HS设备辅助输出2006-02-28)
public const int NET_DVR_GET_PREVIEWCFG_AUX = 142;//获取-s系列双输出预览参数(-s系列双输出2006-04-13)
public const int NET_DVR_SET_PREVIEWCFG_AUX = 143;//设置-s系列双输出预览参数(-s系列双输出2006-04-13)
public const int NET_DVR_GET_PICCFG_EX = 200;//获取图象参数(SDK_V14扩展命令)
public const int NET_DVR_SET_PICCFG_EX = 201;//设置图象参数(SDK_V14扩展命令)
public const int NET_DVR_GET_USERCFG_EX = 202;//获取用户参数(SDK_V15扩展命令)
public const int NET_DVR_SET_USERCFG_EX = 203;//设置用户参数(SDK_V15扩展命令)
public const int NET_DVR_GET_COMPRESSCFG_EX = 204;//获取压缩参数(SDK_V15扩展命令2006-05-15)
public const int NET_DVR_SET_COMPRESSCFG_EX = 205;//设置压缩参数(SDK_V15扩展命令2006-05-15)
public const int NET_DVR_GET_NETAPPCFG = 222;//获取网络应用参数 NTP/DDNS/EMAIL
public const int NET_DVR_SET_NETAPPCFG = 223;//设置网络应用参数 NTP/DDNS/EMAIL
public const int NET_DVR_GET_NTPCFG = 224;//获取网络应用参数 NTP
public const int NET_DVR_SET_NTPCFG = 225;//设置网络应用参数 NTP
public const int NET_DVR_GET_DDNSCFG = 226;//获取网络应用参数 DDNS
public const int NET_DVR_SET_DDNSCFG = 227;//设置网络应用参数 DDNS
//对应NET_DVR_EMAILPARA
public const int NET_DVR_GET_EMAILCFG = 228;//获取网络应用参数 EMAIL
public const int NET_DVR_SET_EMAILCFG = 229;//设置网络应用参数 EMAIL
public const int NET_DVR_GET_NFSCFG = 230;/* NFS disk config */
public const int NET_DVR_SET_NFSCFG = 231;/* NFS disk config */
public const int NET_DVR_GET_SHOWSTRING_EX = 238;//获取叠加字符参数扩展(支持8条字符)
public const int NET_DVR_SET_SHOWSTRING_EX = 239;//设置叠加字符参数扩展(支持8条字符)
public const int NET_DVR_GET_NETCFG_OTHER = 244;//获取网络参数
public const int NET_DVR_SET_NETCFG_OTHER = 245;//设置网络参数
//对应NET_DVR_EMAILCFG结构
public const int NET_DVR_GET_EMAILPARACFG = 250;//Get EMAIL parameters
public const int NET_DVR_SET_EMAILPARACFG = 251;//Setup EMAIL parameters
public const int NET_DVR_GET_DDNSCFG_EX = 274;//获取扩展DDNS参数
public const int NET_DVR_SET_DDNSCFG_EX = 275;//设置扩展DDNS参数
public const int NET_DVR_SET_PTZPOS = 292;//云台设置PTZ位置
public const int NET_DVR_GET_PTZPOS = 293;//云台获取PTZ位置
public const int NET_DVR_GET_PTZSCOPE = 294;//云台获取PTZ范围
public const int NET_DVR_GET_AP_INFO_LIST = 305;//获取无线网络资源参数
public const int NET_DVR_SET_WIFI_CFG = 306;//设置IP监控设备无线参数
public const int NET_DVR_GET_WIFI_CFG = 307;//获取IP监控设备无线参数
public const int NET_DVR_SET_WIFI_WORKMODE = 308;//设置IP监控设备网口工作模式参数
public const int NET_DVR_GET_WIFI_WORKMODE = 309;//获取IP监控设备网口工作模式参数
public const int NET_DVR_GET_WIFI_STATUS = 310; //获取设备当前wifi连接状态
/***************************智能服务器 begin *****************************/
//智能设备类型
public const int DS6001_HF_B = 60;//行为分析:DS6001-HF/B
public const int DS6001_HF_P = 61;//车牌识别:DS6001-HF/P
public const int DS6002_HF_B = 62;//双机跟踪:DS6002-HF/B
public const int DS6101_HF_B = 63;//行为分析:DS6101-HF/B
public const int IDS52XX = 64;//智能分析仪IVMS
public const int DS9000_IVS = 65;//9000系列智能DVR
public const int DS8004_AHL_A = 66;//智能ATM, DS8004AHL-S/A
public const int DS6101_HF_P = 67;//车牌识别:DS6101-HF/P
//能力获取命令
public const int VCA_DEV_ABILITY = 256;//设备智能分析的总能力
public const int VCA_CHAN_ABILITY = 272;//行为分析能力
public const int MATRIXDECODER_ABILITY = 512;//多路解码器显示、解码能力
//获取/设置大接口参数配置命令
//车牌识别(NET_VCA_PLATE_CFG)
public const int NET_DVR_SET_PLATECFG = 150;//设置车牌识别参数
public const int NET_DVR_GET_PLATECFG = 151;//获取车牌识别参数
//行为对应(NET_VCA_RULECFG)
public const int NET_DVR_SET_RULECFG = 152;//设置行为分析规则
public const int NET_DVR_GET_RULECFG = 153;//获取行为分析规则
//双摄像机标定参数(NET_DVR_LF_CFG)
public const int NET_DVR_SET_LF_CFG = 160;//设置双摄像机的配置参数
public const int NET_DVR_GET_LF_CFG = 161;//获取双摄像机的配置参数
//智能分析仪取流配置结构
public const int NET_DVR_SET_IVMS_STREAMCFG = 162;//设置智能分析仪取流参数
public const int NET_DVR_GET_IVMS_STREAMCFG = 163;//获取智能分析仪取流参数
//智能控制参数结构
public const int NET_DVR_SET_VCA_CTRLCFG = 164;//设置智能控制参数
public const int NET_DVR_GET_VCA_CTRLCFG = 165;//获取智能控制参数
//屏蔽区域NET_VCA_MASK_REGION_LIST
public const int NET_DVR_SET_VCA_MASK_REGION = 166;//设置屏蔽区域参数
public const int NET_DVR_GET_VCA_MASK_REGION = 167;//获取屏蔽区域参数
//ATM进入区域 NET_VCA_ENTER_REGION
public const int NET_DVR_SET_VCA_ENTER_REGION = 168;//设置进入区域参数
public const int NET_DVR_GET_VCA_ENTER_REGION = 169;//获取进入区域参数
//标定线配置NET_VCA_LINE_SEGMENT_LIST
public const int NET_DVR_SET_VCA_LINE_SEGMENT = 170;//设置标定线
public const int NET_DVR_GET_VCA_LINE_SEGMENT = 171;//获取标定线
// ivms屏蔽区域NET_IVMS_MASK_REGION_LIST
public const int NET_DVR_SET_IVMS_MASK_REGION = 172;//设置IVMS屏蔽区域参数
public const int NET_DVR_GET_IVMS_MASK_REGION = 173;//获取IVMS屏蔽区域参数
// ivms进入检测区域NET_IVMS_ENTER_REGION
public const int NET_DVR_SET_IVMS_ENTER_REGION = 174;//设置IVMS进入区域参数
public const int NET_DVR_GET_IVMS_ENTER_REGION = 175;//获取IVMS进入区域参数
public const int NET_DVR_SET_IVMS_BEHAVIORCFG = 176;//设置智能分析仪行为规则参数
public const int NET_DVR_GET_IVMS_BEHAVIORCFG = 177;//获取智能分析仪行为规则参数
// IVMS 回放检索
public const int NET_DVR_IVMS_SET_SEARCHCFG = 178;//设置IVMS回放检索参数
public const int NET_DVR_IVMS_GET_SEARCHCFG = 179;//获取IVMS回放检索参数
/***************************DS9000新增命令(_V30) begin *****************************/
//网络(NET_DVR_NETCFG_V30结构)
public const int NET_DVR_GET_NETCFG_V30 = 1000;//获取网络参数
public const int NET_DVR_SET_NETCFG_V30 = 1001;//设置网络参数
//图象(NET_DVR_PICCFG_V30结构)
public const int NET_DVR_GET_PICCFG_V30 = 1002;//获取图象参数
public const int NET_DVR_SET_PICCFG_V30 = 1003;//设置图象参数
//图象(NET_DVR_PICCFG_V40结构)
public const int NET_DVR_GET_PICCFG_V40 = 6179;//获取图象参数V40扩展
public const int NET_DVR_SET_PICCFG_V40 = 6180;//设置图象参数V40扩展
//录像时间(NET_DVR_RECORD_V30结构)
public const int NET_DVR_GET_RECORDCFG_V30 = 1004;//获取录像参数
public const int NET_DVR_SET_RECORDCFG_V30 = 1005;//设置录像参数
public const int NET_DVR_GET_RECORDCFG_V40 = 1008; //获取录像参数(扩展)
public const int NET_DVR_SET_RECORDCFG_V40 = 1009; //设置录像参数(扩展)
//用户(NET_DVR_USER_V30结构)
public const int NET_DVR_GET_USERCFG_V30 = 1006;//获取用户参数
public const int NET_DVR_SET_USERCFG_V30 = 1007;//设置用户参数
//9000DDNS参数配置(NET_DVR_DDNSPARA_V30结构)
public const int NET_DVR_GET_DDNSCFG_V30 = 1010;//获取DDNS(9000扩展)
public const int NET_DVR_SET_DDNSCFG_V30 = 1011;//设置DDNS(9000扩展)
//EMAIL功能(NET_DVR_EMAILCFG_V30结构)
public const int NET_DVR_GET_EMAILCFG_V30 = 1012;//获取EMAIL参数
public const int NET_DVR_SET_EMAILCFG_V30 = 1013;//设置EMAIL参数
//巡航参数 (NET_DVR_CRUISE_PARA结构)
public const int NET_DVR_GET_CRUISE = 1020;
public const int NET_DVR_SET_CRUISE = 1021;
//报警输入结构参数 (NET_DVR_ALARMINCFG_V30结构)
public const int NET_DVR_GET_ALARMINCFG_V30 = 1024;
public const int NET_DVR_SET_ALARMINCFG_V30 = 1025;
//报警输出结构参数 (NET_DVR_ALARMOUTCFG_V30结构)
public const int NET_DVR_GET_ALARMOUTCFG_V30 = 1026;
public const int NET_DVR_SET_ALARMOUTCFG_V30 = 1027;
//视频输出结构参数 (NET_DVR_VIDEOOUT_V30结构)
public const int NET_DVR_GET_VIDEOOUTCFG_V30 = 1028;
public const int NET_DVR_SET_VIDEOOUTCFG_V30 = 1029;
//叠加字符结构参数 (NET_DVR_SHOWSTRING_V30结构)
public const int NET_DVR_GET_SHOWSTRING_V30 = 1030;
public const int NET_DVR_SET_SHOWSTRING_V30 = 1031;
//异常结构参数 (NET_DVR_EXCEPTION_V30结构)
public const int NET_DVR_GET_EXCEPTIONCFG_V30 = 1034;
public const int NET_DVR_SET_EXCEPTIONCFG_V30 = 1035;
//串口232结构参数 (NET_DVR_RS232CFG_V30结构)
public const int NET_DVR_GET_RS232CFG_V30 = 1036;
public const int NET_DVR_SET_RS232CFG_V30 = 1037;
//网络硬盘接入结构参数 (NET_DVR_NET_DISKCFG结构)
public const int NET_DVR_GET_NET_DISKCFG = 1038;//网络硬盘接入获取
public const int NET_DVR_SET_NET_DISKCFG = 1039;//网络硬盘接入设置
//压缩参数 (NET_DVR_COMPRESSIONCFG_V30结构)
public const int NET_DVR_GET_COMPRESSCFG_V30 = 1040;
public const int NET_DVR_SET_COMPRESSCFG_V30 = 1041;
//获取485解码器参数 (NET_DVR_DECODERCFG_V30结构)
public const int NET_DVR_GET_DECODERCFG_V30 = 1042;//获取解码器参数
public const int NET_DVR_SET_DECODERCFG_V30 = 1043;//设置解码器参数
//获取预览参数 (NET_DVR_PREVIEWCFG_V30结构)
public const int NET_DVR_GET_PREVIEWCFG_V30 = 1044;//获取预览参数
public const int NET_DVR_SET_PREVIEWCFG_V30 = 1045;//设置预览参数
//辅助预览参数 (NET_DVR_PREVIEWCFG_AUX_V30结构)
public const int NET_DVR_GET_PREVIEWCFG_AUX_V30 = 1046;//获取辅助预览参数
public const int NET_DVR_SET_PREVIEWCFG_AUX_V30 = 1047;//设置辅助预览参数
//IP接入配置参数 (NET_DVR_IPPARACFG结构)
public const int NET_DVR_GET_IPPARACFG = 1048; //获取IP接入配置信息
public const int NET_DVR_SET_IPPARACFG = 1049;//设置IP接入配置信息
//IP接入配置参数 (NET_DVR_IPPARACFG_V40结构)
public const int NET_DVR_GET_IPPARACFG_V40 = 1062; //获取IP接入配置信息
public const int NET_DVR_SET_IPPARACFG_V40 = 1063;//设置IP接入配置信息
//IP报警输入接入配置参数 (NET_DVR_IPALARMINCFG结构)
public const int NET_DVR_GET_IPALARMINCFG = 1050; //获取IP报警输入接入配置信息
public const int NET_DVR_SET_IPALARMINCFG = 1051; //设置IP报警输入接入配置信息
//IP报警输出接入配置参数 (NET_DVR_IPALARMOUTCFG结构)
public const int NET_DVR_GET_IPALARMOUTCFG = 1052;//获取IP报警输出接入配置信息
public const int NET_DVR_SET_IPALARMOUTCFG = 1053;//设置IP报警输出接入配置信息
//硬盘管理的参数获取 (NET_DVR_HDCFG结构)
public const int NET_DVR_GET_HDCFG = 1054;//获取硬盘管理配置参数
public const int NET_DVR_SET_HDCFG = 1055;//设置硬盘管理配置参数
//盘组管理的参数获取 (NET_DVR_HDGROUP_CFG结构)
public const int NET_DVR_GET_HDGROUP_CFG = 1056;//获取盘组管理配置参数
public const int NET_DVR_SET_HDGROUP_CFG = 1057;//设置盘组管理配置参数
//设备编码类型配置(NET_DVR_COMPRESSION_AUDIO结构)
public const int NET_DVR_GET_COMPRESSCFG_AUD = 1058;//获取设备语音对讲编码参数
public const int NET_DVR_SET_COMPRESSCFG_AUD = 1059;//设置设备语音对讲编码参数
//IP接入配置参数 (NET_DVR_IPPARACFG_V31结构)
public const int NET_DVR_GET_IPPARACFG_V31 = 1060;//获取IP接入配置信息
public const int NET_DVR_SET_IPPARACFG_V31 = 1061; //设置IP接入配置信息
//设备参数配置 (NET_DVR_DEVICECFG_V40结构)
public const int NET_DVR_GET_DEVICECFG_V40 = 1100;//获取设备参数
public const int NET_DVR_SET_DEVICECFG_V40 = 1101;//设置设备参数
//多网卡配置(NET_DVR_NETCFG_MULTI结构)
public const int NET_DVR_GET_NETCFG_MULTI = 1161;
public const int NET_DVR_SET_NETCFG_MULTI = 1162;
//BONDING网卡(NET_DVR_NETWORK_BONDING结构)
public const int NET_DVR_GET_NETWORK_BONDING = 1254;
public const int NET_DVR_SET_NETWORK_BONDING = 1255;
//NAT映射配置参数 (NET_DVR_NAT_CFG结构)
public const int NET_DVR_GET_NAT_CFG = 6111; //获取NAT映射参数
public const int NET_DVR_SET_NAT_CFG = 6112; //设置NAT映射参数
//预置点名称获取与设置
public const int NET_DVR_GET_PRESET_NAME = 3383;
public const int NET_DVR_SET_PRESET_NAME = 3382;
public const int NET_VCA_GET_RULECFG_V41 = 5011; //获取行为分析参数
public const int NET_VCA_SET_RULECFG_V41 = 5012; //设置行为分析参数
public const int NET_DVR_GET_TRAVERSE_PLANE_DETECTION = 3360; //获取越界侦测配置
public const int NET_DVR_SET_TRAVERSE_PLANE_DETECTION = 3361; //设置越界侦测配置
public const int NET_DVR_GET_THERMOMETRY_ALARMRULE = 3627; //获取预置点测温报警规则配置
public const int NET_DVR_SET_THERMOMETRY_ALARMRULE = 3628; //设置预置点测温报警规则配置
public const int NET_DVR_GET_THERMOMETRY_TRIGGER = 3632; //获取测温联动配置
public const int NET_DVR_SET_THERMOMETRY_TRIGGER = 3633; //设置测温联动配置
public const int NET_DVR_SET_MANUALTHERM_BASICPARAM = 6716; //设置手动测温基本参数
public const int NET_DVR_GET_MANUALTHERM_BASICPARAM = 6717; //获取手动测温基本参数
public const int NET_DVR_SET_MANUALTHERM = 6708; //设置手动测温数据设置
public const int NET_DVR_GET_MULTI_STREAM_COMPRESSIONCFG = 3216; //远程获取多码流压缩参数
public const int NET_DVR_SET_MULTI_STREAM_COMPRESSIONCFG = 3217; //远程设置多码流压缩参数
public const int NET_DVR_VIDEO_CALL_SIGNAL_PROCESS = 16032; //可视话对讲信令处理
/*************************参数配置命令 end*******************************/
/************************DVR日志 begin***************************/
/* 报警 */
//主类型
public const int MAJOR_ALARM = 1;
//次类型
public const int MINOR_ALARM_IN = 1;/* 报警输入 */
public const int MINOR_ALARM_OUT = 2;/* 报警输出 */
public const int MINOR_MOTDET_START = 3; /* 移动侦测报警开始 */
public const int MINOR_MOTDET_STOP = 4; /* 移动侦测报警结束 */
public const int MINOR_HIDE_ALARM_START = 5;/* 遮挡报警开始 */
public const int MINOR_HIDE_ALARM_STOP = 6;/* 遮挡报警结束 */
public const int MINOR_VCA_ALARM_START = 7;/*智能报警开始*/
public const int MINOR_VCA_ALARM_STOP = 8;/*智能报警停止*/
/* 异常 */
//主类型
public const int MAJOR_EXCEPTION = 2;
//次类型
public const int MINOR_VI_LOST = 33;/* 视频信号丢失 */
public const int MINOR_ILLEGAL_ACCESS = 34;/* 非法访问 */
public const int MINOR_HD_FULL = 35;/* 硬盘满 */
public const int MINOR_HD_ERROR = 36;/* 硬盘错误 */
public const int MINOR_DCD_LOST = 37;/* MODEM 掉线(保留不使用) */
public const int MINOR_IP_CONFLICT = 38;/* IP地址冲突 */
public const int MINOR_NET_BROKEN = 39;/* 网络断开*/
public const int MINOR_REC_ERROR = 40;/* 录像出错 */
public const int MINOR_IPC_NO_LINK = 41;/* IPC连接异常 */
public const int MINOR_VI_EXCEPTION = 42;/* 视频输入异常(只针对模拟通道) */
public const int MINOR_IPC_IP_CONFLICT = 43;/*ipc ip 地址 冲突*/
//视频综合平台
public const int MINOR_FANABNORMAL = 49;/* 视频综合平台:风扇状态异常 */
public const int MINOR_FANRESUME = 50;/* 视频综合平台:风扇状态恢复正常 */
public const int MINOR_SUBSYSTEM_ABNORMALREBOOT = 51;/* 视频综合平台:6467异常重启 */
public const int MINOR_MATRIX_STARTBUZZER = 52;/* 视频综合平台:dm6467异常,启动蜂鸣器 */
/* 操作 */
//主类型
public const int MAJOR_OPERATION = 3;
//次类型
public const int MINOR_START_DVR = 65;/* 开机 */
public const int MINOR_STOP_DVR = 66;/* 关机 */
public const int MINOR_STOP_ABNORMAL = 67;/* 异常关机 */
public const int MINOR_REBOOT_DVR = 68;/*本地重启设备*/
public const int MINOR_LOCAL_LOGIN = 80;/* 本地登陆 */
public const int MINOR_LOCAL_LOGOUT = 81;/* 本地注销登陆 */
public const int MINOR_LOCAL_CFG_PARM = 82;/* 本地配置参数 */
public const int MINOR_LOCAL_PLAYBYFILE = 83;/* 本地按文件回放或下载 */
public const int MINOR_LOCAL_PLAYBYTIME = 84;/* 本地按时间回放或下载*/
public const int MINOR_LOCAL_START_REC = 85;/* 本地开始录像 */
public const int MINOR_LOCAL_STOP_REC = 86;/* 本地停止录像 */
public const int MINOR_LOCAL_PTZCTRL = 87;/* 本地云台控制 */
public const int MINOR_LOCAL_PREVIEW = 88;/* 本地预览 (保留不使用)*/
public const int MINOR_LOCAL_MODIFY_TIME = 89;/* 本地修改时间(保留不使用) */
public const int MINOR_LOCAL_UPGRADE = 90;/* 本地升级 */
public const int MINOR_LOCAL_RECFILE_OUTPUT = 91;/* 本地备份录象文件 */
public const int MINOR_LOCAL_FORMAT_HDD = 92;/* 本地初始化硬盘 */
public const int MINOR_LOCAL_CFGFILE_OUTPUT = 93;/* 导出本地配置文件 */
public const int MINOR_LOCAL_CFGFILE_INPUT = 94;/* 导入本地配置文件 */
public const int MINOR_LOCAL_COPYFILE = 95;/* 本地备份文件 */
public const int MINOR_LOCAL_LOCKFILE = 96;/* 本地锁定录像文件 */
public const int MINOR_LOCAL_UNLOCKFILE = 97;/* 本地解锁录像文件 */
public const int MINOR_LOCAL_DVR_ALARM = 98;/* 本地手动清除和触发报警*/
public const int MINOR_IPC_ADD = 99;/* 本地添加IPC */
public const int MINOR_IPC_DEL = 100;/* 本地删除IPC */
public const int MINOR_IPC_SET = 101;/* 本地设置IPC */
public const int MINOR_LOCAL_START_BACKUP = 102;/* 本地开始备份 */
public const int MINOR_LOCAL_STOP_BACKUP = 103;/* 本地停止备份*/
public const int MINOR_LOCAL_COPYFILE_START_TIME = 104;/* 本地备份开始时间*/
public const int MINOR_LOCAL_COPYFILE_END_TIME = 105;/* 本地备份结束时间*/
public const int MINOR_LOCAL_ADD_NAS = 106;/*本地添加网络硬盘*/
public const int MINOR_LOCAL_DEL_NAS = 107;/* 本地删除nas盘*/
public const int MINOR_LOCAL_SET_NAS = 108;/* 本地设置nas盘*/
public const int MINOR_REMOTE_LOGIN = 112;/* 远程登录 */
public const int MINOR_REMOTE_LOGOUT = 113;/* 远程注销登陆 */
public const int MINOR_REMOTE_START_REC = 114;/* 远程开始录像 */
public const int MINOR_REMOTE_STOP_REC = 115;/* 远程停止录像 */
public const int MINOR_START_TRANS_CHAN = 116;/* 开始透明传输 */
public const int MINOR_STOP_TRANS_CHAN = 117;/* 停止透明传输 */
public const int MINOR_REMOTE_GET_PARM = 118;/* 远程获取参数 */
public const int MINOR_REMOTE_CFG_PARM = 119;/* 远程配置参数 */
public const int MINOR_REMOTE_GET_STATUS = 120;/* 远程获取状态 */
public const int MINOR_REMOTE_ARM = 121;/* 远程布防 */
public const int MINOR_REMOTE_DISARM = 122;/* 远程撤防 */
public const int MINOR_REMOTE_REBOOT = 123;/* 远程重启 */
public const int MINOR_START_VT = 124;/* 开始语音对讲 */
public const int MINOR_STOP_VT = 125;/* 停止语音对讲 */
public const int MINOR_REMOTE_UPGRADE = 126;/* 远程升级 */
public const int MINOR_REMOTE_PLAYBYFILE = 127;/* 远程按文件回放 */
public const int MINOR_REMOTE_PLAYBYTIME = 128;/* 远程按时间回放 */
public const int MINOR_REMOTE_PTZCTRL = 129;/* 远程云台控制 */
public const int MINOR_REMOTE_FORMAT_HDD = 130;/* 远程格式化硬盘 */
public const int MINOR_REMOTE_STOP = 131;/* 远程关机 */
public const int MINOR_REMOTE_LOCKFILE = 132;/* 远程锁定文件 */
public const int MINOR_REMOTE_UNLOCKFILE = 133;/* 远程解锁文件 */
public const int MINOR_REMOTE_CFGFILE_OUTPUT = 134;/* 远程导出配置文件 */
public const int MINOR_REMOTE_CFGFILE_INTPUT = 135;/* 远程导入配置文件 */
public const int MINOR_REMOTE_RECFILE_OUTPUT = 136;/* 远程导出录象文件 */
public const int MINOR_REMOTE_DVR_ALARM = 137;/* 远程手动清除和触发报警*/
public const int MINOR_REMOTE_IPC_ADD = 138;/* 远程添加IPC */
public const int MINOR_REMOTE_IPC_DEL = 139;/* 远程删除IPC */
public const int MINOR_REMOTE_IPC_SET = 140;/* 远程设置IPC */
public const int MINOR_REBOOT_VCA_LIB = 141;/*重启智能库*/
public const int MINOR_REMOTE_ADD_NAS = 142;/* 远程添加nas盘*/
public const int MINOR_REMOTE_DEL_NAS = 143;/* 远程删除nas盘*/
public const int MINOR_REMOTE_SET_NAS = 144;/* 远程设置nas盘*/
//2009-12-16 增加视频综合平台日志类型
public const int MINOR_SUBSYSTEMREBOOT = 160;/*视频综合平台:dm6467 正常重启*/
public const int MINOR_MATRIX_STARTTRANSFERVIDEO = 161; /*视频综合平台:矩阵切换开始传输图像*/
public const int MINOR_MATRIX_STOPTRANSFERVIDEO = 162; /*视频综合平台:矩阵切换停止传输图像*/
public const int MINOR_REMOTE_SET_ALLSUBSYSTEM = 163; /*视频综合平台:设置所有6467子系统信息*/
public const int MINOR_REMOTE_GET_ALLSUBSYSTEM = 164; /*视频综合平台:获取所有6467子系统信息*/
public const int MINOR_REMOTE_SET_PLANARRAY = 165; /*视频综合平台:设置计划轮询组*/
public const int MINOR_REMOTE_GET_PLANARRAY = 166; /*视频综合平台:获取计划轮询组*/
public const int MINOR_MATRIX_STARTTRANSFERAUDIO = 167; /*视频综合平台:矩阵切换开始传输音频*/
public const int MINOR_MATRIX_STOPRANSFERAUDIO = 168; /*视频综合平台:矩阵切换停止传输音频*/
public const int MINOR_LOGON_CODESPITTER = 169; /*视频综合平台:登陆码分器*/
public const int MINOR_LOGOFF_CODESPITTER = 170; /*视频综合平台:退出码分器*/
/*日志附加信息*/
//主类型
public const int MAJOR_INFORMATION = 4;/*附加信息*/
//次类型
public const int MINOR_HDD_INFO = 161;/*硬盘信息*/
public const int MINOR_SMART_INFO = 162;/*SMART信息*/
public const int MINOR_REC_START = 163;/*开始录像*/
public const int MINOR_REC_STOP = 164;/*停止录像*/
public const int MINOR_REC_OVERDUE = 165;/*过期录像删除*/
public const int MINOR_LINK_START = 166;//连接前端设备
public const int MINOR_LINK_STOP = 167;//断开前端设备
public const int MINOR_NET_DISK_INFO = 168;//网络硬盘信息
//当日志的主类型为MAJOR_OPERATION=03,次类型为MINOR_LOCAL_CFG_PARM=0x52或者MINOR_REMOTE_GET_PARM=0x76或者MINOR_REMOTE_CFG_PARM=0x77时,dwParaType:参数类型有效,其含义如下:
public const int PARA_VIDEOOUT = 1;
public const int PARA_IMAGE = 2;
public const int PARA_ENCODE = 4;
public const int PARA_NETWORK = 8;
public const int PARA_ALARM = 16;
public const int PARA_EXCEPTION = 32;
public const int PARA_DECODER = 64;/*解码器*/
public const int PARA_RS232 = 128;
public const int PARA_PREVIEW = 256;
public const int PARA_SECURITY = 512;
public const int PARA_DATETIME = 1024;
public const int PARA_FRAMETYPE = 2048;/*帧格式*/
//vca
public const int PARA_VCA_RULE = 4096;//行为规则
/************************DVR日志 End***************************/
/*******************查找文件和日志函数返回值*************************/
public const int NET_DVR_FILE_SUCCESS = 1000;//获得文件信息
public const int NET_DVR_FILE_NOFIND = 1001;//没有文件
public const int NET_DVR_ISFINDING = 1002;//正在查找文件
public const int NET_DVR_NOMOREFILE = 1003;//查找文件时没有更多的文件
public const int NET_DVR_FILE_EXCEPTION = 1004;//查找文件时异常
/*********************回调函数类型 begin************************/
public const int COMM_ALARM = 0x1100;//8000报警信息主动上传,对应NET_DVR_ALARMINFO
public const int COMM_ALARM_RULE = 0x1102;//行为分析报警信息,对应NET_VCA_RULE_ALARM
public const int COMM_ALARM_PDC = 0x1103;//人流量统计报警上传,对应NET_DVR_PDC_ALRAM_INFO
public const int COMM_ALARM_ALARMHOST = 0x1105;//网络报警主机报警上传,对应NET_DVR_ALARMHOST_ALARMINFO
public const int COMM_ALARM_FACE = 0x1106;//人脸检测识别报警信息,对应NET_DVR_FACEDETECT_ALARM
public const int COMM_RULE_INFO_UPLOAD = 0x1107; // 事件数据信息上传
public const int COMM_ALARM_AID = 0x1110; //交通事件报警信息
public const int COMM_ALARM_TPS = 0x1111; //交通参数统计报警信息
public const int COMM_UPLOAD_FACESNAP_RESULT = 0x1112; //人脸识别结果上传
public const int COMM_ALARM_FACE_DETECTION = 0x4010; //人脸侦测报警信息
public const int COMM_ALARM_TFS = 0x1113; //交通取证报警信息
public const int COMM_ALARM_TPS_V41 = 0x1114; //交通参数统计报警信息扩展
public const int COMM_ALARM_AID_V41 = 0x1115; //交通事件报警信息扩展
public const int COMM_ALARM_VQD_EX = 0x1116; //视频质量诊断报警
public const int COMM_SENSOR_VALUE_UPLOAD = 0x1120; //模拟量数据实时上传
public const int COMM_SENSOR_ALARM = 0x1121; //模拟量报警上传
public const int COMM_SWITCH_ALARM = 0x1122; //开关量报警
public const int COMM_ALARMHOST_EXCEPTION = 0x1123; //报警主机故障报警
public const int COMM_ALARMHOST_OPERATEEVENT_ALARM = 0x1124; //操作事件报警上传
public const int COMM_ALARMHOST_SAFETYCABINSTATE = 0x1125; //防护舱状态
public const int COMM_ALARMHOST_ALARMOUTSTATUS = 0x1126; //报警输出口/警号状态
public const int COMM_ALARMHOST_CID_ALARM = 0x1127; //CID报告报警上传
public const int COMM_ALARMHOST_EXTERNAL_DEVICE_ALARM = 0x1128; //报警主机外接设备报警上传
public const int COMM_ALARMHOST_DATA_UPLOAD = 0x1129; //报警数据上传
public const int COMM_UPLOAD_VIDEO_INTERCOM_EVENT = 0x1132; //可视对讲事件记录上传
public const int COMM_ALARM_AUDIOEXCEPTION = 0x1150; //声音报警信息
public const int COMM_ALARM_DEFOCUS = 0x1151; //虚焦报警信息
public const int COMM_ALARM_BUTTON_DOWN_EXCEPTION = 0x1152; //按钮按下报警信息
public const int COMM_ALARM_ALARMGPS = 0x1202; //GPS报警信息上传
public const int COMM_TRADEINFO = 0x1500; //ATMDVR主动上传交易信息
public const int COMM_UPLOAD_PLATE_RESULT = 0x2800; //上传车牌信息
public const int COMM_ITC_STATUS_DETECT_RESULT = 0x2810; //实时状态检测结果上传(智能高清IPC)
public const int COMM_IPC_AUXALARM_RESULT = 0x2820; //PIR报警、无线报警、呼救报警上传
public const int COMM_UPLOAD_PICTUREINFO = 0x2900; //上传图片信息
public const int COMM_SNAP_MATCH_ALARM = 0x2902; //黑名单比对结果上传
public const int COMM_ITS_PLATE_RESULT = 0x3050; //终端图片上传
public const int COMM_ITS_TRAFFIC_COLLECT = 0x3051; //终端统计数据上传
public const int COMM_ITS_GATE_VEHICLE = 0x3052; //出入口车辆抓拍数据上传
public const int COMM_ITS_GATE_FACE = 0x3053; //出入口人脸抓拍数据上传
public const int COMM_ITS_GATE_COSTITEM = 0x3054; //出入口过车收费明细 2013-11-19
public const int COMM_ITS_GATE_HANDOVER = 0x3055; //出入口交接班数据 2013-11-19
public const int COMM_ITS_PARK_VEHICLE = 0x3056; //停车场数据上传
public const int COMM_ITS_BLOCKLIST_ALARM = 0x3057;
public const int COMM_ALARM_TPS_REAL_TIME = 0x3081; //TPS实时过车数据上传
public const int COMM_ALARM_TPS_STATISTICS = 0x3082; //TPS统计过车数据上传
public const int COMM_ALARM_V30 = 0x4000; //9000报警信息主动上传
public const int COMM_IPCCFG = 0x4001; //9000设备IPC接入配置改变报警信息主动上传
public const int COMM_IPCCFG_V31 = 0x4002; //9000设备IPC接入配置改变报警信息主动上传扩展 9000_1.1
public const int COMM_IPCCFG_V40 = 0x4003; // IVMS 2000 编码服务器 NVR IPC接入配置改变时报警信息上传
public const int COMM_ALARM_DEVICE = 0x4004; //设备报警内容,由于通道值大于256而扩展
public const int COMM_ALARM_CVR = 0x4005; //CVR 2.0.X外部报警类型
public const int COMM_ALARM_HOT_SPARE = 0x4006; //热备异常报警(N+1模式异常报警)
public const int COMM_ALARM_V40 = 0x4007; //移动侦测,视频丢失,遮挡,IO信号量等报警信息主动上传,报警数据为可变长
public const int COMM_ITS_ROAD_EXCEPTION = 0x4500; //路口设备异常报警
public const int COMM_ITS_EXTERNAL_CONTROL_ALARM = 0x4520; //外控报警
public const int COMM_SCREEN_ALARM = 0x5000; //多屏控制器报警类型
public const int COMM_DVCS_STATE_ALARM = 0x5001; //分布式大屏控制器报警上传
public const int COMM_ALARM_VQD = 0x6000; //VQD主动报警上传
public const int COMM_PUSH_UPDATE_RECORD_INFO = 0x6001; //推模式录像信息上传
public const int COMM_DIAGNOSIS_UPLOAD = 0x5100; //诊断服务器VQD报警上传
public const int COMM_ALARM_ACS = 0x5002; //门禁主机报警
public const int COMM_ID_INFO_ALARM = 0x5200; //身份证信息上传
public const int COMM_PASSNUM_INFO_ALARM = 0x5201; //通行人数上报
public const int COMM_ISAPI_ALARM = 0x6009;
public const int COMM_UPLOAD_AIOP_VIDEO = 0x4021; //设备支持AI开放平台接入,上传视频检测数据
public const int COMM_UPLOAD_AIOP_PICTURE = 0x4022; //设备支持AI开放平台接入,上传图片检测数据
public const int COMM_UPLOAD_AIOP_POLLING_SNAP = 0x4023; //设备支持AI开放平台接入,上传轮巡抓图图片检测数据 对应的结构体(NET_AIOP_POLLING_SNAP_HEAD)
public const int COMM_UPLOAD_AIOP_POLLING_VIDEO = 0x4024; //设备支持AI开放平台接入,上传轮巡视频检测数据 对应的结构体(NET_AIOP_POLLING_VIDEO_HEAD)
/*************操作异常类型(消息方式, 回调方式(保留))****************/
public const int EXCEPTION_EXCHANGE = 32768;//用户交互时异常
public const int EXCEPTION_AUDIOEXCHANGE = 32769;//语音对讲异常
public const int EXCEPTION_ALARM = 32770;//报警异常
public const int EXCEPTION_PREVIEW = 32771;//网络预览异常
public const int EXCEPTION_SERIAL = 32772;//透明通道异常
public const int EXCEPTION_RECONNECT = 32773;//预览时重连
public const int EXCEPTION_ALARMRECONNECT = 32774;//报警时重连
public const int EXCEPTION_SERIALRECONNECT = 32775;//透明通道重连
public const int EXCEPTION_PLAYBACK = 32784;//回放异常
public const int EXCEPTION_DISKFMT = 32785;//硬盘格式化
/********************预览回调函数*********************/
public const int NET_DVR_SYSHEAD = 1;//系统头数据
public const int NET_DVR_STREAMDATA = 2;//视频流数据(包括复合流和音视频分开的视频流数据)
public const int NET_DVR_AUDIOSTREAMDATA = 3;//音频流数据
public const int NET_DVR_STD_VIDEODATA = 4;//标准视频流数据
public const int NET_DVR_STD_AUDIODATA = 5;//标准音频流数据
//回调预览中的状态和消息
public const int NET_DVR_REALPLAYEXCEPTION = 111;//预览异常
public const int NET_DVR_REALPLAYNETCLOSE = 112;//预览时连接断开
public const int NET_DVR_REALPLAY5SNODATA = 113;//预览5s没有收到数据
public const int NET_DVR_REALPLAYRECONNECT = 114;//预览重连
/********************回放回调函数*********************/
public const int NET_DVR_PLAYBACKOVER = 101;//回放数据播放完毕
public const int NET_DVR_PLAYBACKEXCEPTION = 102;//回放异常
public const int NET_DVR_PLAYBACKNETCLOSE = 103;//回放时候连接断开
public const int NET_DVR_PLAYBACK5SNODATA = 104;//回放5s没有收到数据
/*********************回调函数类型 end************************/
//设备型号(DVR类型)
/* 设备类型 */
public const int DVR = 1;/*对尚未定义的dvr类型返回NETRET_DVR*/
public const int ATMDVR = 2;/*atm dvr*/
public const int DVS = 3;/*DVS*/
public const int DEC = 4;/* 6001D */
public const int ENC_DEC = 5;/* 6001F */
public const int DVR_HC = 6;/*8000HC*/
public const int DVR_HT = 7;/*8000HT*/
public const int DVR_HF = 8;/*8000HF*/
public const int DVR_HS = 9;/* 8000HS DVR(no audio) */
public const int DVR_HTS = 10; /* 8016HTS DVR(no audio) */
public const int DVR_HB = 11; /* HB DVR(SATA HD) */
public const int DVR_HCS = 12; /* 8000HCS DVR */
public const int DVS_A = 13; /* 带ATA硬盘的DVS */
public const int DVR_HC_S = 14; /* 8000HC-S */
public const int DVR_HT_S = 15;/* 8000HT-S */
public const int DVR_HF_S = 16;/* 8000HF-S */
public const int DVR_HS_S = 17; /* 8000HS-S */
public const int ATMDVR_S = 18;/* ATM-S */
public const int LOWCOST_DVR = 19;/*7000H系列*/
public const int DEC_MAT = 20; /*多路解码器*/
public const int DVR_MOBILE = 21;/* mobile DVR */
public const int DVR_HD_S = 22; /* 8000HD-S */
public const int DVR_HD_SL = 23;/* 8000HD-SL */
public const int DVR_HC_SL = 24;/* 8000HC-SL */
public const int DVR_HS_ST = 25;/* 8000HS_ST */
public const int DVS_HW = 26; /* 6000HW */
public const int DS630X_D = 27; /* 多路解码器 */
public const int IPCAM = 30;/*IP 摄像机*/
public const int MEGA_IPCAM = 31;/*X52MF系列,752MF,852MF*/
public const int IPCAM_X62MF = 32;/*X62MF系列可接入9000设备,762MF,862MF*/
public const int IPDOME = 40; /*IP 标清球机*/
public const int IPDOME_MEGA200 = 41;/*IP 200万高清球机*/
public const int IPDOME_MEGA130 = 42;/*IP 130万高清球机*/
public const int IPMOD = 50;/*IP 模块*/
public const int DS71XX_H = 71;/* DS71XXH_S */
public const int DS72XX_H_S = 72;/* DS72XXH_S */
public const int DS73XX_H_S = 73;/* DS73XXH_S */
public const int DS76XX_H_S = 76;/* DS76XX_H_S */
public const int DS81XX_HS_S = 81;/* DS81XX_HS_S */
public const int DS81XX_HL_S = 82;/* DS81XX_HL_S */
public const int DS81XX_HC_S = 83;/* DS81XX_HC_S */
public const int DS81XX_HD_S = 84;/* DS81XX_HD_S */
public const int DS81XX_HE_S = 85;/* DS81XX_HE_S */
public const int DS81XX_HF_S = 86;/* DS81XX_HF_S */
public const int DS81XX_AH_S = 87;/* DS81XX_AH_S */
public const int DS81XX_AHF_S = 88;/* DS81XX_AHF_S */
public const int DS90XX_HF_S = 90; /*DS90XX_HF_S*/
public const int DS91XX_HF_S = 91; /*DS91XX_HF_S*/
public const int DS91XX_HD_S = 92; /*91XXHD-S(MD)*/
/**********************设备类型 end***********************/
/*************************************************
参数配置结构、参数(其中_V30为9000新增)
**************************************************/
//校时结构参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TIME
{
public uint dwYear;
public uint dwMonth;
public uint dwDay;
public uint dwHour;
public uint dwMinute;
public uint dwSecond;
}
//时间参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TIME_V30
{
public ushort wYear;
public byte byMonth;
public byte byDay;
public byte byHour;
public byte byMinute;
public byte bySecond;
public byte byRes;
public ushort wMilliSec;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TIME_EX
{
public ushort wYear;
public byte byMonth;
public byte byDay;
public byte byHour;
public byte byMinute;
public byte bySecond;
public byte byRes;
}
//时间段(子结构)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCHEDTIME
{
public byte byStartHour;//开始时间
public byte byStartMin;//开始时间
public byte byStopHour;//结束时间
public byte byStopMin;//结束时间
}
/*设备报警和异常处理方式*/
public const int NOACTION = 0x0;/*无响应*/
public const int WARNONMONITOR = 0x1;/*监视器上警告*/
public const int WARNONAUDIOOUT = 0x2;/*声音警告*/
public const int UPTOCENTER = 0x4;/*上传中心*/
public const int TRIGGERALARMOUT = 0x8;/*触发报警输出*/
public const int TRIGGERCATPIC = 0x10;/*触发抓图并上传E-mail*/
public const int SEND_PIC_FTP = 0x200; /*抓图并上传ftp*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_STRUCTHEAD
{
public ushort wLength; //结构长度
public byte byVersion; /*高低4位分别代表高低版本,后续根据版本和长度进行扩展,不同的版本的长度进行限制*/
public byte byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HANDLEEXCEPTION_V41
{
public uint dwHandleType;/*处理方式,处理方式的"或"结果*/
/*0x00: 无响应*/
/*0x01: 监视器上警告*/
/*0x02: 声音警告*/
/*0x04: 上传中心*/
/*0x08: 触发报警输出*/
/*0x10: 触发JPRG抓图并上传Email*/
/*0x20: 无线声光报警器联动*/
/*0x40: 联动电子地图(目前只有PCNVR支持)*/
/*0x200: 抓图并上传FTP*/
public uint dwMaxRelAlarmOutChanNum; //触发的报警输出通道数(只读)最大支持数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMOUT_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwRelAlarmOut; //触发报警通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HANDLEEXCEPTION_V40
{
public uint dwHandleType;/*处理方式,处理方式的"或"结果*/
/*0x00: 无响应*/
/*0x01: 监视器上警告*/
/*0x02: 声音警告*/
/*0x04: 上传中心*/
/*0x08: 触发报警输出*/
/*0x10: 触发JPRG抓图并上传Email*/
/*0x20: 无线声光报警器联动*/
/*0x40: 联动电子地图(目前只有PCNVR支持)*/
/*0x200: 抓图并上传FTP*/
public uint dwMaxRelAlarmOutChanNum; //触发的报警输出通道数(只读)最大支持数
public uint dwRelAlarmOutChanNum; //触发的报警输出通道数 实际支持数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.U4)]
public uint[] dwRelAlarmOut; //触发报警通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//报警和异常处理结构(子结构)(多处使用)(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HANDLEEXCEPTION_V30
{
public uint dwHandleType;/*处理方式,处理方式的"或"结果*/
/*0x00: 无响应*/
/*0x01: 监视器上警告*/
/*0x02: 声音警告*/
/*0x04: 上传中心*/
/*0x08: 触发报警输出*/
/*0x10: 触发JPRG抓图并上传Email*/
/*0x20: 无线声光报警器联动*/
/*0x40: 联动电子地图(目前只有PCNVR支持)*/
/*0x200: 抓图并上传FTP*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMOUT_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byRelAlarmOut;//报警触发的输出通道,报警触发的输出,为1表示触发该输出
}
//报警和异常处理结构(子结构)(多处使用)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HANDLEEXCEPTION
{
public uint dwHandleType;/*处理方式,处理方式的"或"结果*/
/*0x00: 无响应*/
/*0x01: 监视器上警告*/
/*0x02: 声音警告*/
/*0x04: 上传中心*/
/*0x08: 触发报警输出*/
/*0x10: Jpeg抓图并上传EMail*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMOUT, ArraySubType = UnmanagedType.I1)]
public byte[] byRelAlarmOut;//报警触发的输出通道,报警触发的输出,为1表示触发该输出
}
//DVR设备参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DEVICECFG
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sDVRName;//DVR名称
public uint dwDVRID;//DVR ID,用于遥控器 //V1.4(0-99), V1.5(0-255)
public uint dwRecycleRecord;//是否循环录像,0:不是; 1:是
//以下不可更改
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SERIALNO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sSerialNumber;//序列号
public uint dwSoftwareVersion;//软件版本号,高16位是主版本,低16位是次版本
public uint dwSoftwareBuildDate;//软件生成日期,0xYYYYMMDD
public uint dwDSPSoftwareVersion;//DSP软件版本,高16位是主版本,低16位是次版本
public uint dwDSPSoftwareBuildDate;// DSP软件生成日期,0xYYYYMMDD
public uint dwPanelVersion;// 前面板版本,高16位是主版本,低16位是次版本
public uint dwHardwareVersion;// 硬件版本,高16位是主版本,低16位是次版本
public byte byAlarmInPortNum;//DVR报警输入个数
public byte byAlarmOutPortNum;//DVR报警输出个数
public byte byRS232Num;//DVR 232串口个数
public byte byRS485Num;//DVR 485串口个数
public byte byNetworkPortNum;//网络口个数
public byte byDiskCtrlNum;//DVR 硬盘控制器个数
public byte byDiskNum;//DVR 硬盘个数
public byte byDVRType;//DVR类型, 1:DVR 2:ATM DVR 3:DVS ......
public byte byChanNum;//DVR 通道个数
public byte byStartChan;//起始通道号,例如DVS-1,DVR - 1
public byte byDecordChans;//DVR 解码路数
public byte byVGANum;//VGA口的个数
public byte byUSBNum;//USB口的个数
public byte byAuxoutNum;//辅口的个数
public byte byAudioNum;//语音口的个数
public byte byIPChanNum;//最大数字通道数
}
/*IP地址*/
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_IPADDR
{
/// char[16]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] sIpV4;
/// BYTE[128]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public void Init()
{
byRes = new byte[128];
}
}
/*网络数据结构(子结构)(9000扩展)*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ETHERNET_V30
{
public NET_DVR_IPADDR struDVRIP;//DVR IP地址
public NET_DVR_IPADDR struDVRIPMask;//DVR IP地址掩码
public uint dwNetInterface;//网络接口:1-10MBase-T;2-10MBase-T全双工;3-100MBase-TX;4-100M全双工;5-10M/100M/1000M自适应;6-1000M全双工
public ushort wDVRPort;//端口号
public ushort wMTU;//增加MTU设置,默认1500。
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MACADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byMACAddr;// 物理地址
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
/*网络数据结构(子结构)*/
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_ETHERNET
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sDVRIP;//DVR IP地址
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sDVRIPMask;//DVR IP地址掩码
public uint dwNetInterface;//网络接口 1-10MBase-T 2-10MBase-T全双工 3-100MBase-TX 4-100M全双工 5-10M/100M自适应
public ushort wDVRPort;//端口号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MACADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byMACAddr;//服务器的物理地址
}
//pppoe结构
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_PPPOECFG
{
public uint dwPPPOE;//0-不启用,1-启用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPPPoEUser;//PPPoE用户名
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = PASSWD_LEN)]
public string sPPPoEPassword;// PPPoE密码
public NET_DVR_IPADDR struPPPoEIP;//PPPoE IP地址
}
//网络配置结构(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_NETCFG_V30
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ETHERNET, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_ETHERNET_V30[] struEtherNet;//以太网口
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPADDR[] struRes1;/*保留*/
public NET_DVR_IPADDR struAlarmHostIpAddr;/* 报警主机IP地址 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public ushort wAlarmHostIpPort;
public byte byUseDhcp;
public byte byRes3;
public NET_DVR_IPADDR struDnsServer1IpAddr;/* 域名服务器1的IP地址 */
public NET_DVR_IPADDR struDnsServer2IpAddr;/* 域名服务器2的IP地址 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] byIpResolver;
public ushort wIpResolverPort;
public ushort wHttpPortNo;
public NET_DVR_IPADDR struMulticastIpAddr;/* 多播组地址 */
public NET_DVR_IPADDR struGatewayIpAddr;/* 网关地址 */
public NET_DVR_PPPOECFG struPPPoE;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//单个网卡配置信息结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ETHERNET_MULTI
{
public NET_DVR_IPADDR struDVRIP;
public NET_DVR_IPADDR struDVRIPMask;
public uint dwNetInterface;
public byte byCardType; //网卡类型,0-普通网卡,1-内网网卡,2-外网网卡
public byte byRes1;
public ushort wMTU;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MACADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byMACAddr;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public byte byUseDhcp;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3;
public NET_DVR_IPADDR struGatewayIpAddr;
public NET_DVR_IPADDR struDnsServer1IpAddr;
public NET_DVR_IPADDR struDnsServer2IpAddr;
}
//多网卡网络配置结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_NETCFG_MULTI
{
public uint dwSize;
public byte byDefaultRoute;
public byte byNetworkCardNum;
public byte byWorkMode; //0-普通多网卡模式,1-内外网隔离模式
public byte byRes;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NETWORK_CARD, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_ETHERNET_MULTI[] struEtherNet;//以太网口
public NET_DVR_IPADDR struManageHost1IpAddr;
public NET_DVR_IPADDR struManageHost2IpAddr;
public NET_DVR_IPADDR struAlarmHostIpAddr;
public ushort wManageHost1Port;
public ushort wManageHost2Port;
public ushort wAlarmHostIpPort;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] byIpResolver;
public ushort wIpResolverPort;
public ushort wDvrPort;
public ushort wHttpPortNo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public NET_DVR_IPADDR struMulticastIpAddr;/* 多播组地址 */
public NET_DVR_PPPOECFG struPPPoE;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3;
}
//网络配置结构
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_NETCFG
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ETHERNET, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_ETHERNET[] struEtherNet;/* 以太网口 */
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sManageHostIP;//远程管理主机地址
public ushort wManageHostPort;//远程管理主机端口号
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sIPServerIP;//IPServer服务器地址
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sMultiCastIP;//多播组地址
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sGatewayIP;//网关地址
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sNFSIP;//NFS主机IP地址
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PATHNAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sNFSDirectory;//NFS目录
public uint dwPPPOE;//0-不启用,1-启用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPPPoEUser;//PPPoE用户名
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = PASSWD_LEN)]
public string sPPPoEPassword;// PPPoE密码
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sPPPoEIP;//PPPoE IP地址(只读)
public ushort wHttpPort;//HTTP端口号
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_SIP_CFG
{
public uint dwSize;
public byte byEnableAutoLogin; //使能自动注册,0-不使能,1-使能
public byte byLoginStatus; //注册状态,0-未注册,1-已注册,此参数只能获取
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_IPADDR stuServerIP; //SIP服务器IP
public ushort wServerPort; //SIP服务器端口
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byUserName; //注册用户名
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byPassWord; //注册密码
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NUMBER_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byLocalNo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byDispalyName; //设备显示名称
public ushort wLocalPort; //本地端口
public byte byLoginCycle; //注册周期,1-99分钟
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 129, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//IP可视对讲分机配置
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_IP_VIEW_DEVCFG
{
public uint dwSize;
public byte byDefaultRing; //默认铃音,范围1-6
public byte byRingVolume; //铃音音量,范围0-9
public byte byInputVolume; //输入音量值,范围0-6
public byte byOutputVolume; //输出音量值,范围0-9
public ushort wRtpPort; //Rtp端口
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwPreviewDelayTime; //预览延时配置,0-30秒
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//Ip可视对讲音频相关参数配置
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_IP_VIEW_AUDIO_CFG
{
public uint dwSize;
public byte byAudioEncPri1; //音频编码优先级1,0-OggVorbis,1-G711_U,2-G711_A, 5-MPEG2,6-G726,7-AAC
public byte byAudioEncPri2; //音频编码优先级2,当sip服务器不支持音频编码1时会使用音频编码2,0-OggVorbis,1-G711_U,2-G711_A, 5-MPEG2,6-G726,7-AAC
public ushort wAudioPacketLen1; //音频编码1数据包长度
public ushort wAudioPacketLen2; //音频编码2数据包长度
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 30, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//IP分机呼叫对讲参数配置结构体
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_IP_VIEW_CALL_CFG
{
public uint dwSize;
public byte byEnableAutoResponse; //使能自动应答,0-不使能,1-使能
public byte byAudoResponseTime; //自动应答时间,0-30秒
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public byte byEnableAlarmNumber1; //启动报警号码1,0-不启动,1-启动
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NUMBER_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byAlarmNumber1; //呼叫号码1
public byte byEnableAlarmNumber2; //启动报警号码2,0-不启动,1-启动
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NUMBER_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byAlarmNumber2; //呼叫号码2,呼叫号码1失败会尝试呼叫号码2
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 72, ArraySubType = UnmanagedType.I1)]
public byte[] byRes4;
}
//通道图象结构
//移动侦测(子结构)(按组方式扩展)
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_RECORDCHAN
{
public uint dwMaxRecordChanNum; //设备支持的最大关联录像通道数-只读
public uint dwCurRecordChanNum; //当前实际已配置的关联录像通道数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.U4)]
public uint dwRelRecordChan; /* 实际触发录像通道,按值表示,采用紧凑型排列,从下标0 - MAX_CHANNUM_V30-1有效,如果中间遇到0xffffffff,则后续无效*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//通道图象结构
//移动侦测(子结构)(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MOTION_V30
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 96 * 64, ArraySubType = UnmanagedType.I1)]
public byte[] byMotionScope;/*侦测区域,0-96位,表示64行,共有96*64个小宏块,为1表示是移动侦测区域,0-表示不是*/
public byte byMotionSensitive;/*移动侦测灵敏度, 0 - 5,越高越灵敏,oxff关闭*/
public byte byEnableHandleMotion;/* 是否处理移动侦测 0-否 1-是*/
public byte byEnableDisplay;/* 启用移动侦测高亮显示:0- 否,1- 是 */
public byte reservedData;
public NET_DVR_HANDLEEXCEPTION_V30 struMotionHandleType;/* 处理方式 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;/*布防时间*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byRelRecordChan;/* 报警触发的录象通道*/
}
//移动侦测(子结构)
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_MOTION
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 396, ArraySubType = UnmanagedType.I1)]
public byte[] byMotionScope;/*侦测区域,共有22*18个小宏块,为1表示改宏块是移动侦测区域,0-表示不是*/
public byte byMotionSensitive;/*移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭*/
public byte byEnableHandleMotion;/* 是否处理移动侦测 */
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 2)]
public string reservedData;
public NET_DVR_HANDLEEXCEPTION strMotionHandleType;/* 处理方式 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM, ArraySubType = UnmanagedType.I1)]
public byte[] byRelRecordChan;//报警触发的录象通道,为1表示触发该通道
}
//遮挡报警(子结构)(9000扩展) 区域大小704*576
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HIDEALARM_V30
{
public uint dwEnableHideAlarm;/* 是否启动遮挡报警 ,0-否,1-低灵敏度 2-中灵敏度 3-高灵敏度*/
public ushort wHideAlarmAreaTopLeftX;/* 遮挡区域的x坐标 */
public ushort wHideAlarmAreaTopLeftY;/* 遮挡区域的y坐标 */
public ushort wHideAlarmAreaWidth;/* 遮挡区域的宽 */
public ushort wHideAlarmAreaHeight;/*遮挡区域的高*/
public NET_DVR_HANDLEEXCEPTION_V30 strHideAlarmHandleType; /* 处理方式 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
}
//遮挡报警(子结构) 区域大小704*576
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HIDEALARM
{
public uint dwEnableHideAlarm;/* 是否启动遮挡报警 ,0-否,1-低灵敏度 2-中灵敏度 3-高灵敏度*/
public ushort wHideAlarmAreaTopLeftX;/* 遮挡区域的x坐标 */
public ushort wHideAlarmAreaTopLeftY;/* 遮挡区域的y坐标 */
public ushort wHideAlarmAreaWidth;/* 遮挡区域的宽 */
public ushort wHideAlarmAreaHeight;/*遮挡区域的高*/
public NET_DVR_HANDLEEXCEPTION strHideAlarmHandleType;/* 处理方式 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
}
//信号丢失报警(子结构)(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VILOST_V30
{
public byte byEnableHandleVILost;/* 是否处理信号丢失报警 */
public NET_DVR_HANDLEEXCEPTION_V30 strVILostHandleType;/* 处理方式 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 56, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
}
//信号丢失报警(子结构)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VILOST
{
public byte byEnableHandleVILost;/* 是否处理信号丢失报警 */
public NET_DVR_HANDLEEXCEPTION strVILostHandleType;/* 处理方式 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
}
//遮挡区域(子结构)
[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
public struct NET_DVR_SHELTER
{
public ushort wHideAreaTopLeftX;/* 遮挡区域的x坐标 */
public ushort wHideAreaTopLeftY;/* 遮挡区域的y坐标 */
public ushort wHideAreaWidth;/* 遮挡区域的宽 */
public ushort wHideAreaHeight;/*遮挡区域的高*/
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_COLOR
{
public byte byBrightness;/*亮度,0-255*/
public byte byContrast;/*对比度,0-255*/
public byte bySaturation;/*饱和度,0-255*/
public byte byHue;/*色调,0-255*/
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_RGB_COLOR
{
public byte byRed; //RGB颜色三分量中的红色
public byte byGreen; //RGB颜色三分量中的绿色
public byte byBlue; //RGB颜色三分量中的蓝色
public byte byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_DAYTIME
{
public byte byHour;//0~24
public byte byMinute;//0~60
public byte bySecond;//0~60
public byte byRes;
public ushort wMilliSecond; //0~1000
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_SCHEDULE_DAYTIME
{
public NET_DVR_DAYTIME struStartTime; //开始时间
public NET_DVR_DAYTIME struStopTime; //结束时间
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_DNMODE
{
public byte byObjectSize;//占比参数(0~100)
public byte byMotionSensitive; /*移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_MOTION_MULTI_AREAPARAM
{
public byte byAreaNo;//区域编号(IPC- 1~8)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public NET_VCA_RECT struRect;//单个区域的坐标信息(矩形) size = 16;
public NET_DVR_DNMODE struDayNightDisable;//关闭模式
public NET_DVR_DNMODE struDayModeParam;//白天模式
public NET_DVR_DNMODE struNightModeParam;//夜晚模式
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_MOTION_MULTI_AREA
{
public byte byDayNightCtrl;//日夜控制 0~关闭,1~自动切换,2~定时切换(默认关闭)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public NET_DVR_SCHEDULE_DAYTIME struScheduleTime;//切换时间 16
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_MULTI_AREA_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_MOTION_MULTI_AREAPARAM[] struMotionMultiAreaParam;//最大支持24个区域
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 60, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_MOTION_SINGLE_AREA
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64 * 96, ArraySubType = UnmanagedType.I1)]
public byte[] byMotionScope; /*侦测区域,0-96位,表示64行,共有96*64个小宏块,目前有效的是22*18,为1表示是移动侦测区域,0-表示不是*/
public byte byMotionSensitive; /*移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_MOTION_MODE_PARAM
{
public NET_DVR_MOTION_SINGLE_AREA struMotionSingleArea; //普通模式下的单区域设
public NET_DVR_MOTION_MULTI_AREA struMotionMultiArea; //专家模式下的多区域设置
}
//移动侦测
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_MOTION_V40
{
public NET_DVR_MOTION_MODE_PARAM struMotionMode; //(5.1.0新增)
public byte byEnableHandleMotion; /* 是否处理移动侦测 0-否 1-是*/
public byte byEnableDisplay; /*启用移动侦测高亮显示,0-否,1-是*/
public byte byConfigurationMode; //0~普通,1~专家(5.1.0新增)
public byte byRes1; //保留字节
/* 异常处理方式 */
public uint dwHandleType; //异常处理,异常处理方式的"或"结果
/*0x00: 无响应*/
/*0x01: 监视器上警告*/
/*0x02: 声音警告*/
/*0x04: 上传中心*/
/*0x08: 触发报警输出*/
/*0x10: 触发JPRG抓图并上传Email*/
/*0x20: 无线声光报警器联动*/
/*0x40: 联动电子地图(目前只有PCNVR支持)*/
/*0x200: 抓图并上传FTP*/
public uint dwMaxRelAlarmOutChanNum; //触发的报警输出通道数(只读)最大支持数量
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMOUT_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwRelAlarmOut; //实际触发的报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime; /*布防时间*/
/*触发的录像通道*/
public uint dwMaxRecordChanNum; //设备支持的最大关联录像通道数-只读
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwRelRecordChan; /* 实际触发录像通道,按值表示,采用紧凑型排列,从下标0 - dwRelRecordChan -1有效,如果中间遇到0xffffffff,则后续无效*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留字节
}
//遮挡报警
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_HIDEALARM_V40
{
public uint dwEnableHideAlarm; /* 是否启动遮挡报警,0-否,1-低灵敏度,2-中灵敏度,3-高灵敏度*/
public ushort wHideAlarmAreaTopLeftX; /* 遮挡区域的x坐标 */
public ushort wHideAlarmAreaTopLeftY; /* 遮挡区域的y坐标 */
public ushort wHideAlarmAreaWidth; /* 遮挡区域的宽 */
public ushort wHideAlarmAreaHeight; /*遮挡区域的高*/
/* 信号丢失触发报警输出 */
public uint dwHandleType; //异常处理,异常处理方式的"或"结果
/*0x00: 无响应*/
/*0x01: 监视器上警告*/
/*0x02: 声音警告*/
/*0x04: 上传中心*/
/*0x08: 触发报警输出*/
/*0x10: 触发JPRG抓图并上传Email*/
/*0x20: 无线声光报警器联动*/
/*0x40: 联动电子地图(目前只有PCNVR支持)*/
/*0x200: 抓图并上传FTP*/
public uint dwMaxRelAlarmOutChanNum; //触发的报警输出通道数(只读)最大支持数量
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMOUT_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwRelAlarmOut; /*触发报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime; /*布防时间*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//信号丢失报警
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_VILOST_V40
{
public uint dwEnableVILostAlarm; /* 是否启动信号丢失报警 ,0-否,1-是*/
/* 信号丢失触发报警输出 */
public uint dwHandleType; //异常处理,异常处理方式的"或"结果
/*0x00: 无响应*/
/*0x01: 监视器上警告*/
/*0x02: 声音警告*/
/*0x04: 上传中心*/
/*0x08: 触发报警输出*/
/*0x10: 触发JPRG抓图并上传Email*/
/*0x20: 无线声光报警器联动*/
/*0x40: 联动电子地图(目前只有PCNVR支持)*/
/*0x200: 抓图并上传FTP*/
public uint dwMaxRelAlarmOutChanNum; //触发的报警输出通道数(只读)最大支持数量
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMOUT_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwRelAlarmOut; /*触发报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime; /*布防时间*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_VICOLOR
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_COLOR[] struColor;/*图象参数(第一个有效,其他三个保留)*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struHandleTime;/*处理时间段(保留)*/
}
//通道图象结构(V40扩展)
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_PICCFG_V40
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sChanName;
public uint dwVideoFormat; /* 只读 视频制式 1-NTSC 2-PAL */
public NET_DVR_VICOLOR struViColor;// 图像参数按时间段设置
//显示通道名
public uint dwShowChanName; // 预览的图象上是否显示通道名称,0-不显示,1-显示
public ushort wShowNameTopLeftX; /* 通道名称显示位置的x坐标 */
public ushort wShowNameTopLeftY; /* 通道名称显示位置的y坐标 */
//隐私遮挡
public uint dwEnableHide; /* 是否启动遮挡 ,0-否,1-是*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_SHELTERNUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SHELTER[] struShelter;
//OSD
public uint dwShowOsd;// 预览的图象上是否显示OSD,0-不显示,1-显示
public ushort wOSDTopLeftX; /* OSD的x坐标 */
public ushort wOSDTopLeftY; /* OSD的y坐标 */
public byte byOSDType; /* OSD类型(主要是年月日格式) */
/* 0: XXXX-XX-XX 年月日 */
/* 1: XX-XX-XXXX 月日年 */
/* 2: XXXX年XX月XX日 */
/* 3: XX月XX日XXXX年 */
/* 4: XX-XX-XXXX 日月年*/
/* 5: XX日XX月XXXX年 */
/*6: xx/xx/xxxx(月/日/年) */
/*7: xxxx/xx/xx(年/月/日) */
/*8: xx/xx/xxxx(日/月/年)*/
public byte byDispWeek; /* 是否显示星期 */
public byte byOSDAttrib; /* OSD属性:透明,闪烁 */
/* 0: 不显示OSD */
/* 1: 透明,闪烁 */
/* 2: 透明,不闪烁 */
/* 3: 不透明,闪烁 */
/* 4: 不透明,不闪烁 */
public byte byHourOSDType; /* OSD小时制:0-24小时制,1-12小时制 */
public byte byFontSize; //16*16(中)/8*16(英),1-32*32(中)/16*32(英),2-64*64(中)/32*64(英) FOR 91系列HD-SDI高清DVR
public byte byOSDColorType; //0-默认(黑白);1-自定义
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_VILOST_V40 struVILost; //视频信号丢失报警(支持组)
public NET_DVR_VILOST_V40 struAULost; /*音频信号丢失报警(支持组)*/
public NET_DVR_MOTION_V40 struMotion; //移动侦测报警(支持组)
public NET_DVR_HIDEALARM_V40 struHideAlarm; //遮挡报警(支持组)
public NET_DVR_RGB_COLOR struOsdColor;//OSD颜色
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 124, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//通道图象结构(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_PICCFG_V30
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sChanName;
public uint dwVideoFormat;/* 只读 视频制式 1-NTSC 2-PAL*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byReservedData;/*保留*/
//显示通道名
public uint dwShowChanName;// 预览的图象上是否显示通道名称,0-不显示,1-显示 区域大小704*576
public ushort wShowNameTopLeftX;/* 通道名称显示位置的x坐标 */
public ushort wShowNameTopLeftY;/* 通道名称显示位置的y坐标 */
//视频信号丢失报警
public NET_DVR_VILOST_V30 struVILost;
public NET_DVR_VILOST_V30 struRes;/*保留*/
//移动侦测
public NET_DVR_MOTION_V30 struMotion;
//遮挡报警
public NET_DVR_HIDEALARM_V30 struHideAlarm;
//遮挡 区域大小704*576
public uint dwEnableHide;/* 是否启动遮挡 ,0-否,1-是*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_SHELTERNUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SHELTER[] struShelter;
//OSD
public uint dwShowOsd;// 预览的图象上是否显示OSD,0-不显示,1-显示 区域大小704*576
public ushort wOSDTopLeftX;/* OSD的x坐标 */
public ushort wOSDTopLeftY;/* OSD的y坐标 */
public byte byOSDType;/* OSD类型(主要是年月日格式) */
/* 0: XXXX-XX-XX 年月日 */
/* 1: XX-XX-XXXX 月日年 */
/* 2: XXXX年XX月XX日 */
/* 3: XX月XX日XXXX年 */
/* 4: XX-XX-XXXX 日月年*/
/* 5: XX日XX月XXXX年 */
public byte byDispWeek;/* 是否显示星期 */
public byte byOSDAttrib;/* OSD属性:透明,闪烁 */
/* 0: 不显示OSD */
/* 1: 透明,闪烁 */
/* 2: 透明,不闪烁 */
/* 3: 闪烁,不透明 */
/* 4: 不透明,不闪烁 */
public byte byHourOSDType;/* OSD小时制:0-24小时制,1-12小时制 */
public byte byFontSize;//字体大小,16*16(中)/8*16(英),1-32*32(中)/16*32(英),2-64*64(中)/32*64(英) 3-48*48(中)/24*48(英) 0xff-自适应(adaptive)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 63, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//通道图象结构SDK_V14扩展
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PICCFG_EX
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sChanName;
public uint dwVideoFormat;/* 只读 视频制式 1-NTSC 2-PAL*/
public byte byBrightness;/*亮度,0-255*/
public byte byContrast;/*对比度,0-255*/
public byte bySaturation;/*饱和度,0-255 */
public byte byHue;/*色调,0-255*/
//显示通道名
public uint dwShowChanName;// 预览的图象上是否显示通道名称,0-不显示,1-显示 区域大小704*576
public ushort wShowNameTopLeftX;/* 通道名称显示位置的x坐标 */
public ushort wShowNameTopLeftY;/* 通道名称显示位置的y坐标 */
//信号丢失报警
public NET_DVR_VILOST struVILost;
//移动侦测
public NET_DVR_MOTION struMotion;
//遮挡报警
public NET_DVR_HIDEALARM struHideAlarm;
//遮挡 区域大小704*576
public uint dwEnableHide;/* 是否启动遮挡 ,0-否,1-是*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_SHELTERNUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SHELTER[] struShelter;
//OSD
public uint dwShowOsd;// 预览的图象上是否显示OSD,0-不显示,1-显示 区域大小704*576
public ushort wOSDTopLeftX;/* OSD的x坐标 */
public ushort wOSDTopLeftY;/* OSD的y坐标 */
public byte byOSDType;/* OSD类型(主要是年月日格式) */
/* 0: XXXX-XX-XX 年月日 */
/* 1: XX-XX-XXXX 月日年 */
/* 2: XXXX年XX月XX日 */
/* 3: XX月XX日XXXX年 */
/* 4: XX-XX-XXXX 日月年*/
/* 5: XX日XX月XXXX年 */
public byte byDispWeek;/* 是否显示星期 */
public byte byOSDAttrib;/* OSD属性:透明,闪烁 */
/* 0: 不显示OSD */
/* 1: 透明,闪烁 */
/* 2: 透明,不闪烁 */
/* 3: 闪烁,不透明 */
/* 4: 不透明,不闪烁 */
public byte byHourOsdType;/* OSD小时制:0-24小时制,1-12小时制 */
}
//通道图象结构(SDK_V13及之前版本)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PICCFG
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sChanName;
public uint dwVideoFormat;/* 只读 视频制式 1-NTSC 2-PAL*/
public byte byBrightness;/*亮度,0-255*/
public byte byContrast;/*对比度,0-255*/
public byte bySaturation;/*饱和度,0-255 */
public byte byHue;/*色调,0-255*/
//显示通道名
public uint dwShowChanName;// 预览的图象上是否显示通道名称,0-不显示,1-显示 区域大小704*576
public ushort wShowNameTopLeftX;/* 通道名称显示位置的x坐标 */
public ushort wShowNameTopLeftY;/* 通道名称显示位置的y坐标 */
//信号丢失报警
public NET_DVR_VILOST struVILost;
//移动侦测
public NET_DVR_MOTION struMotion;
//遮挡报警
public NET_DVR_HIDEALARM struHideAlarm;
//遮挡 区域大小704*576
public uint dwEnableHide;/* 是否启动遮挡 ,0-否,1-是*/
public ushort wHideAreaTopLeftX;/* 遮挡区域的x坐标 */
public ushort wHideAreaTopLeftY;/* 遮挡区域的y坐标 */
public ushort wHideAreaWidth;/* 遮挡区域的宽 */
public ushort wHideAreaHeight;/*遮挡区域的高*/
//OSD
public uint dwShowOsd;// 预览的图象上是否显示OSD,0-不显示,1-显示 区域大小704*576
public ushort wOSDTopLeftX;/* OSD的x坐标 */
public ushort wOSDTopLeftY;/* OSD的y坐标 */
public byte byOSDType;/* OSD类型(主要是年月日格式) */
/* 0: XXXX-XX-XX 年月日 */
/* 1: XX-XX-XXXX 月日年 */
/* 2: XXXX年XX月XX日 */
/* 3: XX月XX日XXXX年 */
/* 4: XX-XX-XXXX 日月年*/
/* 5: XX日XX月XXXX年 */
public byte byDispWeek;/* 是否显示星期 */
public byte byOSDAttrib;/* OSD属性:透明,闪烁 */
/* 0: 不显示OSD */
/* 1: 透明,闪烁 */
/* 2: 透明,不闪烁 */
/* 3: 闪烁,不透明 */
/* 4: 不透明,不闪烁 */
public byte reservedData2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND
{
public uint dwSize;
public NET_DVR_STREAM_INFO struStreamInfo;
public uint dwStreamType; //码流类型,0-主码流,1-子码流,2-事件类型,3-码流3,……(自定义码流类型需通过GET /ISAPI/Streaming/channels/<ID>/customStream获取当前通道已经添加的所有自定义码流ID。自定义码流为6~10,其索引值就是6~10)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MULTI_STREAM_COMPRESSIONCFG
{
public uint dwSize;
public uint dwStreamType; //码流类型,0-主码流,1-子码流,2-事件类型,3-码流3,……
public NET_DVR_COMPRESSION_INFO_V30 struStreamPara; //码流压缩参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 80, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//码流压缩参数(子结构)(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_COMPRESSION_INFO_V30
{
public byte byStreamType;//码流类型 0-视频流, 1-复合流, 表示事件压缩参数时最高位表示是否启用压缩参数
public byte byResolution;//分辨率0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF 5(保留)16-VGA(640*480) 17-UXGA(1600*1200) 18-SVGA (800*600)19-HD720p(1280*720)20-XVGA 21-HD900p
public byte byBitrateType;//码率类型 0:变码率, 1:定码率
public byte byPicQuality;//图象质量 0-最好 1-次好 2-较好 3-一般 4-较差 5-差
public uint dwVideoBitrate;//视频码率 0-保留 1-16K 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K 12-320K
// 13-384K 14-448K 15-512K 16-640K 17-768K 18-896K 19-1024K 20-1280K 21-1536K 22-1792K 23-2048K
//最高位(31位)置成1表示是自定义码流, 0-30位表示码流值。
public uint dwVideoFrameRate;//帧率 0-全部; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20; V2.0版本中新加14-15; 15-18; 16-22;
public ushort wIntervalFrameI;//I帧间隔
//2006-08-11 增加单P帧的配置接口,可以改善实时流延时问题
public byte byIntervalBPFrame;//0-BBP帧; 1-BP帧; 2-单P帧
public byte byres1; //保留
public byte byVideoEncType;//视频编码类型 0 hik264;1标准h264; 2标准mpeg4;
public byte byAudioEncType; //音频编码类型 0-OggVorbis
public byte byVideoEncComplexity; //视频编码复杂度,0-低,1-中,2高,0xfe:自动,和源一致
public byte byEnableSvc; //0 - 不启用SVC功能;1- 启用SVC功能
public byte byFormatType; //封装类型,1-裸流,2-RTP封装,3-PS封装,4-TS封装,5-私有,6-FLV,7-ASF,8-3GP,9-RTP+PS(国标:GB28181),0xff-无效
public byte byAudioBitRate; //音频码率0-默认,1-8Kbps, 2- 16Kbps, 3-32Kbps,4-64Kbps,5-128Kbps,6-192Kbps;(IPC5.1.0默认4-64Kbps)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byres;//这里保留音频的压缩参数
}
//通道压缩参数(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_COMPRESSIONCFG_V30
{
public uint dwSize;
public NET_DVR_COMPRESSION_INFO_V30 struNormHighRecordPara;//录像 对应8000的普通
public NET_DVR_COMPRESSION_INFO_V30 struRes;//保留 char reserveData[28];
public NET_DVR_COMPRESSION_INFO_V30 struEventRecordPara;//事件触发压缩参数
public NET_DVR_COMPRESSION_INFO_V30 struNetPara;//网传(子码流)
}
//码流压缩参数(子结构)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_COMPRESSION_INFO
{
public byte byStreamType;//码流类型0-视频流,1-复合流,表示压缩参数时最高位表示是否启用压缩参数
public byte byResolution;//分辨率0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF, 5-2QCIF(352X144)(车载专用)
public byte byBitrateType;//码率类型0:变码率,1:定码率
public byte byPicQuality;//图象质量 0-最好 1-次好 2-较好 3-一般 4-较差 5-差
public uint dwVideoBitrate; //视频码率 0-保留 1-16K(保留) 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K 12-320K
// 13-384K 14-448K 15-512K 16-640K 17-768K 18-896K 19-1024K 20-1280K 21-1536K 22-1792K 23-2048K
//最高位(31位)置成1表示是自定义码流, 0-30位表示码流值(MIN-32K MAX-8192K)。
public uint dwVideoFrameRate;//帧率 0-全部; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20;
}
//通道压缩参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_COMPRESSIONCFG
{
public uint dwSize;
public NET_DVR_COMPRESSION_INFO struRecordPara;//录像/事件触发录像
public NET_DVR_COMPRESSION_INFO struNetPara;//网传/保留
}
//码流压缩参数(子结构)(扩展) 增加I帧间隔
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_COMPRESSION_INFO_EX
{
public byte byStreamType;//码流类型0-视频流, 1-复合流
public byte byResolution;//分辨率0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF, 5-2QCIF(352X144)(车载专用)
public byte byBitrateType;//码率类型0:变码率,1:定码率
public byte byPicQuality;//图象质量 0-最好 1-次好 2-较好 3-一般 4-较差 5-差
public uint dwVideoBitrate;//视频码率 0-保留 1-16K(保留) 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K 12-320K
// 13-384K 14-448K 15-512K 16-640K 17-768K 18-896K 19-1024K 20-1280K 21-1536K 22-1792K 23-2048K
//最高位(31位)置成1表示是自定义码流, 0-30位表示码流值(MIN-32K MAX-8192K)。
public uint dwVideoFrameRate;//帧率 0-全部; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20, //V2.0增加14-15, 15-18, 16-22;
public ushort wIntervalFrameI;//I帧间隔
//2006-08-11 增加单P帧的配置接口,可以改善实时流延时问题
public byte byIntervalBPFrame;//0-BBP帧; 1-BP帧; 2-单P帧
public byte byRes;
}
//通道压缩参数(扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_COMPRESSIONCFG_EX
{
public uint dwSize;
public NET_DVR_COMPRESSION_INFO_EX struRecordPara;//录像
public NET_DVR_COMPRESSION_INFO_EX struNetPara;//网传
}
//时间段录像参数配置(子结构)
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_RECORDSCHED
{
public NET_DVR_SCHEDTIME struRecordTime;
public byte byRecordType;//0:定时录像,1:移动侦测,2:报警录像,3:动测|报警,4:动测&报警, 5:命令触发, 6: 智能录像
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 3)]
public string reservedData;
}
//全天录像参数配置(子结构)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_RECORDDAY
{
public ushort wAllDayRecord;/* 是否全天录像 0-否 1-是*/
public byte byRecordType;/* 录象类型 0:定时录像,1:移动侦测,2:报警录像,3:动测|报警,4:动测&报警 5:命令触发, 6: 智能录像*/
public byte reservedData;
}
//时间段录像参数配置(子结构)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_RECORDSCHED_V40
{
public NET_DVR_SCHEDTIME struRecordTime;
/*录像类型,0:定时录像,1:移动侦测,2:报警录像,3:动测|报警,4:动测&报警 5:命令触发,
6-智能报警录像,10-PIR报警,11-无线报警,12-呼救报警,13-全部事件,14-智能交通事件,
15-越界侦测,16-区域入侵,17-声音异常,18-场景变更侦测,
19-智能侦测(越界侦测|区域入侵|人脸侦测|声音异常|场景变更侦测),20-人脸侦测,21-POS录像,
22-进入区域侦测, 23-离开区域侦测,24-徘徊侦测,25-人员聚集侦测,26-快速运动侦测,27-停车侦测,
28-物品遗留侦测,29-物品拿取侦测,30-火点检测,31-防破坏检测,32-打架斗殴事件(司法),33-起身事件(司法), 34-瞌睡事件(司法)
35-船只检测, 36-测温预警,37-测温报警,38-温差报警,39-离线测温报警,40-防区报警,41-紧急求助,42-业务咨询,43-起身检测,44-折线攀高,45-如厕超时,46-人脸抓拍,47-非法摆摊,48-目标抓拍,
49-剧烈运动,50离岗检测,51-起立,52人数变化 */
public byte byRecordType;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 31, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//全天录像参数配置(子结构)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_RECORDDAY_V40
{
public byte byAllDayRecord; /* 是否全天录像 0-否 1-是*/
/*录像类型,0:定时录像,1:移动侦测,2:报警录像,3:动测|报警,4:动测&报警 5:命令触发,
6-智能报警录像,10-PIR报警,11-无线报警,12-呼救报警,13-全部事件,14-智能交通事件,
15-越界侦测,16-区域入侵,17-声音异常,18-场景变更侦测,
19-智能侦测(越界侦测|区域入侵|人脸侦测|声音异常|场景变更侦测),20-人脸侦测,21-POS录像,
22-进入区域侦测, 23-离开区域侦测,24-徘徊侦测,25-人员聚集侦测,26-快速运动侦测,27-停车侦测,
28-物品遗留侦测,29-物品拿取侦测,30-火点检测,31-防破坏检测,32-打架斗殴事件(司法),33-起身事件(司法), 34-瞌睡事件(司法)
35-船只检测, 36-测温预警,37-测温报警,38-温差报警,39-离线测温报警,40-防区报警,41-紧急求助,42-业务咨询,43-起身检测,44-折线攀高,45-如厕超时,46-人脸抓拍,47-非法摆摊,48-目标抓拍,
49-剧烈运动,50离岗检测,51-起立,52人数变化*/
public byte byRecordType;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 62, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_RECORD_V40
{
public uint dwSize;
public uint dwRecord; /*是否录像 0-否 1-是*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_RECORDDAY_V40[] struRecAllDay;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_RECORDSCHED_V40[] struRecordSched;
public uint dwRecordTime; /* 录象延时长度 0-5秒, 1-10秒, 2-30秒, 3-1分钟, 4-2分钟, 5-5分钟, 6-10分钟*/
public uint dwPreRecordTime; /* 预录时间 0-不预录 1-5秒 2-10秒 3-15秒 4-20秒 5-25秒 6-30秒 7-0xffffffff(尽可能预录) */
public uint dwRecorderDuration; /* 录像保存的最长时间 */
public byte byRedundancyRec; /*是否冗余录像,重要数据双备份:0/1*/
public byte byAudioRec; /*录像时复合流编码时是否记录音频数据:国外有此法规*/
public byte byStreamType; // 0-主码流,1-子码流,2-主子码流同时 3-三码流
public byte byPassbackRecord; // 0:不回传录像 1:回传录像
public ushort wLockDuration; // 录像锁定时长,单位小时 0表示不锁定,0xffff表示永久锁定,录像段的时长大于锁定的持续时长的录像,将不会锁定
public byte byRecordBackup; // 0:录像不存档 1:录像存档
public byte bySVCLevel; //SVC抽帧类型:0-不抽,1-抽二分之一 2-抽四分之三
public byte byRecordManage; //录像调度,0-启用, 1-不启用; 启用时进行定时录像;不启用时不进行定时录像,但是录像计划仍在使用,比如移动侦测,回传都还在按这条录像计划进行
public byte byExtraSaveAudio;//音频单独存储
/*开启智能录像功能后,算法库是自动启用智能录像算法,其功能为若录像中无目标出现,会降低码率、帧率,而目标出现时又恢复全码率及帧率,从而达到减少资源消耗的目的*/
public byte byIntelligentRecord;//是否开启智能录像功能 0-否 1-是
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 125, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//通道录像参数配置(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_RECORD_V30
{
public uint dwSize;
public uint dwRecord;/*是否录像 0-否 1-是*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_RECORDDAY[] struRecAllDay;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_RECORDSCHED[] struRecordSched;
public uint dwRecordTime;/* 录象延时长度 0-5秒, 1-20秒, 2-30秒, 3-1分钟, 4-2分钟, 5-5分钟, 6-10分钟*/
public uint dwPreRecordTime;/* 预录时间 0-不预录 1-5秒 2-10秒 3-15秒 4-20秒 5-25秒 6-30秒 7-0xffffffff(尽可能预录) */
public uint dwRecorderDuration;/* 录像保存的最长时间 */
public byte byRedundancyRec;/*是否冗余录像,重要数据双备份:0/1*/
public byte byAudioRec;/*录像时复合流编码时是否记录音频数据:国外有此法规*/
public byte byStreamType; // 0:主码流 1:子码流
public byte byPassbackRecord; // 0:不回传录像 1:回传录像
public ushort wLockDuration; // 录像锁定时长,单位小时 0表示不锁定,0xffff表示永久锁定,录像段的时长大于锁定的持续时长的录像,将不会锁定
public byte byRecordBackup; // 0:录像不存档 1:录像存档
public byte bySVCLevel; //SVC抽帧类型:0-不抽,1-抽二分之一 2-抽四分之三
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byReserve;
}
//通道录像参数配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_RECORD
{
public uint dwSize;
public uint dwRecord;/*是否录像 0-否 1-是*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_RECORDDAY[] struRecAllDay;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_RECORDSCHED[] struRecordSched;
public uint dwRecordTime;/* 录象时间长度 */
public uint dwPreRecordTime;/* 预录时间 0-不预录 1-5秒 2-10秒 3-15秒 4-20秒 5-25秒 6-30秒 7-0xffffffff(尽可能预录) */
}
//云台协议表结构配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PTZ_PROTOCOL
{
public uint dwType;/*解码器类型值,从1开始连续递增*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = DESC_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byDescribe;/*解码器的描述符,和8000中的一致*/
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PTZCFG
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PTZ_PROTOCOL_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_PTZ_PROTOCOL[] struPtz;/*最大200中PTZ协议*/
public uint dwPtzNum;/*有效的ptz协议数目,从0开始(即计算时加1)*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
/***************************云台类型(end)******************************/
//通道解码器(云台)参数配置(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DECODERCFG_V30
{
public uint dwSize;
public uint dwBaudRate;//波特率(bps),0-50,1-75,2-110,3-150,4-300,5-600,6-1200,7-2400,8-4800,9-9600,10-19200, 11-38400,12-57600,13-76800,14-115.2k;
public byte byDataBit;// 数据有几位 0-5位,1-6位,2-7位,3-8位;
public byte byStopBit;// 停止位 0-1位,1-2位
public byte byParity;// 校验 0-无校验,1-奇校验,2-偶校验;
public byte byFlowcontrol;// 0-无,1-软流控,2-硬流控
public ushort wDecoderType;//解码器类型, 从0开始,对应ptz协议列表
public ushort wDecoderAddress;/*解码器地址:0 - 255*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_PRESET_V30, ArraySubType = UnmanagedType.I1)]
public byte[] bySetPreset;/* 预置点是否设置,0-没有设置,1-设置*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CRUISE_V30, ArraySubType = UnmanagedType.I1)]
public byte[] bySetCruise;/* 巡航是否设置: 0-没有设置,1-设置 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_TRACK_V30, ArraySubType = UnmanagedType.I1)]
public byte[] bySetTrack;/* 轨迹是否设置,0-没有设置,1-设置*/
}
//通道解码器(云台)参数配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DECODERCFG
{
public uint dwSize;
public uint dwBaudRate; //波特率(bps),0-50,1-75,2-110,3-150,4-300,5-600,6-1200,7-2400,8-4800,9-9600,10-19200, 11-38400,12-57600,13-76800,14-115.2k;
public byte byDataBit; // 数据有几位 0-5位,1-6位,2-7位,3-8位;
public byte byStopBit;// 停止位 0-1位,1-2位;
public byte byParity; // 校验 0-无校验,1-奇校验,2-偶校验;
public byte byFlowcontrol;// 0-无,1-软流控,2-硬流控
public ushort wDecoderType;//解码器类型, 0-YouLi,1-LiLin-1016,2-LiLin-820,3-Pelco-p,4-DM DynaColor,5-HD600,6-JC-4116,7-Pelco-d WX,8-Pelco-d PICO
public ushort wDecoderAddress;/*解码器地址:0 - 255*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_PRESET, ArraySubType = UnmanagedType.I1)]
public byte[] bySetPreset;/* 预置点是否设置,0-没有设置,1-设置*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CRUISE, ArraySubType = UnmanagedType.I1)]
public byte[] bySetCruise;/* 巡航是否设置: 0-没有设置,1-设置 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_TRACK, ArraySubType = UnmanagedType.I1)]
public byte[] bySetTrack;/* 轨迹是否设置,0-没有设置,1-设置*/
}
//ppp参数配置(子结构)
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_PPPCFG_V30
{
public NET_DVR_IPADDR struRemoteIP;//远端IP地址
public NET_DVR_IPADDR struLocalIP;//本地IP地址
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sLocalIPMask;//本地IP地址掩码
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUsername;/* 用户名 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;/* 密码 */
public byte byPPPMode;//PPP模式, 0-主动,1-被动
public byte byRedial;//是否回拨 :0-否,1-是
public byte byRedialMode;//回拨模式,0-由拨入者指定,1-预置回拨号码
public byte byDataEncrypt;//数据加密,0-否,1-是
public uint dwMTU;//MTU
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = PHONENUMBER_LEN)]
public string sTelephoneNumber;//电话号码
}
//ppp参数配置(子结构)
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_PPPCFG
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sRemoteIP;//远端IP地址
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sLocalIP;//本地IP地址
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sLocalIPMask;//本地IP地址掩码
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUsername;/* 用户名 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;/* 密码 */
public byte byPPPMode;//PPP模式, 0-主动,1-被动
public byte byRedial;//是否回拨 :0-否,1-是
public byte byRedialMode;//回拨模式,0-由拨入者指定,1-预置回拨号码
public byte byDataEncrypt;//数据加密,0-否,1-是
public uint dwMTU;//MTU
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = PHONENUMBER_LEN)]
public string sTelephoneNumber;//电话号码
}
//RS232串口参数配置(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SINGLE_RS232
{
public uint dwBaudRate;/*波特率(bps),0-50,1-75,2-110,3-150,4-300,5-600,6-1200,7-2400,8-4800,9-9600,10-19200, 11-38400,12-57600,13-76800,14-115.2k;*/
public byte byDataBit;/* 数据有几位 0-5位,1-6位,2-7位,3-8位 */
public byte byStopBit;/* 停止位 0-1位,1-2位 */
public byte byParity;/* 校验 0-无校验,1-奇校验,2-偶校验 */
public byte byFlowcontrol;/* 0-无,1-软流控,2-硬流控 */
public uint dwWorkMode; /* 工作模式,0-232串口用于PPP拨号,1-232串口用于参数控制,2-透明通道 */
}
//RS232串口参数配置(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_RS232CFG_V30
{
public uint dwSize;
public NET_DVR_SINGLE_RS232 struRs232;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 84, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public NET_DVR_PPPCFG_V30 struPPPConfig;
}
//RS232串口参数配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_RS232CFG
{
public uint dwSize;
public uint dwBaudRate;//波特率(bps),0-50,1-75,2-110,3-150,4-300,5-600,6-1200,7-2400,8-4800,9-9600,10-19200, 11-38400,12-57600,13-76800,14-115.2k;
public byte byDataBit;// 数据有几位 0-5位,1-6位,2-7位,3-8位;
public byte byStopBit;// 停止位 0-1位,1-2位;
public byte byParity;// 校验 0-无校验,1-奇校验,2-偶校验;
public byte byFlowcontrol;// 0-无,1-软流控,2-硬流控
public uint dwWorkMode;// 工作模式,0-窄带传输(232串口用于PPP拨号),1-控制台(232串口用于参数控制),2-透明通道
public NET_DVR_PPPCFG struPPPConfig;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PRESETCHAN_INFO
{
public uint dwEnablePresetChan; /*启用预置点的通道*/
public uint dwPresetPointNo; /*调用预置点通道对应的预置点序号, 0xfffffff表示不调用预置点。*/
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CRUISECHAN_INFO
{
public uint dwEnableCruiseChan; /*启用巡航的通道*/
public uint dwCruiseNo; /*巡航通道对应的巡航编号, 0xfffffff表示无效*/
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PTZTRACKCHAN_INFO
{
public uint dwEnablePtzTrackChan; /*启用云台轨迹的通道*/
public uint dwPtzTrackNo; /*云台轨迹通道对应的编号, 0xfffffff表示无效*/
}
//报警输入参数配置(256路NVR扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARMINCFG_V40
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sAlarmInName; /* 名称 */
public byte byAlarmType; //报警器类型,0:常开,1:常闭
public byte byAlarmInHandle; /* 是否处理 0-不处理 1-处理*/
public byte byChannel; // 报警输入触发智能识别通道
public byte byRes1; //保留
public uint dwHandleType; //异常处理,异常处理方式的"或"结果
/*0x00: 无响应*/
/*0x01: 监视器上警告*/
/*0x02: 声音警告*/
/*0x04: 上传中心*/
/*0x08: 触发报警输出*/
/*0x10: 触发JPRG抓图并上传Email*/
/*0x20: 无线声光报警器联动*/
/*0x40: 联动电子地图(目前只有PCNVR支持)*/
/*0x200: 抓图并上传FTP*/
public uint dwMaxRelAlarmOutChanNum; //触发的报警输出通道数(只读)最大支持数量
public uint dwRelAlarmOutChanNum; //触发的报警输出通道数 实际支持数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMOUT_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwRelAlarmOut; //触发报警通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
/*触发的录像通道*/
public uint dwMaxRecordChanNum; //设备支持的最大关联录像通道数-只读
public uint dwCurRecordChanNum; //当前实际已配置的关联录像通道数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwRelRecordChan; /* 实际触发录像通道,按值表示,采用紧凑型排列,从下标0 - dwCurRecordChanNum -1有效,如果中间遇到0xffffffff,则后续无效*/
public uint dwMaxEnablePtzCtrlNun; //最大可启用的云台控制总数(只读)
public uint dwEnablePresetChanNum; //当前已启用预置点的数目
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_PRESETCHAN_INFO[] struPresetChanInfo; //启用的预置点信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 516, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; /*保留*/
public uint dwEnableCruiseChanNum; //当前已启用巡航的通道数目
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_CRUISECHAN_INFO[] struCruiseChanInfo; //启用巡航功能通道的信息
public uint dwEnablePtzTrackChanNum; //当前已启用巡航的通道数目
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_PTZTRACKCHAN_INFO[] struPtzTrackInfo; //调用云台轨迹的通道信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 256, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//报警输入参数配置(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARMINCFG_V30
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sAlarmInName;/* 名称 */
public byte byAlarmType; //报警器类型,0:常开,1:常闭
public byte byAlarmInHandle; /* 是否处理 0-不处理 1-处理*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_HANDLEEXCEPTION_V30 struAlarmHandleType;/* 处理方式 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byRelRecordChan;//报警触发的录象通道,为1表示触发该通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byEnablePreset;/* 是否调用预置点 0-否,1-是*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byPresetNo;/* 调用的云台预置点序号,一个报警输入可以调用多个通道的云台预置点, 0xff表示不调用预置点。*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 192, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;/*保留*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byEnableCruise;/* 是否调用巡航 0-否,1-是*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byCruiseNo;/* 巡航 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byEnablePtzTrack;/* 是否调用轨迹 0-否,1-是*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byPTZTrack;/* 调用的云台的轨迹序号 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct STRUCT_IO_ALARM
{
public uint dwAlarmInputNo; //发生报警的报警输入通道号,一次只有一个
public uint dwTrigerAlarmOutNum; /*触发的报警输出个数,用于后面计算变长数据部分中所有触发的报警输出通道号,四字节表示一个*/
public uint dwTrigerRecordChanNum; /*触发的录像通道个数,用于后面计算变长数据部分中所有触发的录像通道号,四字节表示一个*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 116, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct STRUCT_ALARM_CHANNEL
{
public uint dwAlarmChanNum; /*发生报警通道数据个数,用于后面计算变长数据部分中所有发生的报警通道号,四字节表示一个*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 124, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct STRUCT_ALARM_HD
{
public uint dwAlarmHardDiskNum; /*发生报警的硬盘数据长度,用于后面计算变长数据部分中所有发生报警的硬盘号,四节表示一个*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 124, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayout(LayoutKind.Explicit)]
public struct UNION_ALARMINFO_FIXED
{
[FieldOffset(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byUnionLen;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALRAM_FIXED_HEADER
{
public uint dwAlarmType; /*0-信号量报警,1-硬盘满,2-信号丢失,3-移动侦测,4-硬盘未格式化,5-写硬盘出错,6-遮挡报警,7-制式不匹配, 8-非法访问,9-视频信号异常,10-录像异常,11-智能场景变化,12-阵列异常,13-前端/录像分辨率不匹配*/
public NET_DVR_TIME_EX struAlarmTime; //发生报警的时间
public UNION_ALARMINFO_FIXED uStruAlarm;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARMINFO_V40
{
public NET_DVR_ALRAM_FIXED_HEADER struAlarmFixedHeader; //报警固定部分
public IntPtr pAlarmData; //报警可变部分内容
}
//报警输入参数配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARMINCFG
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sAlarmInName;/* 名称 */
public byte byAlarmType;//报警器类型,0:常开,1:常闭
public byte byAlarmInHandle;/* 是否处理 0-不处理 1-处理*/
public byte byChannel; // 报警输入触发智能识别通道
public byte byRes;
public NET_DVR_HANDLEEXCEPTION struAlarmHandleType;/* 处理方式 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM, ArraySubType = UnmanagedType.I1)]
public byte[] byRelRecordChan;//报警触发的录象通道,为1表示触发该通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM, ArraySubType = UnmanagedType.I1)]
public byte[] byEnablePreset;/* 是否调用预置点 0-否,1-是*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM, ArraySubType = UnmanagedType.I1)]
public byte[] byPresetNo;/* 调用的云台预置点序号,一个报警输入可以调用多个通道的云台预置点, 0xff表示不调用预置点。*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM, ArraySubType = UnmanagedType.I1)]
public byte[] byEnableCruise;/* 是否调用巡航 0-否,1-是*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM, ArraySubType = UnmanagedType.I1)]
public byte[] byCruiseNo;/* 巡航 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM, ArraySubType = UnmanagedType.I1)]
public byte[] byEnablePtzTrack;/* 是否调用轨迹 0-否,1-是*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM, ArraySubType = UnmanagedType.I1)]
public byte[] byPTZTrack;/* 调用的云台的轨迹序号 */
}
//模拟报警输入参数配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ANALOG_ALARMINCFG
{
public uint dwSize;
public byte byEnableAlarmHandle; //处理报警输入
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byAlarmInName; //模拟报警输入名称
public ushort wAlarmInUpper; //模拟输入电压上限,实际值乘10,范围0~360
public ushort wAlarmInLower; //模拟输入电压下限,实际值乘10,范围0~360
public NET_DVR_HANDLEEXCEPTION_V30 struAlarmHandleType; /* 处理方式 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byRelRecordChan; //被触发的录像通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 100, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//上传报警信息(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARMINFO_V30
{
public uint dwAlarmType;/*0-信号量报警,1-硬盘满,2-信号丢失,3-移动侦测,4-硬盘未格式化,5-读写硬盘出错,6-遮挡报警,7-制式不匹配, 8-非法访问, 0xa-GPS定位信息(车载定制)*/
public uint dwAlarmInputNumber;/*报警输入端口*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMOUT_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byAlarmOutputNumber;/*触发的输出端口,为1表示对应输出*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byAlarmRelateChannel;/*触发的录像通道,为1表示对应录像, dwAlarmRelateChannel[0]对应第1个通道*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byChannel;/*dwAlarmType为2或3,6时,表示哪个通道,dwChannel[0]对应第1个通道*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DISKNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byDiskNumber;/*dwAlarmType为1,4,5时,表示哪个硬盘, dwDiskNumber[0]对应第1个硬盘*/
public void Init()
{
dwAlarmType = 0;
dwAlarmInputNumber = 0;
byAlarmRelateChannel = new byte[MAX_CHANNUM_V30];
byChannel = new byte[MAX_CHANNUM_V30];
byAlarmOutputNumber = new byte[MAX_ALARMOUT_V30];
byDiskNumber = new byte[MAX_DISKNUM_V30];
for (int i = 0; i < MAX_CHANNUM_V30; i++)
{
byAlarmRelateChannel[i] = Convert.ToByte(0);
byChannel[i] = Convert.ToByte(0);
}
for (int i = 0; i < MAX_ALARMOUT_V30; i++)
{
byAlarmOutputNumber[i] = Convert.ToByte(0);
}
for (int i = 0; i < MAX_DISKNUM_V30; i++)
{
byDiskNumber[i] = Convert.ToByte(0);
}
}
public void Reset()
{
dwAlarmType = 0;
dwAlarmInputNumber = 0;
for (int i = 0; i < MAX_CHANNUM_V30; i++)
{
byAlarmRelateChannel[i] = Convert.ToByte(0);
byChannel[i] = Convert.ToByte(0);
}
for (int i = 0; i < MAX_ALARMOUT_V30; i++)
{
byAlarmOutputNumber[i] = Convert.ToByte(0);
}
for (int i = 0; i < MAX_DISKNUM_V30; i++)
{
byDiskNumber[i] = Convert.ToByte(0);
}
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARM_HOT_SPARE
{
public uint dwSize; //结构体
public uint dwExceptionCase; //报警原因 0-网络异常
public NET_DVR_IPADDR struDeviceIP; //产生异常的设备IP地址
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 256, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARMINFO
{
public int dwAlarmType;/*0-信号量报警,1-硬盘满,2-信号丢失,3-移动侦测,4-硬盘未格式化,5-读写硬盘出错,6-遮挡报警,7-制式不匹配, 8-非法访问, 9-串口状态, 0xa-GPS定位信息(车载定制)*/
public int dwAlarmInputNumber;/*报警输入端口, 当报警类型为9时该变量表示串口状态0表示正常, -1表示错误*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMOUT, ArraySubType = UnmanagedType.U4)]
public int[] dwAlarmOutputNumber;/*触发的输出端口,哪一位为1表示对应哪一个输出*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM, ArraySubType = UnmanagedType.U4)]
public int[] dwAlarmRelateChannel;/*触发的录像通道,哪一位为1表示对应哪一路录像, dwAlarmRelateChannel[0]对应第1个通道*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM, ArraySubType = UnmanagedType.U4)]
public int[] dwChannel;/*dwAlarmType为2或3,6时,表示哪个通道,dwChannel[0]位对应第1个通道*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DISKNUM, ArraySubType = UnmanagedType.U4)]
public int[] dwDiskNumber;/*dwAlarmType为1,4,5时,表示哪个硬盘, dwDiskNumber[0]位对应第1个硬盘*/
public void Init()
{
dwAlarmType = 0;
dwAlarmInputNumber = 0;
dwAlarmOutputNumber = new int[MAX_ALARMOUT];
dwAlarmRelateChannel = new int[MAX_CHANNUM];
dwChannel = new int[MAX_CHANNUM];
dwDiskNumber = new int[MAX_DISKNUM];
for (int i = 0; i < MAX_ALARMOUT; i++)
{
dwAlarmOutputNumber[i] = 0;
}
for (int i = 0; i < MAX_CHANNUM; i++)
{
dwAlarmRelateChannel[i] = 0;
dwChannel[i] = 0;
}
for (int i = 0; i < MAX_DISKNUM; i++)
{
dwDiskNumber[i] = 0;
}
}
public void Reset()
{
dwAlarmType = 0;
dwAlarmInputNumber = 0;
for (int i = 0; i < MAX_ALARMOUT; i++)
{
dwAlarmOutputNumber[i] = 0;
}
for (int i = 0; i < MAX_CHANNUM; i++)
{
dwAlarmRelateChannel[i] = 0;
dwChannel[i] = 0;
}
for (int i = 0; i < MAX_DISKNUM; i++)
{
dwDiskNumber[i] = 0;
}
}
}
//////////////////////////////////////////////////////////////////////////////////////
//IPC接入参数配置
/* IP设备结构 */
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPDEVINFO
{
public uint dwEnable;/* 该IP设备是否启用 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName;/* 用户名 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword; /* 密码 */
public NET_DVR_IPADDR struIP;/* IP地址 */
public ushort wDVRPort;/* 端口号 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 34, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;/* 保留 */
public void Init()
{
sUserName = new byte[NAME_LEN];
sPassword = new byte[PASSWD_LEN];
byRes = new byte[34];
}
}
//ipc接入设备信息扩展,支持ip设备的域名添加
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPDEVINFO_V31
{
public byte byEnable;//该IP设备是否有效
public byte byProType;
public byte byEnableQuickAdd;
public byte byRes1;//保留字段,置0
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName;//用户名
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;//密码
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] byDomain;//设备域名
public NET_DVR_IPADDR struIP;//IP地址
public ushort wDVRPort;// 端口号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 34, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;//保留字段,置0
public void Init()
{
sUserName = new byte[NAME_LEN];
sPassword = new byte[PASSWD_LEN];
byDomain = new byte[MAX_DOMAIN_NAME];
byRes2 = new byte[34];
}
}
/* IP通道匹配参数 */
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPCHANINFO
{
public byte byEnable;/* 该通道是否在线 */
public byte byIPID;/* IP设备ID 取值1- MAX_IP_DEVICE */
public byte byChannel;/* 通道号 */
public byte byIPIDHigh; // IP设备ID的高8位
public byte byTransProtocol;//传输协议类型0-TCP/auto(具体有设备决定),1-UDP 2-多播 3-仅TCP 4-auto
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 31, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留,置0
public void Init()
{
byRes = new byte[31];
}
}
/* IP接入配置结构 */
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPPARACFG
{
public uint dwSize;/* 结构大小 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_DEVICE, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPDEVINFO[] struIPDevInfo;/* IP设备 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ANALOG_CHANNUM, ArraySubType = UnmanagedType.I1)]
public byte[] byAnalogChanEnable; /* 模拟通道是否启用,从低到高表示1-32通道,0表示无效 1有效 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_CHANNEL, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPCHANINFO[] struIPChanInfo;/* IP通道 */
public void Init()
{
int i = 0;
struIPDevInfo = new NET_DVR_IPDEVINFO[MAX_IP_DEVICE];
for (i = 0; i < MAX_IP_DEVICE; i++)
{
struIPDevInfo[i].Init();
}
byAnalogChanEnable = new byte[MAX_ANALOG_CHANNUM];
struIPChanInfo = new NET_DVR_IPCHANINFO[MAX_IP_CHANNEL];
for (i = 0; i < MAX_IP_CHANNEL; i++)
{
struIPChanInfo[i].Init();
}
}
}
/* 扩展IP接入配置结构 */
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPPARACFG_V31
{
public uint dwSize;/* 结构大小 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_DEVICE, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPDEVINFO_V31[] struIPDevInfo; /* IP设备 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ANALOG_CHANNUM, ArraySubType = UnmanagedType.I1)]
public byte[] byAnalogChanEnable; /* 模拟通道是否启用,从低到高表示1-32通道,0表示无效 1有效 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_CHANNEL, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPCHANINFO[] struIPChanInfo;/* IP通道 */
public void Init()
{
int i = 0;
struIPDevInfo = new NET_DVR_IPDEVINFO_V31[MAX_IP_DEVICE];
for (i = 0; i < MAX_IP_DEVICE; i++)
{
struIPDevInfo[i].Init();
}
byAnalogChanEnable = new byte[MAX_ANALOG_CHANNUM];
struIPChanInfo = new NET_DVR_IPCHANINFO[MAX_IP_CHANNEL];
for (i = 0; i < MAX_IP_CHANNEL; i++)
{
struIPChanInfo[i].Init();
}
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPSERVER_STREAM
{
public byte byEnable;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public NET_DVR_IPADDR struIPServer;
public ushort wPort;
public ushort wDvrNameLen;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byDVRName;
public ushort wDVRSerialLen;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.U2)]
public ushort[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SERIALNO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byDVRSerialNumber;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byUserName;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byPassWord;
public byte byChannel;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 11, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public void Init()
{
byRes = new byte[3];
byDVRName = new byte[NAME_LEN];
byRes1 = new ushort[2];
byDVRSerialNumber = new byte[SERIALNO_LEN];
byUserName = new byte[NAME_LEN];
byPassWord = new byte[PASSWD_LEN];
byRes2 = new byte[11];
}
}
/*流媒体服务器基本配置*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_STREAM_MEDIA_SERVER_CFG
{
public byte byValid;/*是否启用流媒体服务器取流,0表示无效,非0表示有效*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_IPADDR struDevIP;
public ushort wDevPort;/*流媒体服务器端口*/
public byte byTransmitType;/*传输协议类型 0-TCP,1-UDP*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 69, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//设备通道信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DEV_CHAN_INFO
{
public NET_DVR_IPADDR struIP; //DVR IP地址
public ushort wDVRPort; //端口号
public byte byChannel; //通道号
public byte byTransProtocol; //传输协议类型0-TCP,1-UDP
public byte byTransMode; //传输码流模式 0-主码流 1-子码流
public byte byFactoryType; /*前端设备厂家类型,通过接口获取*/
public byte byDeviceType; //设备类型(视频综合平台智能板使用),1-解码器(此时根据视频综合平台能力集中byVcaSupportChanMode字段来决定是使用解码通道还是显示通道),2-编码器
public byte byDispChan;//显示通道号,智能配置使用
public byte bySubDispChan;//显示通道子通道号,智能配置时使用
public byte byResolution; //; 1-CIF 2-4CIF 3-720P 4-1080P 5-500w大屏控制器使用,大屏控制器会根据该参数分配解码资源
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] byDomain; //设备域名
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName; //监控主机登陆帐号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword; //监控主机密码
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PU_STREAM_CFG
{
public uint dwSize;
public NET_DVR_STREAM_MEDIA_SERVER_CFG struStreamMediaSvrCfg;
public NET_DVR_DEV_CHAN_INFO struDevChanInfo;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DDNS_STREAM_CFG
{
public byte byEnable;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_IPADDR struStreamServer;
public ushort wStreamServerPort;
public byte byStreamServerTransmitType;
public byte byRes2;
public NET_DVR_IPADDR struIPServer;
public ushort wIPServerPort;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sDVRName;
public ushort wDVRNameLen;
public ushort wDVRSerialLen;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SERIALNO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sDVRSerialNumber;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassWord;
public ushort wDVRPort;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes4;
public byte byChannel;
public byte byTransProtocol;
public byte byTransMode;
public byte byFactoryType;
public void Init()
{
byRes1 = new byte[3];
byRes3 = new byte[2];
sDVRName = new byte[NAME_LEN];
sDVRSerialNumber = new byte[SERIALNO_LEN];
sUserName = new byte[NAME_LEN];
sPassWord = new byte[PASSWD_LEN];
byRes4 = new byte[2];
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PU_STREAM_URL
{
public byte byEnable;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 240, ArraySubType = UnmanagedType.I1)]
public byte[] strURL;
public byte byTransPortocol;
public ushort wIPID;
public byte byChannel;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 7, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public void Init()
{
strURL = new byte[240];
byRes = new byte[7];
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HKDDNS_STREAM
{
public byte byEnable;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byDDNSDomain;
public ushort wPort;
public ushort wAliasLen;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byAlias;
public ushort wDVRSerialLen;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SERIALNO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byDVRSerialNumber;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byUserName;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byPassWord;
public byte byChannel;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 11, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public void Init()
{
byRes = new byte[3];
byDDNSDomain = new byte[64];
byAlias = new byte[NAME_LEN];
byRes1 = new byte[2];
byDVRSerialNumber = new byte[SERIALNO_LEN];
byUserName = new byte[NAME_LEN];
byPassWord = new byte[PASSWD_LEN];
byRes2 = new byte[11];
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPCHANINFO_V40
{
public byte byEnable; /* 该通道是否在线 */
public byte byRes1;
public ushort wIPID; //IP设备ID
public uint dwChannel; //通道号
public byte byTransProtocol; //传输协议类型0-TCP,1-UDP
public byte byTransMode; //传输码流模式 0-主码流 1-子码流
public byte byFactoryType; /*前端设备厂家类型,通过接口获取*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 241, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayout(LayoutKind.Explicit)]
public struct NET_DVR_GET_STREAM_UNION
{
[FieldOffset(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 492, ArraySubType = UnmanagedType.I1)]
public byte[] byUnion;
public void Init()
{
byUnion = new byte[492];
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_STREAM_MODE
{
public byte byGetStreamType;/*取流方式:0- 直接从设备取流;1- 从流媒体取流;2- 通过IPServer获得IP地址后取流;
* 3- 通过IPServer找到设备,再通过流媒体取设备的流; 4- 通过流媒体由URL去取流;
* 5- 通过hiDDNS域名连接设备然后从设备取流 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public NET_DVR_GET_STREAM_UNION uGetStream;
public void Init()
{
byGetStreamType = 0;
byRes = new byte[3];
//uGetStream.Init();
}
}
/* V40扩展IP接入配置结构 */
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPPARACFG_V40
{
public uint dwSize;/* 结构大小 */
public uint dwGroupNum;
public uint dwAChanNum;
public uint dwDChanNum;
public uint dwStartDChan;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byAnalogChanEnable; /* 模拟通道是否启用,从低到高表示1-32通道,0表示无效 1有效 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_DEVICE_V40, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPDEVINFO_V31[] struIPDevInfo; /* IP设备 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_STREAM_MODE[] struStreamMode;/* IP通道 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; /* 模拟通道是否启用,从低到高表示1-32通道,0表示无效 1有效 */
}
//为CVR扩展的报警类型
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARMINFO_DEV
{
public uint dwAlarmType; //0-编码器(通道)信号量报警;1-私有卷二损坏;2- NVR服务退出;
//3-编码器状态异常;4-系统时钟异常;5-录像卷剩余容量过低;
//6-编码器(通道)移动侦测报警;7-编码器(通道)遮挡报警。
public NET_DVR_TIME struTime; //报警时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
public uint dwNumber; //数目
public IntPtr pNO; //dwNumber个WORD; 每个WORD表示一个通道号,或者磁盘号, 无效时为0
}
/* 报警输出参数 */
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPALARMOUTINFO
{
public byte byIPID;/* IP设备ID取值1- MAX_IP_DEVICE */
public byte byAlarmOut;/* 报警输出号 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 18, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;/* 保留 */
public void Init()
{
byRes = new byte[18];
}
}
/* IP报警输出配置结构 */
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPALARMOUTCFG
{
public uint dwSize; /* 结构大小 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_ALARMOUT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPALARMOUTINFO[] struIPAlarmOutInfo;/* IP报警输出 */
public void Init()
{
struIPAlarmOutInfo = new NET_DVR_IPALARMOUTINFO[MAX_IP_ALARMOUT];
for (int i = 0; i < MAX_IP_ALARMOUT; i++)
{
struIPAlarmOutInfo[i].Init();
}
}
}
/* IP报警输出参数 */
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPALARMOUTINFO_V40
{
public uint dwIPID; /* IP设备ID */
public uint dwAlarmOut; /* IP设备ID对应的报警输出号 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; /* 保留 */
}
/*IP报警输出*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPALARMOUTCFG_V40
{
public uint dwSize; //结构体长度
public uint dwCurIPAlarmOutNum;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_ALARMOUT_V40, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPALARMOUTINFO_V40[] struIPAlarmOutInfo;/*IP报警输出*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 256, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
/* 报警输入参数 */
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPALARMININFO
{
public byte byIPID;/* IP设备ID取值1- MAX_IP_DEVICE */
public byte byAlarmIn;/* 报警输入号 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 18, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;/* 保留 */
}
/* IP报警输入配置结构 */
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPALARMINCFG
{
public uint dwSize;/* 结构大小 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_ALARMIN, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPALARMININFO[] struIPAlarmInInfo;/* IP报警输入 */
}
/* IP报警输入参数 */
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPALARMININFO_V40
{
public uint dwIPID; /* IP设备ID */
public uint dwAlarmIn; /* IP设备ID对应的报警输入号 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; /* 保留 */
}
/*IP报警输入资源*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPALARMINCFG_V40
{
public uint dwSize; //结构体长度
public uint dwCurIPAlarmInNum; //当前报警输入口数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_ALARMIN_V40, ArraySubType = UnmanagedType.I1)]
public NET_DVR_IPALARMININFO_V40[] struIPAlarmInInfo;/* IP报警输入*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 256, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//ipc alarm info
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPALARMINFO
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_DEVICE, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPDEVINFO[] struIPDevInfo; /* IP设备 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ANALOG_CHANNUM, ArraySubType = UnmanagedType.I1)]
public byte[] byAnalogChanEnable; /* 模拟通道是否启用,0-未启用 1-启用 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_CHANNEL, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPCHANINFO[] struIPChanInfo;/* IP通道 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_ALARMIN, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPALARMININFO[] struIPAlarmInInfo;/* IP报警输入 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_ALARMOUT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPALARMOUTINFO[] struIPAlarmOutInfo;/* IP报警输出 */
}
//ipc配置改变报警信息扩展 9000_1.1
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPALARMINFO_V31
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_DEVICE, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPDEVINFO_V31[] struIPDevInfo; /* IP设备 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ANALOG_CHANNUM, ArraySubType = UnmanagedType.I1)]
public byte[] byAnalogChanEnable;/* 模拟通道是否启用,0-未启用 1-启用 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_CHANNEL, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPCHANINFO[] struIPChanInfo;/* IP通道 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_ALARMIN, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPALARMININFO[] struIPAlarmInInfo; /* IP报警输入 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_ALARMOUT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPALARMOUTINFO[] struIPAlarmOutInfo;/* IP报警输出 */
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPALARMINFO_V40
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_DEVICE_V40, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPDEVINFO_V31[] struIPDevInfo; // IP设备
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byAnalogChanEnable; /* 模拟通道是否启用,0-未启用 1-启用 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPCHANINFO[] struIPChanInfo; /* IP通道 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_ALARMIN, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPALARMININFO[] struIPAlarmInInfo; /* IP报警输入 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IP_ALARMOUT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPALARMOUTINFO[] struIPAlarmOutInfo; /* IP报警输出 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
public enum HD_STAT
{
HD_STAT_OK = 0,/* 正常 */
HD_STAT_UNFORMATTED = 1,/* 未格式化 */
HD_STAT_ERROR = 2,/* 错误 */
HD_STAT_SMART_FAILED = 3,/* SMART状态 */
HD_STAT_MISMATCH = 4,/* 不匹配 */
HD_STAT_IDLE = 5, /* 休眠*/
NET_HD_STAT_OFFLINE = 6,/*网络盘处于未连接状态 */
HD_RIADVD_EXPAND = 7, /* 虚拟磁盘可扩容 */
HD_STAT_REPARING = 10, /* 硬盘正在修复(9000 2.0) */
HD_STAT_FORMATING = 11, /* 硬盘正在格式化(9000 2.0) */
}
//本地硬盘信息配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SINGLE_HD
{
public uint dwHDNo;/*硬盘号, 取值0~MAX_DISKNUM_V30-1*/
public uint dwCapacity;/*硬盘容量(不可设置)*/
public uint dwFreeSpace;/*硬盘剩余空间(不可设置)*/
public uint dwHdStatus;/*硬盘状态(不可设置) HD_STAT*/
public byte byHDAttr;/*0-默认, 1-冗余; 2-只读*/
public byte byHDType;/*0-本地硬盘,1-ESATA硬盘,2-NAS硬盘*/
public byte byDiskDriver; // 值 代表其ASCII字符
public byte byRes1;
public uint dwHdGroup; /*属于哪个盘组 1-MAX_HD_GROUP*/
public byte byRecycling; // 是否循环利用 0:不循环利用,1:循环利用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public uint dwStorageType; //按位表示 0-不支持 非0-支持
// dwStorageType & 0x1 表示是否是普通录像专用存储盘
// dwStorageType & 0x2 表示是否是抽帧录像专用存储盘
// dwStorageType & 0x4 表示是否是图片录像专用存储盘
public uint dwPictureCapacity; //硬盘图片容量(不可设置),单位:MB
public uint dwFreePictureSpace; //剩余图片空间(不可设置),单位:MB
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 104, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HDCFG
{
public uint dwSize;
public uint dwHDCount;/*硬盘数(不可设置)*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DISKNUM_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SINGLE_HD[] struHDInfo;//硬盘相关操作都需要重启才能生效;
}
//本地盘组信息配置扩展
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SINGLE_HDGROUP_V40
{
public uint dwHDGroupNo; /*盘组号(不可设置) 1-MAX_HD_GROUP*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwRelRecordChan; //触发的录像通道,按值表示,遇到0xffffffff时后续视为无效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; /* 保留 */
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HDGROUP_CFG_V40
{
public uint dwSize; //结构体大小
public uint dwMaxHDGroupNum; //设备支持的最大盘组数-只读
public uint dwCurHDGroupNum; /*当前配置的盘组数*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_HD_GROUP, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SINGLE_HDGROUP_V40[] struHDGroupAttr; //硬盘相关操作都需要重启才能生效;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//本地盘组信息配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SINGLE_HDGROUP
{
public uint dwHDGroupNo;/*盘组号(不可设置) 1-MAX_HD_GROUP*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byHDGroupChans;/*盘组对应的录像通道, 0-表示该通道不录象到该盘组,1-表示录象到该盘组*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HDGROUP_CFG
{
public uint dwSize;
public uint dwHDGroupCount;/*盘组总数(不可设置)*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_HD_GROUP, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SINGLE_HDGROUP[] struHDGroupAttr;//硬盘相关操作都需要重启才能生效
}
//配置缩放参数的结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCALECFG
{
public uint dwSize;
public uint dwMajorScale;/* 主显示 0-不缩放,1-缩放*/
public uint dwMinorScale;/* 辅显示 0-不缩放,1-缩放*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.U4)]
public uint[] dwRes;
}
//DVR报警输出(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARMOUTCFG_V30
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sAlarmOutName;/* 名称 */
public uint dwAlarmOutDelay;/* 输出保持时间(-1为无限,手动关闭) */
//0-5秒,1-10秒,2-30秒,3-1分钟,4-2分钟,5-5分钟,6-10分钟,7-手动
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmOutTime;/* 报警输出激活时间段 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//DVR报警输出
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARMOUTCFG
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sAlarmOutName;/* 名称 */
public uint dwAlarmOutDelay;/* 输出保持时间(-1为无限,手动关闭) */
//0-5秒,1-10秒,2-30秒,3-1分钟,4-2分钟,5-5分钟,6-10分钟,7-手动
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmOutTime;/* 报警输出激活时间段 */
}
//DVR本地预览参数(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PREVIEWCFG_V30
{
public uint dwSize;
public byte byPreviewNumber;//预览数目,0-1画面,1-4画面,2-9画面,3-16画面,0xff:最大画面
public byte byEnableAudio;//是否声音预览,0-不预览,1-预览
public ushort wSwitchTime;//切换时间,0-不切换,1-5s,2-10s,3-20s,4-30s,5-60s,6-120s,7-300s
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_PREVIEW_MODE * MAX_WINDOW_V30, ArraySubType = UnmanagedType.I1)]
public byte[] bySwitchSeq;//切换顺序,如果lSwitchSeq[i]为 0xff表示不用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//DVR本地预览参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PREVIEWCFG
{
public uint dwSize;
public byte byPreviewNumber;//预览数目,0-1画面,1-4画面,2-9画面,3-16画面,0xff:最大画面
public byte byEnableAudio;//是否声音预览,0-不预览,1-预览
public ushort wSwitchTime;//切换时间,0-不切换,1-5s,2-10s,3-20s,4-30s,5-60s,6-120s,7-300s
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_WINDOW, ArraySubType = UnmanagedType.I1)]
public byte[] bySwitchSeq;//切换顺序,如果lSwitchSeq[i]为 0xff表示不用
}
//DVR视频输出
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VGAPARA
{
public ushort wResolution;/* 分辨率 */
public ushort wFreq;/* 刷新频率 */
public uint dwBrightness;/* 亮度 */
}
//MATRIX输出参数结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIXPARA_V30
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ANALOG_CHANNUM, ArraySubType = UnmanagedType.U2)]
public ushort[] wOrder;/* 预览顺序, 0xff表示相应的窗口不预览 */
public ushort wSwitchTime;// 预览切换时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 14, ArraySubType = UnmanagedType.I1)]
public byte[] res;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIXPARA
{
public ushort wDisplayLogo;/* 显示视频通道号 */
public ushort wDisplayOsd;/* 显示时间 */
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VOOUT
{
public byte byVideoFormat;/* 输出制式,0-PAL,1-NTSC */
public byte byMenuAlphaValue;/* 菜单与背景图象对比度 */
public ushort wScreenSaveTime;/* 屏幕保护时间 0-从不,1-1分钟,2-2分钟,3-5分钟,4-10分钟,5-20分钟,6-30分钟 */
public ushort wVOffset;/* 视频输出偏移 */
public ushort wBrightness;/* 视频输出亮度 */
public byte byStartMode;/* 启动后视频输出模式(0:菜单,1:预览)*/
public byte byEnableScaler;/* 是否启动缩放 (0-不启动, 1-启动)*/
}
//DVR视频输出(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VIDEOOUT_V30
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_VIDEOOUT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_VOOUT[] struVOOut;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_VGA_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_VGAPARA[] struVGAPara;/* VGA参数 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_MATRIXOUT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_MATRIXPARA_V30[] struMatrixPara;/* MATRIX参数 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//DVR视频输出
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VIDEOOUT
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_VIDEOOUT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_VOOUT[] struVOOut;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_VGA, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_VGAPARA[] struVGAPara; /* VGA参数 */
public NET_DVR_MATRIXPARA struMatrixPara;/* MATRIX参数 */
}
//单用户参数(子结构)(扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_USER_INFO_V40
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName; /* 用户名只能用16字节 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword; /* 密码 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RIGHT, ArraySubType = UnmanagedType.I1)]
public byte[] byLocalRight; /* 本地权限 */
/*数组0: 本地控制云台*/
/*数组1: 本地手动录象*/
/*数组2: 本地回放*/
/*数组3: 本地设置参数*/
/*数组4: 本地查看状态、日志*/
/*数组5: 本地高级操作(升级,格式化,重启,关机)*/
/*数组6: 本地查看参数 */
/*数组7: 本地管理模拟和IP camera */
/*数组8: 本地备份 */
/*数组9: 本地关机/重启 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RIGHT, ArraySubType = UnmanagedType.I1)]
public byte[] byRemoteRight;/* 远程权限 */
/*数组0: 远程控制云台*/
/*数组1: 远程手动录象*/
/*数组2: 远程回放 */
/*数组3: 远程设置参数*/
/*数组4: 远程查看状态、日志*/
/*数组5: 远程高级操作(升级,格式化,重启,关机)*/
/*数组6: 远程发起语音对讲*/
/*数组7: 远程预览*/
/*数组8: 远程请求报警上传、报警输出*/
/*数组9: 远程控制,本地输出*/
/*数组10: 远程控制串口*/
/*数组11: 远程查看参数 */
/*数组12: 远程管理模拟和IP camera */
/*数组13: 远程关机/重启 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwNetPreviewRight; /* 远程可以预览的通道,从前往后顺序排列,遇到0xffffffff后续均为无效*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwLocalRecordRight; /* 本地可以录像的通道,从前往后顺序排列,遇到0xffffffff后续均为无效*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwNetRecordRight; /* 远程可以录像的通道,从前往后顺序排列,遇到0xffffffff后续均为无效*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwLocalPlaybackRight; /* 本地可以回放的通道,从前往后顺序排列,遇到0xffffffff后续均为无效*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwNetPlaybackRight; /* 远程可以回放的通道,从前往后顺序排列,遇到0xffffffff后续均为无效*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwLocalPTZRight; /* 本地可以PTZ的通道,从前往后顺序排列,遇到0xffffffff后续均为无效*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwNetPTZRight; /* 远程可以PTZ的通道,从前往后顺序排列,遇到0xffffffff后续均为无效*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwLocalBackupRight; /* 本地备份权限通道,从前往后顺序排列,遇到0xffffffff后续均为无效*/
public NET_DVR_IPADDR struUserIP; /* 用户IP地址(为0时表示允许任何地址) */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MACADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byMACAddr; /* 物理地址 */
public byte byPriority; /* 优先级,0xff-无,0--低,1--中,2--高 */
/* 无……表示不支持优先级的设置
低……默认权限:包括本地和远程回放,本地和远程查看日志和状态,本地和远程关机/重启
中……包括本地和远程控制云台,本地和远程手动录像,本地和远程回放,语音对讲和远程预览、本地备份,本地/远程关机/重启
高……管理员 */
public byte byAlarmOnRight; // 报警输入口布防权限 1-有权限,0-无权限
public byte byAlarmOffRight; // 报警输入口撤防权限 1-有权限,0-无权限
public byte byBypassRight; // 报警输入口旁路权限 1-有权限,0-无权限
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 118, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//单用户参数(子结构)(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_USER_INFO_V30
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName;/* 用户名 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;/* 密码 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RIGHT, ArraySubType = UnmanagedType.I1)]
public byte[] byLocalRight;/* 本地权限 */
/*数组0: 本地控制云台*/
/*数组1: 本地手动录象*/
/*数组2: 本地回放*/
/*数组3: 本地设置参数*/
/*数组4: 本地查看状态、日志*/
/*数组5: 本地高级操作(升级,格式化,重启,关机)*/
/*数组6: 本地查看参数 */
/*数组7: 本地管理模拟和IP camera */
/*数组8: 本地备份 */
/*数组9: 本地关机/重启 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RIGHT, ArraySubType = UnmanagedType.I1)]
public byte[] byRemoteRight;/* 远程权限 */
/*数组0: 远程控制云台*/
/*数组1: 远程手动录象*/
/*数组2: 远程回放 */
/*数组3: 远程设置参数*/
/*数组4: 远程查看状态、日志*/
/*数组5: 远程高级操作(升级,格式化,重启,关机)*/
/*数组6: 远程发起语音对讲*/
/*数组7: 远程预览*/
/*数组8: 远程请求报警上传、报警输出*/
/*数组9: 远程控制,本地输出*/
/*数组10: 远程控制串口*/
/*数组11: 远程查看参数 */
/*数组12: 远程管理模拟和IP camera */
/*数组13: 远程关机/重启 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byNetPreviewRight;/* 远程可以预览的通道 0-有权限,1-无权限*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byLocalPlaybackRight;/* 本地可以回放的通道 0-有权限,1-无权限*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byNetPlaybackRight;/* 远程可以回放的通道 0-有权限,1-无权限*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byLocalRecordRight;/* 本地可以录像的通道 0-有权限,1-无权限*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byNetRecordRight;/* 远程可以录像的通道 0-有权限,1-无权限*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byLocalPTZRight;/* 本地可以PTZ的通道 0-有权限,1-无权限*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byNetPTZRight;/* 远程可以PTZ的通道 0-有权限,1-无权限*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byLocalBackupRight;/* 本地备份权限通道 0-有权限,1-无权限*/
public NET_DVR_IPADDR struUserIP;/* 用户IP地址(为0时表示允许任何地址) */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MACADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byMACAddr;/* 物理地址 */
public byte byPriority;/* 优先级,0xff-无,0--低,1--中,2--高 */
/*
无……表示不支持优先级的设置
低……默认权限:包括本地和远程回放,本地和远程查看日志和状态,本地和远程关机/重启
中……包括本地和远程控制云台,本地和远程手动录像,本地和远程回放,语音对讲和远程预览
本地备份,本地/远程关机/重启
高……管理员
*/
public byte byAlarmOnRight; // 报警输入口布防权限
public byte byAlarmOffRight; // 报警输入口撤防权限
public byte byBypassRight; // 报警输入口旁路权限
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 14, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//单用户参数(SDK_V15扩展)(子结构)
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_USER_INFO_EX
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName;/* 用户名 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;/* 密码 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RIGHT, ArraySubType = UnmanagedType.U4)]
public uint[] dwLocalRight;/* 权限 */
/*数组0: 本地控制云台*/
/*数组1: 本地手动录象*/
/*数组2: 本地回放*/
/*数组3: 本地设置参数*/
/*数组4: 本地查看状态、日志*/
/*数组5: 本地高级操作(升级,格式化,重启,关机)*/
public uint dwLocalPlaybackRight;/* 本地可以回放的通道 bit0 -- channel 1*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RIGHT, ArraySubType = UnmanagedType.U4)]
public uint[] dwRemoteRight;/* 权限 */
/*数组0: 远程控制云台*/
/*数组1: 远程手动录象*/
/*数组2: 远程回放 */
/*数组3: 远程设置参数*/
/*数组4: 远程查看状态、日志*/
/*数组5: 远程高级操作(升级,格式化,重启,关机)*/
/*数组6: 远程发起语音对讲*/
/*数组7: 远程预览*/
/*数组8: 远程请求报警上传、报警输出*/
/*数组9: 远程控制,本地输出*/
/*数组10: 远程控制串口*/
public uint dwNetPreviewRight;/* 远程可以预览的通道 bit0 -- channel 1*/
public uint dwNetPlaybackRight;/* 远程可以回放的通道 bit0 -- channel 1*/
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sUserIP;/* 用户IP地址(为0时表示允许任何地址) */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MACADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byMACAddr;/* 物理地址 */
}
//单用户参数(子结构)
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_USER_INFO
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName;/* 用户名 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;/* 密码 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RIGHT, ArraySubType = UnmanagedType.U4)]
public uint[] dwLocalRight;/* 权限 */
/*数组0: 本地控制云台*/
/*数组1: 本地手动录象*/
/*数组2: 本地回放*/
/*数组3: 本地设置参数*/
/*数组4: 本地查看状态、日志*/
/*数组5: 本地高级操作(升级,格式化,重启,关机)*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RIGHT, ArraySubType = UnmanagedType.U4)]
public uint[] dwRemoteRight;/* 权限 */
/*数组0: 远程控制云台*/
/*数组1: 远程手动录象*/
/*数组2: 远程回放 */
/*数组3: 远程设置参数*/
/*数组4: 远程查看状态、日志*/
/*数组5: 远程高级操作(升级,格式化,重启,关机)*/
/*数组6: 远程发起语音对讲*/
/*数组7: 远程预览*/
/*数组8: 远程请求报警上传、报警输出*/
/*数组9: 远程控制,本地输出*/
/*数组10: 远程控制串口*/
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sUserIP;/* 用户IP地址(为0时表示允许任何地址) */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MACADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byMACAddr;/* 物理地址 */
}
//DVR用户参数(扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_USER_V40
{
public uint dwSize; //结构体大小
public uint dwMaxUserNum; //设备支持的最大用户数-只读
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_USERNUM_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_USER_INFO_V40[] struUser; /* 用户参数 */
}
//DVR用户参数(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_USER_V30
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_USERNUM_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_USER_INFO_V30[] struUser;
}
//DVR用户参数(SDK_V15扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_USER_EX
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_USERNUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_USER_INFO_EX[] struUser;
}
//DVR用户参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_USER
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_USERNUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_USER_INFO[] struUser;
}
//异常参数配置扩展结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_EXCEPTION_V40
{
public uint dwSize; //结构体大小
public uint dwMaxGroupNum; //设备支持的最大组数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_EXCEPTIONNUM_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_HANDLEEXCEPTION_V41[] struExceptionHandle;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//DVR异常参数(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_EXCEPTION_V30
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_EXCEPTIONNUM_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_HANDLEEXCEPTION_V30[] struExceptionHandleType;
/*数组0-盘满,1- 硬盘出错,2-网线断,3-局域网内IP 地址冲突, 4-非法访问, 5-输入/输出视频制式不匹配, 6-视频信号异常, 7-录像异常*/
}
//DVR异常参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_EXCEPTION
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_EXCEPTIONNUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_HANDLEEXCEPTION[] struExceptionHandleType;
/*数组0-盘满,1- 硬盘出错,2-网线断,3-局域网内IP 地址冲突,4-非法访问, 5-输入/输出视频制式不匹配, 6-视频信号异常*/
}
//通道状态(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CHANNELSTATE_V30
{
public byte byRecordStatic;//通道是否在录像,0-不录像,1-录像
public byte bySignalStatic;//连接的信号状态,0-正常,1-信号丢失
public byte byHardwareStatic;//通道硬件状态,0-正常,1-异常,例如DSP死掉
public byte byRes1;//保留
public uint dwBitRate;//实际码率
public uint dwLinkNum;//客户端连接的个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_LINK, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPADDR[] struClientIP;//客户端的IP地址
public uint dwIPLinkNum;//如果该通道为IP接入,那么表示IP接入当前的连接数
public byte byExceedMaxLink; // 是否超出了单路6路连接数 0 - 未超出, 1-超出
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 7, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public uint dwChannelNo; //当前的通道号,0xffffffff表示无效
public void Init()
{
struClientIP = new NET_DVR_IPADDR[MAX_LINK];
for (int i = 0; i < MAX_LINK; i++)
{
struClientIP[i].Init();
}
byRes = new byte[12];
}
}
//通道状态
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CHANNELSTATE
{
public byte byRecordStatic;//通道是否在录像,0-不录像,1-录像
public byte bySignalStatic;//连接的信号状态,0-正常,1-信号丢失
public byte byHardwareStatic;//通道硬件状态,0-正常,1-异常,例如DSP死掉
public byte reservedData;//保留
public uint dwBitRate;//实际码率
public uint dwLinkNum;//客户端连接的个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_LINK, ArraySubType = UnmanagedType.U4)]
public uint[] dwClientIP;//客户端的IP地址
}
//硬盘状态
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DISKSTATE
{
public uint dwVolume;//硬盘的容量
public uint dwFreeSpace;//硬盘的剩余空间
public uint dwHardDiskStatic;//硬盘的状态,0-活动,1-休眠,2-不正常
}
//设备工作状态扩展结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_WORKSTATE_V40
{
public uint dwSize; //结构体大小
public uint dwDeviceStatic; //设备的状态,0-正常,1-CPU占用率太高,超过85%,2-硬件错误,例如串口死掉
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DISKNUM_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_DISKSTATE[] struHardDiskStatic; //硬盘状态,一次最多只能获取33个硬盘信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_CHANNELSTATE_V30[] struChanStatic;//通道的状态,从前往后顺序排列
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMIN_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwHasAlarmInStatic; //有报警的报警输入口,按值表示,按下标值顺序排列,值为0xffffffff时当前及后续值无效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMOUT_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwHasAlarmOutStatic; //有报警输出的报警输出口,按值表示,按下标值顺序排列,值为0xffffffff时当前及后续值无效
public uint dwLocalDisplay; //本地显示状态,0-正常,1-不正常
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_AUDIO_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byAudioInChanStatus; //按位表示语音通道的状态 0-未使用,1-使用中,第0位表示第1个语音通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 126, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_GETWORKSTATE_COND
{
public uint dwSize; //结构体长度
public byte byFindHardByCond; /*0-查找全部磁盘(但一次最多只能查找33个),此时dwFindHardStatusNum无效*/
public byte byFindChanByCond; /*0-查找全部通道,此时dwFindChanNum无效*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;//保留
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DISKNUM_V30, ArraySubType = UnmanagedType.U4)]
public uint[] dwFindHardStatus; /*要查找的硬盘号,按值表示,该值采用顺序排列, 遇到0xffffffff则认为后续无效 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwFindChanNo; /*要查找的通道号,按值表示,该值采用顺序排列, 遇到0xffffffff则认为后续无效 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//DVR工作状态(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_WORKSTATE_V30
{
public uint dwDeviceStatic;//设备的状态,0-正常,1-CPU占用率太高,超过85%,2-硬件错误,例如串口死掉
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DISKNUM_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_DISKSTATE[] struHardDiskStatic;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_CHANNELSTATE_V30[] struChanStatic;//通道的状态
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMIN_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byAlarmInStatic;//报警端口的状态,0-没有报警,1-有报警
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMOUT_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byAlarmOutStatic;//报警输出端口的状态,0-没有输出,1-有报警输出
public uint dwLocalDisplay;//本地显示状态,0-正常,1-不正常
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_AUDIO_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byAudioChanStatus;//表示语音通道的状态 0-未使用,1-使用中, 0xff无效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 10, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public void Init()
{
struHardDiskStatic = new NET_DVR_DISKSTATE[MAX_DISKNUM_V30];
struChanStatic = new NET_DVR_CHANNELSTATE_V30[MAX_CHANNUM_V30];
for (int i = 0; i < MAX_CHANNUM_V30; i++)
{
struChanStatic[i].Init();
}
byAlarmInStatic = new byte[MAX_ALARMOUT_V30];
byAlarmOutStatic = new byte[MAX_ALARMOUT_V30];
byAudioChanStatus = new byte[MAX_AUDIO_V30];
byRes = new byte[10];
}
}
//DVR工作状态
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_WORKSTATE
{
public uint dwDeviceStatic;//设备的状态,0-正常,1-CPU占用率太高,超过85%,2-硬件错误,例如串口死掉
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DISKNUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_DISKSTATE[] struHardDiskStatic;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_CHANNELSTATE[] struChanStatic;//通道的状态
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMIN, ArraySubType = UnmanagedType.I1)]
public byte[] byAlarmInStatic;//报警端口的状态,0-没有报警,1-有报警
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMOUT, ArraySubType = UnmanagedType.I1)]
public byte[] byAlarmOutStatic;//报警输出端口的状态,0-没有输出,1-有报警输出
public uint dwLocalDisplay;//本地显示状态,0-正常,1-不正常
public void Init()
{
struHardDiskStatic = new NET_DVR_DISKSTATE[MAX_DISKNUM];
struChanStatic = new NET_DVR_CHANNELSTATE[MAX_CHANNUM];
byAlarmInStatic = new byte[MAX_ALARMIN];
byAlarmOutStatic = new byte[MAX_ALARMOUT];
}
}
//日志信息(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_LOG_V30
{
public NET_DVR_TIME strLogTime;
public uint dwMajorType;//主类型 1-报警; 2-异常; 3-操作; 0xff-全部
public uint dwMinorType;//次类型 0-全部;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NAMELEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPanelUser;//操作面板的用户名
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NAMELEN, ArraySubType = UnmanagedType.I1)]
public byte[] sNetUser;//网络操作的用户名
public NET_DVR_IPADDR struRemoteHostAddr;//远程主机地址
public uint dwParaType;//参数类型
public uint dwChannel;//通道号
public uint dwDiskNumber;//硬盘号
public uint dwAlarmInPort;//报警输入端口
public uint dwAlarmOutPort;//报警输出端口
public uint dwInfoLen;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = LOG_INFO_LEN)]
public string sInfo;
}
//日志信息
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_LOG
{
public NET_DVR_TIME strLogTime;
public uint dwMajorType;//主类型 1-报警; 2-异常; 3-操作; 0xff-全部
public uint dwMinorType;//次类型 0-全部;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NAMELEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPanelUser;//操作面板的用户名
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NAMELEN, ArraySubType = UnmanagedType.I1)]
public byte[] sNetUser;//网络操作的用户名
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sRemoteHostAddr;//远程主机地址
public uint dwParaType;//参数类型
public uint dwChannel;//通道号
public uint dwDiskNumber;//硬盘号
public uint dwAlarmInPort;//报警输入端口
public uint dwAlarmOutPort;//报警输出端口
}
/************************动环报警管理主机日志查找 begin************************************************/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARMHOST_SEARCH_LOG_PARAM
{
public ushort wMajorType; // 主类型
public ushort wMinorType; // 次类型
public NET_DVR_TIME struStartTime; // 开始时间
public NET_DVR_TIME struEndTime; // 结束时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARMHOST_LOG_RET
{
public NET_DVR_TIME struLogTime; // 日志时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName; // 操作用户
public NET_DVR_IPADDR struIPAddr; // 操作IP地址
public ushort wMajorType; // 主类型
public ushort wMinorType; // 次类型
public ushort wParam; // 操作参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 10, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public uint dwInfoLen; // 描述信息长度
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = LOG_INFO_LEN)]
public string sInfo; // 描述信息
}
/*************************动环报警管理主机日志查找 end***********************************************/
//报警输出状态(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARMOUTSTATUS_V30
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMOUT_V30, ArraySubType = UnmanagedType.I1)]
public byte[] Output;
public void Init()
{
Output = new byte[MAX_ALARMOUT_V30];
}
}
//报警输出状态
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARMOUTSTATUS
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] Output;
}
//ATM专用
/****************************ATM(begin)***************************/
public const int NCR = 0;
public const int DIEBOLD = 1;
public const int WINCOR_NIXDORF = 2;
public const int SIEMENS = 3;
public const int OLIVETTI = 4;
public const int FUJITSU = 5;
public const int HITACHI = 6;
public const int SMI = 7;
public const int IBM = 8;
public const int BULL = 9;
public const int YiHua = 10;
public const int LiDe = 11;
public const int GDYT = 12;
public const int Mini_Banl = 13;
public const int GuangLi = 14;
public const int DongXin = 15;
public const int ChenTong = 16;
public const int NanTian = 17;
public const int XiaoXing = 18;
public const int GZYY = 19;
public const int QHTLT = 20;
public const int DRS918 = 21;
public const int KALATEL = 22;
public const int NCR_2 = 23;
public const int NXS = 24;
//交易信息
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_TRADEINFO
{
public ushort m_Year;
public ushort m_Month;
public ushort m_Day;
public ushort m_Hour;
public ushort m_Minute;
public ushort m_Second;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24, ArraySubType = UnmanagedType.I1)]
public byte[] DeviceName;//设备名称
public uint dwChannelNumer;//通道号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] CardNumber;//卡号
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 12)]
public string cTradeType;//交易类型
public uint dwCash;//交易金额
}
/*帧格式*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FRAMETYPECODE
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] code;/* 代码 */
}
//ATM参数
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_FRAMEFORMAT
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sATMIP;/* ATM IP地址 */
public uint dwATMType;/* ATM类型 */
public uint dwInputMode;/* 输入方式 0-网络侦听 1-网络接收 2-串口直接输入 3-串口ATM命令输入*/
public uint dwFrameSignBeginPos;/* 报文标志位的起始位置*/
public uint dwFrameSignLength;/* 报文标志位的长度 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] byFrameSignContent;/* 报文标志位的内容 */
public uint dwCardLengthInfoBeginPos;/* 卡号长度信息的起始位置 */
public uint dwCardLengthInfoLength;/* 卡号长度信息的长度 */
public uint dwCardNumberInfoBeginPos;/* 卡号信息的起始位置 */
public uint dwCardNumberInfoLength;/* 卡号信息的长度 */
public uint dwBusinessTypeBeginPos;/* 交易类型的起始位置 */
public uint dwBusinessTypeLength;/* 交易类型的长度 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 10, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_FRAMETYPECODE[] frameTypeCode;/* 类型 */
}
//SDK_V31 ATM
/*过滤设置*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FILTER
{
public byte byEnable;/*0,不启用;1,启用*/
public byte byMode;/*0,ASCII;1,HEX*/
public byte byFrameBeginPos;// 报文标志位的起始位置
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 1, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byFilterText;/*过滤字符串*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
/*起始标识设置*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IDENTIFICAT
{
public byte byStartMode;/*0,ASCII;1,HEX*/
public byte byEndMode;/*0,ASCII;1,HEX*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public NET_DVR_FRAMETYPECODE struStartCode;/*起始字符*/
public NET_DVR_FRAMETYPECODE struEndCode;/*结束字符*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
}
/*报文信息位置*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PACKAGE_LOCATION
{
public byte byOffsetMode;/*0,token;1,fix*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwOffsetPos;/*mode为1的时候使用*/
public NET_DVR_FRAMETYPECODE struTokenCode;/*标志位*/
public byte byMultiplierValue;/*标志位多少次出现*/
public byte byEternOffset;/*附加的偏移量*/
public byte byCodeMode;/*0,ASCII;1,HEX*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 9, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
/*报文信息长度*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PACKAGE_LENGTH
{
public byte byLengthMode;/*长度类型,0,variable;1,fix;2,get from package(设置卡号长度使用)*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwFixLength;/*mode为1的时候使用*/
public uint dwMaxLength;
public uint dwMinLength;
public byte byEndMode;/*终结符0,ASCII;1,HEX*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public NET_DVR_FRAMETYPECODE struEndCode;/*终结符*/
public uint dwLengthPos;/*lengthMode为2的时候使用,卡号长度在报文中的位置*/
public uint dwLengthLen;/*lengthMode为2的时候使用,卡号长度的长度*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3;
}
/*OSD 叠加的位置*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_OSD_POSITION
{
public byte byPositionMode;/*叠加风格,共2种;0,不显示;1,Custom*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwPos_x;/*x坐标,positionmode为Custom时使用*/
public uint dwPos_y;/*y坐标,positionmode为Custom时使用*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
/*日期显示格式*/
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_DATE_FORMAT
{
public byte byItem1;/*Month,0.mm;1.mmm;2.mmmm*/
public byte byItem2;/*Day,0.dd;*/
public byte byItem3;/*Year,0.yy;1.yyyy*/
public byte byDateForm;/*0~5,3个item的排列组合*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 4)]
public string chSeprator;/*分隔符*/
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 4)]
public string chDisplaySeprator;/*显示分隔符*/
public byte byDisplayForm;/*0~5,3个item的排列组合*///lili mode by lili
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 27, ArraySubType = UnmanagedType.I1)]
public byte[] res;
}
/*时间显示格式*/
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVRT_TIME_FORMAT
{
public byte byTimeForm;/*1. HH MM SS;0. HH MM*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 23, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public byte byHourMode;/*0,12;1,24*/ //lili mode
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 4)]
public string chSeprator;/*报文分隔符,暂时没用*/
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 4)]
public string chDisplaySeprator;/*显示分隔符*/
public byte byDisplayForm;/*0~5,3个item的排列组合*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3;
public byte byDisplayHourMode;/*0,12;1,24*/ //lili mode
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 19, ArraySubType = UnmanagedType.I1)]
public byte[] byRes4;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_OVERLAY_CHANNEL
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byChannel;/*叠加的通道*/
public uint dwDelayTime;/*叠加延时时间*/
public byte byEnableDelayTime;/*是否启用叠加延时,在无退卡命令时启用*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 11, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ATM_PACKAGE_ACTION
{
public NET_DVR_PACKAGE_LOCATION struPackageLocation;
public NET_DVR_OSD_POSITION struOsdPosition;
public NET_DVR_FRAMETYPECODE struActionCode;/*交易类型等对应的码*/
public NET_DVR_FRAMETYPECODE struPreCode;/*叠加字符前的字符*/
public byte byActionCodeMode;/*交易类型等对应的码0,ASCII;1,HEX*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 7, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ATM_PACKAGE_DATE
{
public NET_DVR_PACKAGE_LOCATION struPackageLocation;
public NET_DVR_DATE_FORMAT struDateForm;
public NET_DVR_OSD_POSITION struOsdPosition;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] res;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ATM_PACKAGE_TIME
{
public NET_DVR_PACKAGE_LOCATION location;
public NET_DVRT_TIME_FORMAT struTimeForm;
public NET_DVR_OSD_POSITION struOsdPosition;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ATM_PACKAGE_OTHERS
{
public NET_DVR_PACKAGE_LOCATION struPackageLocation;
public NET_DVR_PACKAGE_LENGTH struPackageLength;
public NET_DVR_OSD_POSITION struOsdPosition;
public NET_DVR_FRAMETYPECODE struPreCode;/*叠加字符前的字符*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] res;
}
//用户自定义协议
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ATM_USER_DEFINE_PROTOCOL
{
public NET_DVR_IDENTIFICAT struIdentification; //报文标志
public NET_DVR_FILTER struFilter; //数据包过滤设置
public NET_DVR_ATM_PACKAGE_OTHERS struCardNoPara; //叠加卡号设置
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ACTION_TYPE, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_ATM_PACKAGE_ACTION[] struTradeActionPara; //叠加交易行为设置 0-9 依次对应InCard OutCard OverLay SetTime GetStatus Query WithDraw Deposit ChanPass Transfer
public NET_DVR_ATM_PACKAGE_OTHERS struAmountPara; //叠加交易金额设置
public NET_DVR_ATM_PACKAGE_OTHERS struSerialNoPara; //叠加交易序号设置
public NET_DVR_OVERLAY_CHANNEL struOverlayChan; //叠加通道设置
public NET_DVR_ATM_PACKAGE_DATE struRes1; //叠加日期,保留
public NET_DVR_ATM_PACKAGE_TIME struRes2; //叠加时间,保留
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 124, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ATM_FRAMEFORMAT_V30
{
public uint dwSize; //结构大小
public byte byEnable; /*是否启用0,不启用;1,启用*/
public byte byInputMode; /**输入方式:0-网络监听、1网络协议、2-串口监听、3-串口协议*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 34, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留字节
public NET_DVR_IPADDR struAtmIp; /*ATM 机IP 网络监听时使用 */
public ushort wAtmPort; /* 网络协议方式时是使用*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
public uint dwAtmType; /*ATM协议类型,从NET_DVR_ATM_PROTOCOL结构中获取,如果类型为自定义时使用用户自定义协议*/
public NET_DVR_ATM_USER_DEFINE_PROTOCOL struAtmUserDefineProtocol; //用户自定义协议,当ATM类型为自定时需要使用该定义
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3;
}
//协议信息数据结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ATM_PROTO_TYPE
{
public uint dwAtmType; //ATM协议类型,同时作为索引序号 ATM 配置中的dwAtmType 自定义时为1025
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = ATM_DESC_LEN)]
public string chDesc; //ATM协议简单描述
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_ATM_PROTO_LIST
{
public uint dwAtmProtoNum;/*协议列表的个数*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ATM_PROTOCOL_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_ATM_PROTO_TYPE[] struAtmProtoType;/*协议列表信息*/
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ATM_PROTOCOL
{
public uint dwSize;
public NET_DVR_ATM_PROTO_LIST struNetListenList; // 网络监听协议描述
public NET_DVR_ATM_PROTO_LIST struSerialListenList; //串口监听协议描述
public NET_DVR_ATM_PROTO_LIST struNetProtoList; //网络协议描述
public NET_DVR_ATM_PROTO_LIST struSerialProtoList; //串口协议描述
public NET_DVR_ATM_PROTO_TYPE struCustomProto; //自定义协议
}
/*****************************DS-6001D/F(begin)***************************/
//DS-6001D Decoder
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DECODERINFO
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byEncoderIP;//解码设备连接的服务器IP
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byEncoderUser;//解码设备连接的服务器的用户名
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byEncoderPasswd;//解码设备连接的服务器的密码
public byte bySendMode;//解码设备连接服务器的连接模式
public byte byEncoderChannel;//解码设备连接的服务器的通道号
public ushort wEncoderPort;//解码设备连接的服务器的端口号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] reservedData;//保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DECODERSTATE
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byEncoderIP;//解码设备连接的服务器IP
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byEncoderUser;//解码设备连接的服务器的用户名
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byEncoderPasswd;//解码设备连接的服务器的密码
public byte byEncoderChannel;//解码设备连接的服务器的通道号
public byte bySendMode;//解码设备连接的服务器的连接模式
public ushort wEncoderPort;//解码设备连接的服务器的端口号
public uint dwConnectState;//解码设备连接服务器的状态
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] reservedData;//保留
}
/*解码设备控制码定义*/
public const int NET_DEC_STARTDEC = 1;
public const int NET_DEC_STOPDEC = 2;
public const int NET_DEC_STOPCYCLE = 3;
public const int NET_DEC_CONTINUECYCLE = 4;
/*连接的通道配置*/
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_DECCHANINFO
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sDVRIP;/* DVR IP地址 */
public ushort wDVRPort;/* 端口号 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName;/* 用户名 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;/* 密码 */
public byte byChannel;/* 通道号 */
public byte byLinkMode;/* 连接模式 */
public byte byLinkType;/* 连接类型 0-主码流 1-子码流 */
}
/*每个解码通道的配置*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DECINFO
{
public byte byPoolChans;/*每路解码通道上的循环通道数量, 最多4通道 0表示没有解码*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DECPOOLNUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_DECCHANINFO[] struchanConInfo;
public byte byEnablePoll;/*是否轮巡 0-否 1-是*/
public byte byPoolTime;/*轮巡时间 0-保留 1-10秒 2-15秒 3-20秒 4-30秒 5-45秒 6-1分钟 7-2分钟 8-5分钟 */
}
/*整个设备解码配置*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DECCFG
{
public uint dwSize;
public uint dwDecChanNum;/*解码通道的数量*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DECNUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_DECINFO[] struDecInfo;
}
//2005-08-01
/* 解码设备透明通道设置 */
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_PORTINFO
{
public uint dwEnableTransPort;/* 是否启动透明通道 0-不启用 1-启用*/
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sDecoderIP;/* DVR IP地址 */
public ushort wDecoderPort;/* 端口号 */
public ushort wDVRTransPort;/* 配置前端DVR是从485/232输出,1表示232串口,2表示485串口 */
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 4)]
public string cReserve;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PORTCFG
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_TRANSPARENTNUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_PORTINFO[] struTransPortInfo;/* 数组0表示232 数组1表示485 */
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct bytime
{
public uint dwChannel;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName;/*请求视频用户名*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;/* 密码 */
public NET_DVR_TIME struStartTime;/* 按时间回放的开始时间 */
public NET_DVR_TIME struStopTime;/* 按时间回放的结束时间 */
}
/* 控制网络文件回放 */
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_PLAYREMOTEFILE
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sDecoderIP;/* DVR IP地址 */
public ushort wDecoderPort;/* 端口号 */
public ushort wLoadMode;/* 回放下载模式 1-按名字 2-按时间 */
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct mode_size
{
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 100, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
/*[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 100, ArraySubType = UnmanagedType.I1)]
public byte[] byFile;/* 回放的文件名 */
/*[FieldOffsetAttribute(0)]
public bytime bytime;
* */
}
}
/*当前设备解码连接状态*/
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_DECCHANSTATUS
{
public uint dwWorkType;/*工作方式:1:轮巡、2:动态连接解码、3:文件回放下载 4:按时间回放下载*/
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sDVRIP;/*连接的设备ip*/
public ushort wDVRPort;/*连接端口号*/
public byte byChannel;/* 通道号 */
public byte byLinkMode;/* 连接模式 */
public uint dwLinkType;/*连接类型 0-主码流 1-子码流*/
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct objectInfo
{
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct userInfo
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName;/*请求视频用户名*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;/* 密码 */
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 52)]
public string cReserve;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct fileInfo
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 100, ArraySubType = UnmanagedType.I1)]
public byte[] fileName;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct timeInfo
{
public uint dwChannel;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName;/*请求视频用户名*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;/* 密码 */
public NET_DVR_TIME struStartTime;/* 按时间回放的开始时间 */
public NET_DVR_TIME struStopTime;/* 按时间回放的结束时间 */
}
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DECSTATUS
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DECNUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_DECCHANSTATUS[] struTransPortInfo;
}
/*****************************DS-6001D/F(end)***************************/
//单字符参数(子结构)
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_SHOWSTRINGINFO
{
public ushort wShowString;// 预览的图象上是否显示字符,0-不显示,1-显示 区域大小704*576,单个字符的大小为32*32
public ushort wStringSize;/* 该行字符的长度,不能大于44个字符 */
public ushort wShowStringTopLeftX;/* 字符显示位置的x坐标 */
public ushort wShowStringTopLeftY;/* 字符名称显示位置的y坐标 */
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 44)]
public string sString;/* 要显示的字符内容 */
}
//叠加字符(9000扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SHOWSTRING_V30
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_STRINGNUM_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SHOWSTRINGINFO[] struStringInfo;/* 要显示的字符内容 */
}
//叠加字符扩展(8条字符)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SHOWSTRING_EX
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_STRINGNUM_EX, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SHOWSTRINGINFO[] struStringInfo;/* 要显示的字符内容 */
}
//叠加字符
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SHOWSTRING
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_STRINGNUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SHOWSTRINGINFO[] struStringInfo;/* 要显示的字符内容 */
}
/****************************DS9000新增结构(begin)******************************/
/*EMAIL参数结构*/
//与原结构体有差异
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct struReceiver
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sName;/* 收件人姓名 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_EMAIL_ADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sAddress;/* 收件人地址 */
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_EMAILCFG_V30
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sAccount;/* 账号*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_EMAIL_PWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;/*密码 */
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct struSender
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sName;/* 发件人姓名 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_EMAIL_ADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sAddress;/* 发件人地址 */
}
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_EMAIL_ADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sSmtpServer;/* smtp服务器 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_EMAIL_ADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPop3Server;/* pop3服务器 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.Struct)]
public struReceiver[] struStringInfo;/* 最多可以设置3个收件人 */
public byte byAttachment;/* 是否带附件 */
public byte bySmtpServerVerify;/* 发送服务器要求身份验证 */
public byte byMailInterval;/* mail interval */
public byte byEnableSSL;//ssl是否启用9000_1.1
public ushort wSmtpPort;//gmail的465,普通的为25
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 74, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留
}
/*DVR实现巡航数据结构*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CRUISE_PARA
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = CRUISE_MAX_PRESET_NUMS, ArraySubType = UnmanagedType.I1)]
public byte[] byPresetNo;/* 预置点号 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = CRUISE_MAX_PRESET_NUMS, ArraySubType = UnmanagedType.I1)]
public byte[] byCruiseSpeed;/* 巡航速度 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = CRUISE_MAX_PRESET_NUMS, ArraySubType = UnmanagedType.U2)]
public ushort[] wDwellTime;/* 停留时间 */
public byte byEnableThisCruise;/* 是否启用 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 15, ArraySubType = UnmanagedType.I1)]
public byte[] res;
}
/****************************DS9000新增结构(end)******************************/
//时间点
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TIMEPOINT
{
public uint dwMonth;//月 0-11表示1-12个月
public uint dwWeekNo;//第几周 0-第1周 1-第2周 2-第3周 3-第4周 4-最后一周
public uint dwWeekDate;//星期几 0-星期日 1-星期一 2-星期二 3-星期三 4-星期四 5-星期五 6-星期六
public uint dwHour;//小时 开始时间0-23 结束时间1-23
public uint dwMin;//分 0-59
}
//夏令时参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ZONEANDDST
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;//保留
public uint dwEnableDST;//是否启用夏时制 0-不启用 1-启用
public byte byDSTBias;//夏令时偏移值,30min, 60min, 90min, 120min, 以分钟计,传递原始数值
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public NET_DVR_TIMEPOINT struBeginPoint;//夏时制开始时间
public NET_DVR_TIMEPOINT struEndPoint;//夏时制停止时间
}
//图片质量
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_JPEGPARA
{
/*注意:当图像压缩分辨率为VGA时,支持0=CIF, 1=QCIF, 2=D1抓图,
当分辨率为3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA,7=XVGA, 8=HD900p
仅支持当前分辨率的抓图*/
public ushort wPicSize;/* 0=CIF, 1=QCIF, 2=D1 3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA*/
public ushort wPicQuality;/* 图片质量系数 0-最好 1-较好 2-一般 */
}
/* aux video out parameter */
//辅助输出参数配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_AUXOUTCFG
{
public uint dwSize;
public uint dwAlarmOutChan;/* 选择报警弹出大报警通道切换时间:1画面的输出通道: 0:主输出/1:辅1/2:辅2/3:辅3/4:辅4 */
public uint dwAlarmChanSwitchTime;/* :1秒 - 10:10秒 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_AUXOUT, ArraySubType = UnmanagedType.U4)]
public uint[] dwAuxSwitchTime;/* 辅助输出切换时间: 0-不切换,1-5s,2-10s,3-20s,4-30s,5-60s,6-120s,7-300s */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_AUXOUT * MAX_WINDOW, ArraySubType = UnmanagedType.I1)]
public byte[] byAuxOrder;/* 辅助输出预览顺序, 0xff表示相应的窗口不预览 */
}
//ntp
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_NTPPARA
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] sNTPServer;/* Domain Name or IP addr of NTP server */
public ushort wInterval;/* adjust time interval(hours) */
public byte byEnableNTP;/* enable NPT client 0-no,1-yes*/
public byte cTimeDifferenceH;/* 与国际标准时间的 小时偏移-12 ... +13 */
public byte cTimeDifferenceM;/* 与国际标准时间的 分钟偏移0, 30, 45*/
public byte res1;
public ushort wNtpPort; /* ntp server port 9000新增 设备默认为123*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] res2;
}
//ddns
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DDNSPARA
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUsername;/* DDNS账号用户名/密码 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] sDomainName; /* 域名 */
public byte byEnableDDNS;/*是否应用 0-否,1-是*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 15, ArraySubType = UnmanagedType.I1)]
public byte[] res;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DDNSPARA_EX
{
public byte byHostIndex;/* 0-Hikvision DNS 1-Dyndns 2-PeanutHull(花生壳)*/
public byte byEnableDDNS;/*是否应用DDNS 0-否,1-是*/
public ushort wDDNSPort;/* DDNS端口号 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUsername;/* DDNS用户名*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;/* DDNS密码 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] sDomainName;/* 设备配备的域名地址 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] sServerName;/* DDNS 对应的服务器地址,可以是IP地址或域名 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//9000扩展
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct struDDNS
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUsername;/* DDNS账号用户名*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;/* 密码 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] sDomainName;/* 设备配备的域名地址 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] sServerName;/* DDNS协议对应的服务器地址,可以是IP地址或域名 */
public ushort wDDNSPort;/* 端口号 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 10, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DDNSPARA_V30
{
public byte byEnableDDNS;
public byte byHostIndex;/* 0-Hikvision DNS(保留) 1-Dyndns 2-PeanutHull(花生壳)*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DDNS_NUMS, ArraySubType = UnmanagedType.Struct)]
public struDDNS[] struDDNS;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//email
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_EMAILPARA
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] sUsername;/* 邮件账号/密码 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] sSmtpServer;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] sPop3Server;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] sMailAddr;/* email */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] sEventMailAddr1;/* 上传报警/异常等的email */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] sEventMailAddr2;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] res;
}
//网络参数配置
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_NETAPPCFG
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sDNSIp; /* DNS服务器地址 */
public NET_DVR_NTPPARA struNtpClientParam;/* NTP参数 */
public NET_DVR_DDNSPARA struDDNSClientParam;/* DDNS参数 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 464, ArraySubType = UnmanagedType.I1)]
public byte[] res;/* 保留 */
}
//nfs结构配置
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_SINGLE_NFS
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sNfsHostIPAddr;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PATHNAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sNfsDirectory;
public void Init()
{
this.sNfsDirectory = new byte[PATHNAME_LEN];
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_NFSCFG
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NFS_DISK, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SINGLE_NFS[] struNfsDiskParam;
public void Init()
{
this.struNfsDiskParam = new NET_DVR_SINGLE_NFS[MAX_NFS_DISK];
for (int i = 0; i < MAX_NFS_DISK; i++)
{
struNfsDiskParam[i].Init();
}
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ISCSI_CFG
{
public uint dwSize; // 结构大小
public ushort wVrmPort; // VRM 监听端口
public byte byEnable; // 是否启用 ISCSI存储
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 69, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
public NET_DVR_IPADDR struVrmAddr; // VRM ip地址 16位
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 64)]
public string chNvtIndexCode; //nvt index Code
}
//巡航点配置(HIK IP快球专用)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CRUISE_POINT
{
public byte PresetNum;//预置点
public byte Dwell;//停留时间
public byte Speed;//速度
public byte Reserve;//保留
public void Init()
{
PresetNum = 0;
Dwell = 0;
Speed = 0;
Reserve = 0;
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CRUISE_RET
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_CRUISE_POINT[] struCruisePoint;//最大支持32个巡航点
public void Init()
{
struCruisePoint = new NET_DVR_CRUISE_POINT[32];
for (int i = 0; i < 32; i++)
{
struCruisePoint[i].Init();
}
}
}
/************************************多路解码器(begin)***************************************/
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_NETCFG_OTHER
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sFirstDNSIP;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sSecondDNSIP;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string sRes;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_MATRIX_DECINFO
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sDVRIP;/* DVR IP地址 */
public ushort wDVRPort;/* 端口号 */
public byte byChannel;/* 通道号 */
public byte byTransProtocol;/* 传输协议类型 0-TCP, 1-UDP */
public byte byTransMode;/* 传输码流模式 0-主码流 1-子码流*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName;/* 监控主机登陆帐号 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;/* 监控主机密码 */
}
//启动/停止动态解码
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_DYNAMIC_DEC
{
public uint dwSize;
public NET_DVR_MATRIX_DECINFO struDecChanInfo;/* 动态解码通道信息 */
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_MATRIX_DEC_CHAN_STATUS
{
public uint dwSize;
public uint dwIsLinked;/* 解码通道状态 0-休眠 1-正在连接 2-已连接 3-正在解码 */
public uint dwStreamCpRate;/* Stream copy rate, X kbits/second */
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 64)]
public string cRes;/* 保留 */
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_MATRIX_DEC_CHAN_INFO
{
public uint dwSize;
public NET_DVR_MATRIX_DECINFO struDecChanInfo;/* 解码通道信息 */
public uint dwDecState;/* 0-动态解码 1-循环解码 2-按时间回放 3-按文件回放 */
public NET_DVR_TIME StartTime;/* 按时间回放开始时间 */
public NET_DVR_TIME StopTime;/* 按时间回放停止时间 */
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 128)]
public string sFileName;/* 按文件回放文件名 */
}
//连接的通道配置 2007-11-05
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_DECCHANINFO
{
public uint dwEnable;/* 是否启用 0-否 1-启用*/
public NET_DVR_MATRIX_DECINFO struDecChanInfo;/* 轮循解码通道信息 */
}
//2007-11-05 新增每个解码通道的配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_LOOP_DECINFO
{
public uint dwSize;
public uint dwPoolTime;/*轮巡时间 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CYCLE_CHAN, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_MATRIX_DECCHANINFO[] struchanConInfo;
}
//2007-12-22
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct TTY_CONFIG
{
public byte baudrate;/* 波特率 */
public byte databits;/* 数据位 */
public byte stopbits;/* 停止位 */
public byte parity;/* 奇偶校验位 */
public byte flowcontrol;/* 流控 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] res;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_MATRIX_TRAN_CHAN_INFO
{
public byte byTranChanEnable;/* 当前透明通道是否打开 0:关闭 1:打开 */
/*
* 多路解码器本地有1个485串口,1个232串口都可以作为透明通道,设备号分配如下:
* 0 RS485
* 1 RS232 Console
*/
public byte byLocalSerialDevice;/* Local serial device */
/*
* 远程串口输出还是两个,一个RS232,一个RS485
* 1表示232串口
* 2表示485串口
*/
public byte byRemoteSerialDevice;/* Remote output serial device */
public byte res1;/* 保留 */
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sRemoteDevIP;/* Remote Device IP */
public ushort wRemoteDevPort;/* Remote Net Communication Port */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] res2;/* 保留 */
public TTY_CONFIG RemoteSerialDevCfg;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_TRAN_CHAN_CONFIG
{
public uint dwSize;
public byte by232IsDualChan;/* 设置哪路232透明通道是全双工的 取值1到MAX_SERIAL_NUM */
public byte by485IsDualChan;/* 设置哪路485透明通道是全双工的 取值1到MAX_SERIAL_NUM */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] res;/* 保留 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_SERIAL_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_MATRIX_TRAN_CHAN_INFO[] struTranInfo;/*同时支持建立MAX_SERIAL_NUM个透明通道*/
}
//2007-12-24 Merry Christmas Eve...
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_MATRIX_DEC_REMOTE_PLAY
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sDVRIP;/* DVR IP地址 */
public ushort wDVRPort;/* 端口号 */
public byte byChannel;/* 通道号 */
public byte byReserve;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName;/* 用户名 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;/* 密码 */
public uint dwPlayMode;/* 0-按文件 1-按时间*/
public NET_DVR_TIME StartTime;
public NET_DVR_TIME StopTime;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 128)]
public string sFileName;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_DEC_REMOTE_PLAY_CONTROL
{
public uint dwSize;
public uint dwPlayCmd;/* 播放命令 见文件播放命令*/
public uint dwCmdParam;/* 播放命令参数 */
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS
{
public uint dwSize;
public uint dwCurMediaFileLen;/* 当前播放的媒体文件长度 */
public uint dwCurMediaFilePosition;/* 当前播放文件的播放位置 */
public uint dwCurMediaFileDuration;/* 当前播放文件的总时间 */
public uint dwCurPlayTime;/* 当前已经播放的时间 */
public uint dwCurMediaFIleFrames;/* 当前播放文件的总帧数 */
public uint dwCurDataType;/* 当前传输的数据类型,19-文件头,20-流数据, 21-播放结束标志 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 72, ArraySubType = UnmanagedType.I1)]
public byte[] res;
}
//2009-4-11 added by likui 多路解码器new
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_PASSIVEMODE
{
public ushort wTransProtol;//传输协议,0-TCP, 1-UDP, 2-MCAST
public ushort wPassivePort;//UDP端口, TCP时默认
// char sMcastIP[16]; //TCP,UDP时无效, MCAST时为多播地址
public NET_DVR_IPADDR struMcastIP;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] res;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_TRAN_CHAN_INFO_V30
{
public byte byTranChanEnable;/* 当前透明通道是否打开 0:关闭 1:打开 */
/*
* 多路解码器本地有1个485串口,1个232串口都可以作为透明通道,设备号分配如下:
* 0 RS485
* 1 RS232 Console
*/
public byte byLocalSerialDevice;/* Local serial device */
/*
* 远程串口输出还是两个,一个RS232,一个RS485
* 1表示232串口
* 2表示485串口
*/
public byte byRemoteSerialDevice;/* Remote output serial device */
public byte byRes1;/* 保留 */
public NET_DVR_IPADDR struRemoteDevIP;/* Remote Device IP */
public ushort wRemoteDevPort;/* Remote Net Communication Port */
public byte byIsEstablished;/* 透明通道建立成功标志,0-没有成功,1-建立成功 */
public byte byRes2;/* 保留 */
public TTY_CONFIG RemoteSerialDevCfg;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byUsername;/* 32BYTES */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byPassword;/* 16BYTES */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30
{
public uint dwSize;
public byte by232IsDualChan;/* 设置哪路232透明通道是全双工的 取值1到MAX_SERIAL_NUM */
public byte by485IsDualChan;/* 设置哪路485透明通道是全双工的 取值1到MAX_SERIAL_NUM */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] vyRes;/* 保留 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_SERIAL_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_MATRIX_TRAN_CHAN_INFO[] struTranInfo;/*同时支持建立MAX_SERIAL_NUM个透明通道*/
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_CHAN_INFO_V30
{
public uint dwEnable;/* 是否启用 0-否 1-启用*/
public NET_DVR_STREAM_MEDIA_SERVER_CFG streamMediaServerCfg;
public NET_DVR_DEV_CHAN_INFO struDevChanInfo;/* 轮循解码通道信息 */
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_LOOP_DECINFO_V30
{
public uint dwSize;
public uint dwPoolTime;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CYCLE_CHAN_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_MATRIX_CHAN_INFO_V30[] struchanConInfo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_MATRIX_DEC_CHAN_INFO_V30
{
public uint dwSize;
public NET_DVR_STREAM_MEDIA_SERVER_CFG streamMediaServerCfg;/*流媒体服务器配置*/
public NET_DVR_DEV_CHAN_INFO struDevChanInfo;/* 解码通道信息 */
public uint dwDecState;/* 0-动态解码 1-循环解码 2-按时间回放 3-按文件回放 */
public NET_DVR_TIME StartTime;/* 按时间回放开始时间 */
public NET_DVR_TIME StopTime;/* 按时间回放停止时间 */
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 128)]
public string sFileName;/* 按文件回放文件名 */
public uint dwGetStreamMode;/*取流模式:1-主动,2-被动*/
public NET_DVR_MATRIX_PASSIVEMODE struPassiveMode;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
public const int MAX_RESOLUTIONNUM = 64; //支持的最大分辨率数目
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_ABILITY
{
public uint dwSize;
public byte byDecNums;
public byte byStartChan;
public byte byVGANums;
public byte byBNCNums;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8 * 12, ArraySubType = UnmanagedType.I1)]
public byte[] byVGAWindowMode;/*VGA支持的窗口模式*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byBNCWindowMode;/*BNC支持的窗口模式*/
public byte byDspNums;
public byte byHDMINums;//HDMI显示通道个数(从25开始)
public byte byDVINums;//DVI显示通道个数(从29开始)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 13, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RESOLUTIONNUM, ArraySubType = UnmanagedType.I1)]
public byte[] bySupportResolution;//按照上面的枚举定义,一个字节代表一个分辨率是//否支持,1:支持,0:不支持
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4 * 8, ArraySubType = UnmanagedType.I1)]
public byte[] byHDMIWindowMode;//HDMI支持的窗口模式
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4 * 8, ArraySubType = UnmanagedType.I1)]
public byte[] byDVIWindowMode;//DVI支持的窗口模式
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//上传logo结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DISP_LOGOCFG
{
public uint dwCorordinateX;//图片显示区域X坐标
public uint dwCorordinateY;//图片显示区域Y坐标
public ushort wPicWidth; //图片宽
public ushort wPicHeight; //图片高
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public byte byFlash;//是否闪烁1-闪烁,0-不闪烁
public byte byTranslucent;//是否半透明1-半透明,0-不半透明
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;//保留
public uint dwLogoSize;//LOGO大小,包括BMP的文件头
}
/*编码类型*/
public const int NET_DVR_ENCODER_UNKOWN = 0;/*未知编码格式*/
public const int NET_DVR_ENCODER_H264 = 1;/*HIK 264*/
public const int NET_DVR_ENCODER_S264 = 2;/*Standard H264*/
public const int NET_DVR_ENCODER_MPEG4 = 3;/*MPEG4*/
public const int NET_DVR_ORIGINALSTREAM = 4;/*Original Stream*/
public const int NET_DVR_PICTURE = 5;//*Picture*/
public const int NET_DVR_ENCODER_MJPEG = 6;
public const int NET_DVR_ECONDER_MPEG2 = 7;
/* 打包格式 */
public const int NET_DVR_STREAM_TYPE_UNKOWN = 0;/*未知打包格式*/
public const int NET_DVR_STREAM_TYPE_HIKPRIVT = 1; /*海康自定义打包格式*/
public const int NET_DVR_STREAM_TYPE_TS = 7;/* TS打包 */
public const int NET_DVR_STREAM_TYPE_PS = 8;/* PS打包 */
public const int NET_DVR_STREAM_TYPE_RTP = 9;/* RTP打包 */
/*解码通道状态*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_CHAN_STATUS
{
public byte byDecodeStatus;/*当前状态:0:未启动,1:启动解码*/
public byte byStreamType;/*码流类型*/
public byte byPacketType;/*打包方式*/
public byte byRecvBufUsage;/*接收缓冲使用率*/
public byte byDecBufUsage;/*解码缓冲使用率*/
public byte byFpsDecV;/*视频解码帧率*/
public byte byFpsDecA;/*音频解码帧率*/
public byte byCpuLoad;/*DSP CPU使用率*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwDecodedV;/*解码的视频帧*/
public uint dwDecodedA;/*解码的音频帧*/
public ushort wImgW;/*解码器当前的图像大小,宽*/
public ushort wImgH; //高
public byte byVideoFormat;/*视频制式:0-NON,NTSC--1,PAL--2*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public uint dwDecChan; /*获取全部解码通道状态时有效,设置时可填0*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3;
}
/*显示通道状态*/
public const int NET_DVR_MAX_DISPREGION = 16; /*每个显示通道最多可以显示的窗口*/
//VGA分辨率,目前能用的是:VGA_THS8200_MODE_XGA_60HZ、VGA_THS8200_MODE_SXGA_60HZ、
//
public enum VGA_MODE
{
/*VGA*/
VGA_NOT_AVALIABLE,
VGA_THS8200_MODE_SVGA_60HZ, //(800*600)
VGA_THS8200_MODE_SVGA_75HZ, //(800*600)
VGA_THS8200_MODE_XGA_60HZ, //(1024*768)
VGA_THS8200_MODE_XGA_75HZ, //(1024*768)
VGA_THS8200_MODE_SXGA_60HZ, //(1280*1024)
VGA_THS8200_MODE_720P_60HZ, //(1280*720)
VGA_THS8200_MODE_1080I_60HZ, //(1920*1080)
VGA_THS8200_MODE_1080P_30HZ, //(1920*1080)
VGA_THS8200_MODE_UXGA_30HZ, //(1600*1200)
/*HDMI*/
HDMI_SII9134_MODE_XGA_60HZ, //(1024*768)
HDMI_SII9134_MODE_SXGA_60HZ, //(1280*1024)
HDMI_SII9134_MODE_SXGA2_60HZ, //(1280*960)
HDMI_SII9134_MODE_720P_60HZ, //(1280*720)
HDMI_SII9134_MODE_720P_50HZ, //(1280*720)
HDMI_SII9134_MODE_1080I_60HZ, //(1920*1080)
HDMI_SII9134_MODE_1080I_50HZ, //(1920*1080)
HDMI_SII9134_MODE_1080P_25HZ, //(1920*1080)
HDMI_SII9134_MODE_1080P_30HZ, //(1920*1080)
HDMI_SII9134_MODE_1080P_50HZ, //(1920*1080)
HDMI_SII9134_MODE_1080P_60HZ, //(1920*1080)
HDMI_SII9134_MODE_UXGA_60HZ, //(1600*1200)
/*DVI*/
DVI_SII9134_MODE_XGA_60HZ, //(1024*768)
DVI_SII9134_MODE_SXGA_60HZ, //(1280*1024)
DVI_SII9134_MODE_SXGA2_60HZ, //(1280*960)
DVI_SII9134_MODE_720P_60HZ, //(1280*720)
DVI_SII9134_MODE_720P_50HZ, //(1280*720)
DVI_SII9134_MODE_1080I_60HZ, //(1920*1080)
DVI_SII9134_MODE_1080I_50HZ, //(1920*1080)
DVI_SII9134_MODE_1080P_25HZ, //(1920*1080)
DVI_SII9134_MODE_1080P_30HZ, //(1920*1080)
DVI_SII9134_MODE_1080P_50HZ, //(1920*1080)
DVI_SII9134_MODE_1080P_60HZ, //(1920*1080)
DVI_SII9134_MODE_UXGA_60HZ, //(1600*1200)
VGA_DECSVR_MODE_SXGA2_60HZ,
HDMI_DECSVR_MODE_1080P_24HZ,
DVI_DECSVR_MODE_1080P_24HZ,
YPbPr_DECSVR_MODE_720P_60HZ,
YPbPr_DECSVR_MODE_1080I_60HZ
}
//低帧率定义
public const int LOW_DEC_FPS_1_2 = 51;
public const int LOW_DEC_FPS_1_4 = 52;
public const int LOW_DEC_FPS_1_8 = 53;
public const int LOW_DEC_FPS_1_16 = 54;
/*视频制式标准*/
public enum VIDEO_STANDARD
{
VS_NON = 0,
VS_NTSC = 1,
VS_PAL = 2,
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct UNION_VIDEOPLATFORM
{
/*各个子窗口对应解码通道所对应的解码子系统的槽位号(对于视频综合平台中解码子系统有效)*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_WINDOWS, ArraySubType = UnmanagedType.I1)]
public byte[] byJoinDecoderId;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct UNION_NOTVIDEOPLATFORM
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VGA_DISP_CHAN_CFG
{
public uint dwSize;
public byte byAudio;/*音频是否开启,0-否,1-是*/
public byte byAudioWindowIdx;/*音频开启子窗口*/
public byte byVgaResolution;/*VGA的分辨率*/
public byte byVedioFormat;/*视频制式,1:NTSC,2:PAL,0-NON*/
public uint dwWindowMode;/*画面模式,从能力集里获取,目前支持1,2,4,9,16*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_WINDOWS, ArraySubType = UnmanagedType.I1)]
public byte[] byJoinDecChan;/*各个子窗口关联的解码通道*/
public byte byEnlargeStatus; /*是否处于放大状态,0:不放大,1:放大*/
public byte byEnlargeSubWindowIndex;//放大的子窗口号
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct struDiff
{
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
public byte byUnionType;/*区分共用体,0-视频综合平台内部解码器显示通道配置,1-其他解码器显示通道配置*/
public byte byScale; /*显示模式,0---真实显示,1---缩放显示( 针对BNC )*/
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DISP_CHAN_STATUS
{
public byte byDispStatus;/*显示状态:0:未显示,1:启动显示*/
public byte byBVGA; /*VGA/BNC*/
public byte byVideoFormat;/*视频制式:1:NTSC,2:PAL,0-NON*/
public byte byWindowMode;/*当前画面模式*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_WINDOWS, ArraySubType = UnmanagedType.I1)]
public byte[] byJoinDecChan;/*各个子窗口关联的解码通道*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NET_DVR_MAX_DISPREGION, ArraySubType = UnmanagedType.I1)]
public byte[] byFpsDisp;/*每个子画面的显示帧率*/
public byte byScreenMode; //屏幕模式0-普通 1-大屏
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 31, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
public const int MAX_DECODECHANNUM = 32;//多路解码器最大解码通道数
public const int MAX_DISPCHANNUM = 24;//多路解码器最大显示通道数
/*解码器设备状态*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DECODER_WORK_STATUS
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DECODECHANNUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_MATRIX_CHAN_STATUS[] struDecChanStatus;/*解码通道状态*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DISPCHANNUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_DISP_CHAN_STATUS[] struDispChanStatus;/*显示通道状态*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ANALOG_ALARMIN, ArraySubType = UnmanagedType.I1)]
public byte[] byAlarmInStatus;/*报警输入状态*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ANALOG_ALARMOUT, ArraySubType = UnmanagedType.I1)]
public byte[] byAalarmOutStatus;/*报警输出状态*/
public byte byAudioInChanStatus;/*语音对讲状态*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 127, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//2009-12-1 增加被动解码播放控制
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PASSIVEDECODE_CONTROL
{
public uint dwSize;
public uint dwPlayCmd; /* 播放命令 见文件播放命令*/
public uint dwCmdParam; /* 播放命令参数 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//Reverse
}
public const int PASSIVE_DEC_PAUSE = 1; /*被动解码暂停(仅文件流有效)*/
public const int PASSIVE_DEC_RESUME = 2; /*恢复被动解码(仅文件流有效)*/
public const int PASSIVE_DEC_FAST = 3; /*快速被动解码(仅文件流有效)*/
public const int PASSIVE_DEC_SLOW = 4; /*慢速被动解码(仅文件流有效)*/
public const int PASSIVE_DEC_NORMAL = 5; /*正常被动解码(仅文件流有效)*/
public const int PASSIVE_DEC_ONEBYONE = 6; /*被动解码单帧播放(保留)*/
public const int PASSIVE_DEC_AUDIO_ON = 7; /*音频开启*/
public const int PASSIVE_DEC_AUDIO_OFF = 8; /*音频关闭*/
public const int PASSIVE_DEC_RESETBUFFER = 9; /*清空缓冲区*/
//2009-12-16 增加控制解码器解码通道缩放
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_DECCHAN_CONTROL
{
public uint dwSize;
public byte byDecChanScaleStatus;/*解码通道显示缩放控制,1表示缩放显示,0表示真实显示*/
public byte byDecodeDelay;//解码延时,0-默认,1-实时性好,2-实时性较好,3-实时性中,流畅性中,4-流畅性较好,5-流畅性好,0xff-自动调整
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 66, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
/************************************多路解码器(end)***************************************/
/************************************视频综合平台(begin)***************************************/
public const int MAX_SUBSYSTEM_NUM = 80; //一个矩阵系统中最多子系统数量
public const int MAX_SUBSYSTEM_NUM_V40 = 120; //一个矩阵系统中最多子系统数量
public const int MAX_SERIALLEN = 36; //最大序列号长度
public const int MAX_LOOPPLANNUM = 16; //最大计划切换组
public const int DECODE_TIMESEGMENT = 4; //计划解码每天时间段数
public const int MAX_DOMAIN_NAME = 64; /* 最大域名长度 */
public const int MAX_DISKNUM_V30 = 33; //9000设备最大硬盘数/* 最多33个硬盘(包括16个内置SATA硬盘、1个eSATA硬盘和16个NFS盘) */
public const int MAX_DAYS = 7; //每周天数
public const int MAX_DISPNUM_V41 = 32;
public const int MAX_WINDOWS_NUM = 12;
public const int MAX_VOUTNUM = 32;
public const int MAX_SUPPORT_RES = 32;
public const int MAX_BIGSCREENNUM = 100;
public const int VIDEOPLATFORM_ABILITY = 0x210; //视频综合平台能力集
public const int MATRIXDECODER_ABILITY_V41 = 0x260; //解码器能力集
public const int NET_DVR_MATRIX_BIGSCREENCFG_GET = 1140;//获取大屏拼接参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SUBSYSTEMINFO
{
public byte bySubSystemType;//子系统类型,1-解码用子系统,2-编码用子系统,0-NULL(此参数只能获取)
public byte byChan;//子系统通道数(此参数只能获取)
public byte byLoginType;//注册类型,1-直连,2-DNS,3-花生壳
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_IPADDR struSubSystemIP;/*IP地址(可修改)*/
public ushort wSubSystemPort;//子系统端口号(可修改)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public NET_DVR_IPADDR struSubSystemIPMask;//子网掩码
public NET_DVR_IPADDR struGatewayIpAddr; /* 网关地址*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName;/* 用户名 (此参数只能获取)*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;/*密码(此参数只能获取)*/
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = MAX_DOMAIN_NAME)]
public string sDomainName;//域名(可修改)
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = MAX_DOMAIN_NAME)]
public string sDnsAddress;/*DNS域名或IP地址*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SERIALNO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sSerialNumber;//序列号(此参数只能获取)
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALLSUBSYSTEMINFO
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_SUBSYSTEM_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SUBSYSTEMINFO[] struSubSystemInfo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LOOPPLAN_SUBCFG
{
public uint dwSize;
public uint dwPoolTime; /*轮询间隔,单位:秒*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CYCLE_CHAN_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_MATRIX_CHAN_INFO_V30[] struChanConInfo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARMMODECFG
{
public uint dwSize;
public byte byAlarmMode;//报警触发类型,1-轮询,2-保持
public ushort wLoopTime;//轮询时间, 单位:秒
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 9, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CODESPLITTERINFO
{
public uint dwSize;
public NET_DVR_IPADDR struIP;/*码分器IP地址*/
public ushort wPort;//码分器端口号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName;/* 用户名 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;/*密码 */
public byte byChan;//码分器485号
public byte by485Port;//485口地址
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 14, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ASSOCIATECFG
{
public byte byAssociateType;//关联类型,1-报警
public ushort wAlarmDelay;//报警延时,0-5秒;1-10秒;2-30秒;3-1分钟;4-2分钟;5-5分钟;6-10分钟;
public byte byAlarmNum;//报警号,具体的值由应用赋,相同的报警赋相同的值
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DYNAMICDECODE
{
public uint dwSize;
public NET_DVR_ASSOCIATECFG struAssociateCfg;//触发动态解码关联结构
public NET_DVR_PU_STREAM_CFG struPuStreamCfg;//动态解码结构
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DECODESCHED
{
public NET_DVR_SCHEDTIME struSchedTime;
public byte byDecodeType;/*0-无,1-轮询解码,2-动态解码*/
public byte byLoopGroup;//轮询组号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public NET_DVR_PU_STREAM_CFG struDynamicDec;//动态解码
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PLANDECODE
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * DECODE_TIMESEGMENT, ArraySubType = UnmanagedType.I1)]
public NET_DVR_DECODESCHED[] struDecodeSched;//周一作为开始,和9000一致
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byres;
}
/************************************视频综合平台(end)***************************************/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VIDEOPLATFORM_ABILITY
{
public uint dwSize;
public byte byCodeSubSystemNums;//编码子系统数量
public byte byDecodeSubSystemNums;//解码子系统数量
[System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = System.Runtime.InteropServices.UnmanagedType.I1)]
public byte[] byWindowMode; /*显示通道支持的窗口模式*/
[System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = System.Runtime.InteropServices.UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SUBSYSTEM_ABILITY
{
/*子系统类型,1-解码用子系统,2-编码用子系统,3-级联输出子系统,4-级联输入子系统,5-码分器子系统,6-报警主机子系统,7-智能子系统,8-V6解码子系统,9-V6子系统,0-NULL(此参数只能获取)*/
public byte bySubSystemType;
public byte byChanNum;//子系统通道数
public byte byStartChan;//子系统起始通道数
public byte bySlotNum;//槽位号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public struDecoderSystemAbility _struAbility;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct struDecoderSystemAbility
{
public byte byVGANums;//VGA显示通道个数(从1开始)
public byte byBNCNums;//BNC显示通道个数(从9开始)
public byte byHDMINums;//HDMI显示通道个数(从25开始)
public byte byDVINums;//DVI显示通道个数(从29开始)
public byte byLayerNums;//大屏拼接中,做主屏时所支持图层数
public byte bySpartan;//畅显功能,0-不支持,1-支持
public byte byDecType; //解码子系统类型,0-普通型,1-增强型(普通型分屏时前4窗口需使用自身资源,增强型无此限制,增强型最多可被其他子系统借16路D1解码资源
//增强型被大屏关联为子屏后资源可被借用,普通型则不能被借用)
public byte byOutputSwitch;//是否支持HDMI/DVI互相切换,0-不支持,1-支持
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 39, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public byte byDecoderType; //解码板类型 0-普通解码板 1-万能解码板
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 152, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct struAbility
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 200, ArraySubType = UnmanagedType.I1)]
// [FieldOffsetAttribute(0)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VIDEOPLATFORM_ABILITY_V40
{
public uint dwSize;
public byte byCodeSubSystemNums;
public byte byDecodeSubSystemNums;//解码子系统数量
public byte bySupportNat;//是否支持NAT,0-不支持,1-支持
public byte byInputSubSystemNums;//级联输入子系统数量
public byte byOutputSubSystemNums;//级联输出子系统数量
public byte byCodeSpitterSubSystemNums;//码分子系统数量
public byte byAlarmHostSubSystemNums;//报警子系统数量
public byte bySupportBigScreenNum;//所支持最多组成大屏的个数
public byte byVCASubSystemNums;//智能子系统数量
public byte byV6SubSystemNums;//V6子系统数量
public byte byV6DecoderSubSystemNums;//V6解码子系统数量
public byte bySupportBigScreenX;/*大屏拼接的模式:m×n*/
public byte bySupportBigScreenY;
public byte bySupportSceneNums;//支持场景模式的个数
public byte byVcaSupportChanMode;//智能支持的通道使用模式,0-使用解码通道,1-使用显示通道及子通道号
public byte bySupportScreenNums;//所支持的大屏的屏幕最大个数
public byte bySupportLayerNums;//所支持的图层数,0xff-无效
public byte byNotSupportPreview;//是否支持预览,1-不支持,0-支持
public byte byNotSupportStorage;//是否支持存储,1-不支持,0-支持
public byte byUploadLogoMode;//上传logo模式,0-上传给解码通道,1-上传给显示通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_SUBSYSTEM_NUM_V40, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SUBSYSTEM_ABILITY[] struSubSystemAbility;
public byte by485Nums;//485串口个数
public byte by232Nums;//232串口个数
public byte bySerieStartChan;//起始通道
public byte byScreenMode;//大屏模式,0-主屏由客户端分配,1-主屏由设备端分配
public byte byDevVersion;//设备版本,0-B10/B11/B12,1-B20
public byte bySupportBaseMapNums;//所支持的底图数,底图号从1开始
public ushort wBaseLengthX;//每个屏大小的基准值,B20使用
public ushort wBaseLengthY;
public byte bySupportPictureTrans; //是否支持图片回显,0-不支持,1-支持
public byte bySupportPreAllocDec; //是否支持智能解码资源预分配,0-不支持,1-支持
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 628, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SINGLESCREENCFG
{
public byte byScreenSeq;//屏幕序号,0xff表示不用此屏,64-T解码器第一个表示主屏
public byte bySubSystemNum;//解码子系统槽位号,解码器此值没有用
public byte byDispNum;//解码子系统上对应显示通道号,64-T解码器中该值表示解码器的显示通道号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 9, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_BIGSCREENCFG
{
public uint dwSize;
public byte byEnable;//大屏拼接使能,0-不使能,1-使能
public byte byModeX;/*大屏拼接模式*/
public byte byModeY;
public byte byMainDecodeSystem;//综合平台的解码板中该值表示主屏槽位号,64-T解码器中该值表示解码通道号
public byte byMainDecoderDispChan;//主屏所用显示通道号,1.1netra版本新增,netra解码器有两个显示通道,都能够作为主屏。64-T中该值无效
public byte byVideoStandard; //大屏每个子屏制式相同 1:NTSC,2:PAL
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwResolution; //大屏每个子屏分辨率相同
//大屏拼接从屏幕信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_BIGSCREENNUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SINGLESCREENCFG[] struFollowSingleScreen;
//起始坐标必须为基准坐标的整数倍
public ushort wBigScreenX; //大屏在电视墙中起始X坐标
public ushort wBigScreenY; //大屏在电视墙中起始Y坐标
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public void Init()
{
byRes1 = new byte[2];
struFollowSingleScreen = new NET_DVR_SINGLESCREENCFG[MAX_BIGSCREENNUM];
byRes2 = new byte[12];
}
}
/************************************视频综合平台(end)***************************************/
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_EMAILCFG
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string sUserName;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string sPassWord;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string sFromName;/* Sender *///字符串中的第一个字符和最后一个字符不能是"@",并且字符串中要有"@"字符
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 48)]
public string sFromAddr;/* Sender address */
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string sToName1;/* Receiver1 */
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string sToName2;/* Receiver2 */
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 48)]
public string sToAddr1;/* Receiver address1 */
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 48)]
public string sToAddr2;/* Receiver address2 */
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string sEmailServer;/* Email server address */
public byte byServerType;/* Email server type: 0-SMTP, 1-POP, 2-IMTP…*/
public byte byUseAuthen;/* Email server authentication method: 1-enable, 0-disable */
public byte byAttachment;/* enable attachment */
public byte byMailinterval;/* mail interval 0-2s, 1-3s, 2-4s. 3-5s*/
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_COMPRESSIONCFG_NEW
{
public uint dwSize;
public NET_DVR_COMPRESSION_INFO_EX struLowCompression;//定时录像
public NET_DVR_COMPRESSION_INFO_EX struEventCompression;//事件触发录像
}
//云台预置点信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PRESET_NAME
{
public uint dwSize;
public ushort wPresetNum;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byName;
public ushort wPanPos;
public ushort wTiltPos;
public ushort wZoomPos;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 58, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//球机位置信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PTZPOS
{
public ushort wAction;//获取时该字段无效
public ushort wPanPos;//水平参数
public ushort wTiltPos;//垂直参数
public ushort wZoomPos;//变倍参数
}
//球机范围信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PTZSCOPE
{
public ushort wPanPosMin;//水平参数min
public ushort wPanPosMax;//水平参数max
public ushort wTiltPosMin;//垂直参数min
public ushort wTiltPosMax;//垂直参数max
public ushort wZoomPosMin;//变倍参数min
public ushort wZoomPosMax;//变倍参数max
}
//rtsp配置 ipcamera专用
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_RTSPCFG
{
public uint dwSize;//长度
public ushort wPort;//rtsp服务器侦听端口
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 54, ArraySubType = UnmanagedType.I1)]
public byte[] byReserve;//预留
}
/********************************接口参数结构(begin)*********************************/
//NET_DVR_Login()参数结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DEVICEINFO
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SERIALNO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sSerialNumber;//序列号
public byte byAlarmInPortNum;//DVR报警输入个数
public byte byAlarmOutPortNum;//DVR报警输出个数
public byte byDiskNum;//DVR硬盘个数
public byte byDVRType;//DVR类型, 1:DVR 2:ATM DVR 3:DVS ......
public byte byChanNum;//DVR 通道个数
public byte byStartChan;//起始通道号,例如DVS-1,DVR - 1
}
//NET_DVR_Login_V30()参数结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DEVICEINFO_V30
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SERIALNO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sSerialNumber; //序列号
public byte byAlarmInPortNum; //报警输入个数
public byte byAlarmOutPortNum; //报警输出个数
public byte byDiskNum; //硬盘个数
public byte byDVRType; //设备类型, 1:DVR 2:ATM DVR 3:DVS ......
public byte byChanNum; //模拟通道个数
public byte byStartChan; //起始通道号,例如DVS-1,DVR - 1
public byte byAudioChanNum; //语音通道数
public byte byIPChanNum; //最大数字通道个数,低位
public byte byZeroChanNum; //零通道编码个数 //2010-01-16
public byte byMainProto; //主码流传输协议类型 0-private, 1-rtsp,2-同时支持private和rtsp
public byte bySubProto; //子码流传输协议类型0-private, 1-rtsp,2-同时支持private和rtsp
public byte bySupport; //能力,位与结果为0表示不支持,1表示支持,
//bySupport & 0x1, 表示是否支持智能搜索
//bySupport & 0x2, 表示是否支持备份
//bySupport & 0x4, 表示是否支持压缩参数能力获取
//bySupport & 0x8, 表示是否支持多网卡
//bySupport & 0x10, 表示支持远程SADP
//bySupport & 0x20, 表示支持Raid卡功能
//bySupport & 0x40, 表示支持IPSAN 目录查找
//bySupport & 0x80, 表示支持rtp over rtsp
public byte bySupport1; // 能力集扩充,位与结果为0表示不支持,1表示支持
//bySupport1 & 0x1, 表示是否支持snmp v30
//bySupport1 & 0x2, 支持区分回放和下载
//bySupport1 & 0x4, 是否支持布防优先级
//bySupport1 & 0x8, 智能设备是否支持布防时间段扩展
//bySupport1 & 0x10, 表示是否支持多磁盘数(超过33个)
//bySupport1 & 0x20, 表示是否支持rtsp over http
//bySupport1 & 0x80, 表示是否支持车牌新报警信息2012-9-28, 且还表示是否支持NET_DVR_IPPARACFG_V40结构体
public byte bySupport2; /*能力,位与结果为0表示不支持,非0表示支持
bySupport2 & 0x1, 表示解码器是否支持通过URL取流解码
bySupport2 & 0x2, 表示支持FTPV40
bySupport2 & 0x4, 表示支持ANR
bySupport2 & 0x8, 表示支持CCD的通道参数配置
bySupport2 & 0x10, 表示支持布防报警回传信息(仅支持抓拍机报警 新老报警结构)
bySupport2 & 0x20, 表示是否支持单独获取设备状态子项
bySupport2 & 0x40, 表示是否是码流加密设备*/
public ushort wDevType; //设备型号
public byte bySupport3; //能力集扩展,位与结果为0表示不支持,1表示支持
//bySupport3 & 0x1, 表示是否多码流
// bySupport3 & 0x4 表示支持按组配置, 具体包含 通道图像参数、报警输入参数、IP报警输入、输出接入参数、
// 用户参数、设备工作状态、JPEG抓图、定时和时间抓图、硬盘盘组管理
//bySupport3 & 0x8为1 表示支持使用TCP预览、UDP预览、多播预览中的"延时预览"字段来请求延时预览(后续都将使用这种方式请求延时预览)。而当bySupport3 & 0x8为0时,将使用 "私有延时预览"协议。
//bySupport3 & 0x10 表示支持"获取报警主机主要状态(V40)"。
//bySupport3 & 0x20 表示是否支持通过DDNS域名解析取流
public byte byMultiStreamProto;//是否支持多码流,按位表示,0-不支持,1-支持,bit1-码流3,bit2-码流4,bit7-主码流,bit-8子码流
public byte byStartDChan; //起始数字通道号,0表示无效
public byte byStartDTalkChan; //起始数字对讲通道号,区别于模拟对讲通道号,0表示无效
public byte byHighDChanNum; //数字通道个数,高位
public byte bySupport4;
public byte byLanguageType;// 支持语种能力,按位表示,每一位0-不支持,1-支持
// byLanguageType 等于0 表示 老设备
// byLanguageType & 0x1表示支持中文
// byLanguageType & 0x2表示支持英文
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 9, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
[StructLayout(LayoutKind.Sequential)]
public struct NET_DVR_DEVICEINFO_V40
{
public NET_DVR_DEVICEINFO_V30 struDeviceV30;
public byte bySupportLock; //设备支持锁定功能,该字段由SDK根据设备返回值来赋值的。bySupportLock为1时,dwSurplusLockTime和byRetryLoginTime有效
public byte byRetryLoginTime; //剩余可尝试登陆的次数,用户名,密码错误时,此参数有效
public byte byPasswordLevel; //admin密码安全等级0-无效,1-默认密码,2-有效密码,3-风险较高的密码。当用户的密码为出厂默认密码(12345)或者风险较高的密码时,上层客户端需要提示用户更改密码。
public byte byProxyType;//代理类型,0-不使用代理, 1-使用socks5代理, 2-使用EHome代理
public uint dwSurplusLockTime; //剩余时间,单位秒,用户锁定时,此参数有效
public byte byCharEncodeType; //字符编码类型
public byte bySupportDev5;//支持v50版本的设备参数获取,设备名称和设备类型名称长度扩展为64字节
public byte bySupport; //能力集扩展,位与结果:0- 不支持,1- 支持
// bySupport & 0x1: 保留
// bySupport & 0x2: 0-不支持变化上报 1-支持变化上报
public byte byLoginMode; //登录模式 0-Private登录 1-ISAPI登录
public int dwOEMCode;
public int iResidualValidity; //该用户密码剩余有效天数,单位:天,返回负值,表示密码已经超期使用,例如“-3表示密码已经超期使用3天”
public byte byResidualValidity; // iResidualValidity字段是否有效,0-无效,1-有效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 243, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
public const int NET_DVR_DEV_ADDRESS_MAX_LEN = 129;
public const int NET_DVR_LOGIN_USERNAME_MAX_LEN = 64;
public const int NET_DVR_LOGIN_PASSWD_MAX_LEN = 64;
public delegate void LOGINRESULTCALLBACK(int lUserID, int dwResult, IntPtr lpDeviceInfo, IntPtr pUser);
[StructLayout(LayoutKind.Sequential)]
public struct NET_DVR_USER_LOGIN_INFO
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NET_DVR_DEV_ADDRESS_MAX_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sDeviceAddress;
public byte byUseTransport;
public ushort wPort;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NET_DVR_LOGIN_USERNAME_MAX_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NET_DVR_LOGIN_PASSWD_MAX_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;
public LOGINRESULTCALLBACK cbLoginResult;
public IntPtr pUser;
public bool bUseAsynLogin;
public byte byProxyType; //0:不使用代理,1:使用标准代理,2:使用EHome代理
public byte byUseUTCTime; //0-不进行转换,默认,1-接口上输入输出全部使用UTC时间,SDK完成UTC时间与设备时区的转换,2-接口上输入输出全部使用平台本地时间,SDK完成平台本地时间与设备时区的转换
public byte byLoginMode; //0-Private, 1-ISAPI, 2-自适应
public byte byHttps; //0-不适用tls,1-使用tls 2-自适应
public int iProxyID; //代理服务器序号,添加代理服务器信息时,相对应的服务器数组下表值
public byte byVerifyMode; //认证方式,0-不认证,1-双向认证,2-单向认证;认证仅在使用TLS的时候生效;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 119, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3;
}
//sdk网络环境枚举变量,用于远程升级
public enum SDK_NETWORK_ENVIRONMENT
{
LOCAL_AREA_NETWORK = 0,
WIDE_AREA_NETWORK,
}
//显示模式
public enum DISPLAY_MODE
{
NORMALMODE = 0,
OVERLAYMODE
}
//发送模式
public enum SEND_MODE
{
PTOPTCPMODE = 0,
PTOPUDPMODE,
MULTIMODE,
RTPMODE,
RESERVEDMODE
}
//抓图模式
public enum CAPTURE_MODE
{
BMP_MODE = 0, //BMP模式
JPEG_MODE = 1 //JPEG模式
}
//实时声音模式
public enum REALSOUND_MODE
{
MONOPOLIZE_MODE = 1,//独占模式
SHARE_MODE = 2 //共享模式
}
public struct NET_DVR_CLIENTINFO
{
public Int32 lChannel;//通道号
public Int32 lLinkMode;//最高位(31)为0表示主码流,为1表示子码流,0-30位表示码流连接方式: 0:TCP方式,1:UDP方式,2:多播方式,3 - RTP方式,4-音视频分开(TCP)
public IntPtr hPlayWnd;//播放窗口的句柄,为NULL表示不播放图象
public string sMultiCastIP;//多播组地址
}
//SDK状态信息(9000新增)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SDKSTATE
{
public uint dwTotalLoginNum;//当前login用户数
public uint dwTotalRealPlayNum;//当前realplay路数
public uint dwTotalPlayBackNum;//当前回放或下载路数
public uint dwTotalAlarmChanNum;//当前建立报警通道路数
public uint dwTotalFormatNum;//当前硬盘格式化路数
public uint dwTotalFileSearchNum;//当前日志或文件搜索路数
public uint dwTotalLogSearchNum;//当前日志或文件搜索路数
public uint dwTotalSerialNum;//当前透明通道路数
public uint dwTotalUpgradeNum;//当前升级路数
public uint dwTotalVoiceComNum;//当前语音转发路数
public uint dwTotalBroadCastNum;//当前语音广播路数
public uint dwTotalListenNum; //当前网络监听路数
public uint dwEmailTestNum; //当前邮件计数路数
public uint dwBackupNum; // 当前文件备份路数
public uint dwTotalInquestUploadNum; //当前审讯上传路数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.U4)]
public uint[] dwRes;
}
//SDK功能支持信息(9000新增)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SDKABL
{
public uint dwMaxLoginNum;//最大login用户数 MAX_LOGIN_USERS
public uint dwMaxRealPlayNum;//最大realplay路数 WATCH_NUM
public uint dwMaxPlayBackNum;//最大回放或下载路数 WATCH_NUM
public uint dwMaxAlarmChanNum;//最大建立报警通道路数 ALARM_NUM
public uint dwMaxFormatNum;//最大硬盘格式化路数 SERVER_NUM
public uint dwMaxFileSearchNum;//最大文件搜索路数 SERVER_NUM
public uint dwMaxLogSearchNum;//最大日志搜索路数 SERVER_NUM
public uint dwMaxSerialNum;//最大透明通道路数 SERVER_NUM
public uint dwMaxUpgradeNum;//最大升级路数 SERVER_NUM
public uint dwMaxVoiceComNum;//最大语音转发路数 SERVER_NUM
public uint dwMaxBroadCastNum;//最大语音广播路数 MAX_CASTNUM
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 10, ArraySubType = UnmanagedType.U4)]
public uint[] dwRes;
}
//报警设备信息
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_ALARMER
{
public byte byUserIDValid;/* userid是否有效 0-无效,1-有效 */
public byte bySerialValid;/* 序列号是否有效 0-无效,1-有效 */
public byte byVersionValid;/* 版本号是否有效 0-无效,1-有效 */
public byte byDeviceNameValid;/* 设备名字是否有效 0-无效,1-有效 */
public byte byMacAddrValid; /* MAC地址是否有效 0-无效,1-有效 */
public byte byLinkPortValid;/* login端口是否有效 0-无效,1-有效 */
public byte byDeviceIPValid;/* 设备IP是否有效 0-无效,1-有效 */
public byte bySocketIPValid;/* socket ip是否有效 0-无效,1-有效 */
public int lUserID; /* NET_DVR_Login()返回值, 布防时有效 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SERIALNO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sSerialNumber;/* 序列号 */
public uint dwDeviceVersion;/* 版本信息 高16位表示主版本,低16位表示次版本*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sDeviceName;/* 设备名字 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MACADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byMacAddr;/* MAC地址 */
public ushort wLinkPort; /* link port */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] sDeviceIP;/* IP地址 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] sSocketIP;/* 报警主动上传时的socket IP地址 */
public byte byIpProtocol; /* Ip协议 0-IPV4, 1-IPV6 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 11, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//硬解码显示区域参数(子结构)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DISPLAY_PARA
{
public int bToScreen;
public int bToVideoOut;
public int nLeft;
public int nTop;
public int nWidth;
public int nHeight;
public int nReserved;
}
//硬解码预览参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CARDINFO
{
public int lChannel;//通道号
public int lLinkMode;//最高位(31)为0表示主码流,为1表示子,0-30位表示码流连接方式:0:TCP方式,1:UDP方式,2:多播方式,3 - RTP方式,4-电话线,5-128k宽带,6-256k宽带,7-384k宽带,8-512k宽带;
[MarshalAsAttribute(UnmanagedType.LPStr)]
public string sMultiCastIP;
public NET_DVR_DISPLAY_PARA struDisplayPara;
}
//录象文件参数
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_FIND_DATA
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 100)]
public string sFileName;//文件名
public NET_DVR_TIME struStartTime;//文件的开始时间
public NET_DVR_TIME struStopTime;//文件的结束时间
public uint dwFileSize;//文件的大小
}
//录象文件参数(9000)
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_FINDDATA_V30
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 100)]
public string sFileName;//文件名
public NET_DVR_TIME struStartTime;//文件的开始时间
public NET_DVR_TIME struStopTime;//文件的结束时间
public uint dwFileSize;//文件的大小
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string sCardNum;
public byte byLocked;//9000设备支持,1表示此文件已经被锁定,0表示正常的文件
public byte byFileType; //文件类型:0-定时录像,1-移动侦测 ,2-报警触发,
//3-报警|移动侦测 4-报警&移动侦测 5-命令触发 6-手动录像,7-震动报警,8-环境报警,9-智能报警,10-PIR报警,11-无线报警,12-呼救报警,14-智能交通事件
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//录象文件参数(cvr)
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_FINDDATA_V40
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 100)]
public string sFileName;//文件名
public NET_DVR_TIME struStartTime;//文件的开始时间
public NET_DVR_TIME struStopTime;//文件的结束时间
public uint dwFileSize;//文件的大小
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string sCardNum;
public byte byLocked;//9000设备支持,1表示此文件已经被锁定,0表示正常的文件
public byte byFileType; //文件类型:0-定时录像,1-移动侦测 ,2-报警触发,
//3-报警|移动侦测 4-报警&移动侦测 5-命令触发 6-手动录像,7-震动报警,8-环境报警,9-智能报警,10-PIR报警,11-无线报警,12-呼救报警,14-智能交通事件
public byte byQuickSearch; //0:普通查询结果,1:快速(日历)查询结果
public byte byRes;
public uint dwFileIndex; //文件索引号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
}
//录象文件参数(带卡号)
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_FINDDATA_CARD
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 100)]
public string sFileName;//文件名
public NET_DVR_TIME struStartTime;//文件的开始时间
public NET_DVR_TIME struStopTime;//文件的结束时间
public uint dwFileSize;//文件的大小
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string sCardNum;
}
//录象文件查找条件结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FILECOND
{
public int lChannel;//通道号
public uint dwFileType;//录象文件类型0xff-全部,0-定时录像,1-移动侦测 ,2-报警触发,
//3-报警|移动侦测 4-报警&移动侦测 5-命令触发 6-手动录像
public uint dwIsLocked;//是否锁定 0-正常文件,1-锁定文件, 0xff表示所有文件
public uint dwUseCardNo;//是否使用卡号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] sCardNumber;//卡号
public NET_DVR_TIME struStartTime;//开始时间
public NET_DVR_TIME struStopTime;//结束时间
}
//云台区域选择放大缩小(HIK 快球专用)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_POINT_FRAME
{
public int xTop;//方框起始点的x坐标
public int yTop;//方框结束点的y坐标
public int xBottom;//方框结束点的x坐标
public int yBottom;//方框结束点的y坐标
public int bCounter;//保留
}
//语音对讲参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_COMPRESSION_AUDIO
{
public byte byAudioEncType;//音频编码类型 0-G722; 1-G711
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 7, ArraySubType = UnmanagedType.I1)]
public byte[] byres;//这里保留音频的压缩参数
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_AP_INFO
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = IW_ESSID_MAX_SIZE)]
public string sSsid;
public uint dwMode;/* 0 mange 模式;1 ad-hoc模式,参见NICMODE */
public uint dwSecurity; /*0 不加密;1 wep加密;2 wpa-psk;3 wpa-Enterprise,参见WIFISECURITY*/
public uint dwChannel;/*1-11表示11个通道*/
public uint dwSignalStrength;/*0-100信号由最弱变为最强*/
public uint dwSpeed;/*速率,单位是0.01mbps*/
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_AP_INFO_LIST
{
public uint dwSize;
public uint dwCount;/*无线AP数量,不超过20*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = WIFI_MAX_AP_COUNT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_AP_INFO[] struApInfo;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_WIFIETHERNET
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sIpAddress;/*IP地址*/
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sIpMask;/*掩码*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MACADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byMACAddr;/*物理地址,只用来显示*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] bRes;
public uint dwEnableDhcp;/*是否启动dhcp 0不启动 1启动*/
public uint dwAutoDns;/*如果启动dhcp是否自动获取dns,0不自动获取 1自动获取;对于有线如果启动dhcp目前自动获取dns*/
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sFirstDns; /*第一个dns域名*/
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sSecondDns;/*第二个dns域名*/
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sGatewayIpAddr;/* 网关地址*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] bRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct UNION_EAP_TTLS
{
public byte byEapolVersion; //EAPOL版本,0-版本1,1-版本2
public byte byAuthType; //内部认证方式,0-PAP,1-MSCHAPV2
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byAnonyIdentity; //匿名身份
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byUserName; //用户名
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byPassword; //密码
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 44, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
} //WPA-enterprise/WPA2-enterpris模式适用
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct UNION_EAP_PEAP
{
public byte byEapolVersion; //EAPOL版本,0-版本1,1-版本2
public byte byAuthType; //内部认证方式,0-GTC,1-MD5,2-MSCHAPV2
public byte byPeapVersion; //PEAP版本,0-版本0,1-版本1
public byte byPeapLabel; //PEAP标签,0-老标签,1-新标签
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byAnonyIdentity; //匿名身份
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byUserName; //用户名
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byPassword; //密码
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 44, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
} //WPA-enterprise/WPA2-enterpris模式适用
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct UNION_EAP_TLS
{
public byte byEapolVersion; //EAPOL版本,0-版本1,1-版本2
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byIdentity; //身份
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byPrivateKeyPswd; //私钥密码
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 76, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct WIFI_AUTH_PARAM
{
[FieldOffsetAttribute(0)]
public UNION_EAP_TTLS EAP_TTLS;//WPA-enterprise/WPA2-enterpris模式适用
[FieldOffsetAttribute(0)]
public UNION_EAP_PEAP EAP_PEAP; //WPA-enterprise/WPA2-enterpris模式适用
[FieldOffsetAttribute(0)]
public UNION_EAP_TLS EAP_TLS;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct UNION_WEP
{
public uint dwAuthentication;/*0 -开放式 1-共享式*/
public uint dwKeyLength;/* 0 -64位;1- 128位;2-152位*/
public uint dwKeyType;/*0 16进制;1 ASCI */
public uint dwActive;/*0 索引:0---3表示用哪一个密钥*/
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = WIFI_WEP_MAX_KEY_COUNT * WIFI_WEP_MAX_KEY_LENGTH)]
public string sKeyInfo;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct UNION_WPA_PSK
{
public uint dwKeyLength;/*8-63个ASCII字符*/
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = WIFI_WPA_PSK_MAX_KEY_LENGTH)]
public string sKeyInfo;
public byte byEncryptType;/*WPA/WPA2模式下加密类型,0-AES, 1-TKIP*/
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct UNION_WPA_WPA2
{
public byte byEncryptType; /*加密类型,0-AES, 1-TKIP*/
public byte byAuthType; //认证类型,0-EAP_TTLS,1-EAP_PEAP,2-EAP_TLS
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public WIFI_AUTH_PARAM auth_param;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_WIFI_CFG_EX
{
public NET_DVR_WIFIETHERNET struEtherNet;/*wifi网口*/
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = IW_ESSID_MAX_SIZE)]
public string sEssid;/*SSID*/
public uint dwMode;/* 0 mange 模式;1 ad-hoc模式,参见*/
public uint dwSecurity;/*0 不加密;1 wep加密;2 wpa-psk; */
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct key
{
[FieldOffsetAttribute(0)]
public UNION_WEP wep;
[FieldOffsetAttribute(0)]
public UNION_WPA_PSK wpa_psk;
[FieldOffsetAttribute(0)]
public UNION_WPA_WPA2 wpa_wpa2;//WPA-enterprise/WPA2-enterpris模式适用
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_WIFI_CFG
{
public uint dwSize;
public NET_DVR_WIFI_CFG_EX struWifiCfg;
}
//wifi连接状态
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_WIFI_CONNECT_STATUS
{
public uint dwSize;
public byte byCurStatus; //1-已连接,2-未连接,3-正在连接
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public uint dwErrorCode; // byCurStatus = 2时有效,1-用户名或密码错误,2-无此路由器,3-未知错误
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 244, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_WIFI_WORKMODE
{
public uint dwSize;
public uint dwNetworkInterfaceMode;/*0 自动切换模式 1 有线模式*/
}
//智能控制信息
public const int MAX_VCA_CHAN = 16;//最大智能通道数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_CTRLINFO
{
public byte byVCAEnable;//是否开启智能
public byte byVCAType;//智能能力类型,VCA_CHAN_ABILITY_TYPE
public byte byStreamWithVCA;//码流中是否带智能信息
public byte byMode;//模式,VCA_CHAN_MODE_TYPE ,atm能力的时候需要配置
public byte byControlType; //控制类型,按位表示,0-否,1-是
// byControlType &1 是否启用抓拍功能
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留,设置为0
}
//智能控制信息结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_CTRLCFG
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_VCA_CHAN, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_CTRLINFO[] struCtrlInfo;//控制信息,数组0对应设备的起始通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//智能设备能力集
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_DEV_ABILITY
{
public uint dwSize;//结构长度
public byte byVCAChanNum;//智能通道个数
public byte byPlateChanNum;//车牌通道个数
public byte byBBaseChanNum;//行为基本版个数
public byte byBAdvanceChanNum;//行为高级版个数
public byte byBFullChanNum;//行为完整版个数
public byte byATMChanNum;//智能ATM个数
public byte byPDCChanNum; //人数统计通道个数
public byte byITSChanNum; //交通事件通道个数
public byte byBPrisonChanNum; //行为监狱版(监舍)通道个数
public byte byFSnapChanNum; //人脸抓拍通道个数
public byte byFSnapRecogChanNum; //人脸抓拍和识别通道个数
public byte byFRetrievalChanNum; //人脸后检索个数
public byte bySupport; //能力,位与结果为0表示不支持,1表示支持
//bySupport & 0x1,表示是否支持智能跟踪 2012-3-22
//bySupport & 0x2,表示是否支持128路取流扩展2012-12-27
public byte byFRecogChanNum; //人脸识别通道个数
public byte byBPPerimeterChanNum; //行为监狱版(周界)通道个数
public byte byTPSChanNum; //交通诱导通道个数
public byte byTFSChanNum; //道路违章取证通道个数
public byte byFSnapBFullChanNum; //人脸抓拍和行为分析通道个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 22, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//行为分析能力类型
public enum VCA_ABILITY_TYPE : uint
{
TRAVERSE_PLANE_ABILITY = 0x01, //穿越警戒面
ENTER_AREA_ABILITY = 0x02, //进入区域
EXIT_AREA_ABILITY = 0x04, //离开区域
INTRUSION_ABILITY = 0x08, //入侵
LOITER_ABILITY = 0x10, //徘徊
LEFT_TAKE_ABILITY = 0x20, //物品遗留拿取
PARKING_ABILITY = 0x40, //停车
RUN_ABILITY = 0x80, //快速移动
HIGH_DENSITY_ABILITY = 0x100, //人员聚集
LF_TRACK_ABILITY = 0x200, //球机跟踪
VIOLENT_MOTION_ABILITY = 0x400, //剧烈运动检测
REACH_HIGHT_ABILITY = 0x800, //攀高检测
GET_UP_ABILITY = 0x1000, //起身检测
LEFT_ABILITY = 0x2000, //物品遗留
TAKE_ABILITY = 0x4000, //物品拿取
LEAVE_POSITION = 0x8000, //离岗
TRAIL_ABILITY = 0x10000, //尾随
KEY_PERSON_GET_UP_ABILITY = 0x20000, //重点人员起身检测
FALL_DOWN_ABILITY = 0x80000, //倒地
AUDIO_ABNORMAL_ABILITY = 0x100000, //声强突变
ADV_REACH_HEIGHT_ABILITY = 0x200000, //折线攀高
TOILET_TARRY_ABILITY = 0x400000, //如厕超时
YARD_TARRY_ABILITY = 0x800000, //放风场滞留
ADV_TRAVERSE_PLANE_ABILITY = 0x1000000, //折线警戒面
HUMAN_ENTER_ABILITY = 0x10000000, //人靠近ATM ,只在ATM_PANEL模式下支持
OVER_TIME_ABILITY = 0x20000000, //操作超时,只在ATM_PANEL模式下支持
STICK_UP_ABILITY = 0x40000000, //贴纸条
INSTALL_SCANNER_ABILITY = 0x80000000 //安装读卡器
}
//智能通道类型
public enum VCA_CHAN_ABILITY_TYPE
{
VCA_BEHAVIOR_BASE = 1, //行为分析基本版
VCA_BEHAVIOR_ADVANCE = 2, //行为分析高级版
VCA_BEHAVIOR_FULL = 3, //行为分析完整版
VCA_PLATE = 4, //车牌能力
VCA_ATM = 5, //ATM能力
VCA_PDC = 6, //人流量统计
VCA_ITS = 7, //智能 交通事件
VCA_BEHAVIOR_PRISON = 8, //行为分析监狱版(监舍)
VCA_FACE_SNAP = 9, //人脸抓拍能力
VCA_FACE_SNAPRECOG = 10, //人脸抓拍和识别能力
VCA_FACE_RETRIEVAL = 11, //人脸后检索能力
VCA_FACE_RECOG = 12, //人脸识别能力
VCA_BEHAVIOR_PRISON_PERIMETER = 13, // 行为分析监狱版 (周界)
VCA_TPS = 14, //交通诱导
VCA_TFS = 15, //道路违章取证
VCA_BEHAVIOR_FACESNAP = 16 //人脸抓拍和行为分析能力
}
//智能ATM模式类型(ATM能力特有)
public enum VCA_CHAN_MODE_TYPE
{
VCA_ATM_PANEL = 0,//ATM面板
VCA_ATM_SURROUND = 1,//ATM环境
VCA_ATM_FACE = 2 //ATM人脸
}
public enum TFS_CHAN_MODE_TYPE
{
TFS_CITYROAD = 0, //TFS 城市道路
TFS_FREEWAY = 1 //TFS 高速道路
}
//行为分析场景模式
public enum BEHAVIOR_SCENE_MODE_TYPE
{
BEHAVIOR_SCENE_DEFAULT = 0, //系统默认
BEHAVIOR_SCENE_WALL = 1, //围墙
BEHAVIOR_SCENE_INDOOR = 2 //室内
}
//通道能力输入参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_CHAN_IN_PARAM
{
public byte byVCAType;//VCA_CHAN_ABILITY_TYPE枚举值
public byte byMode;//模式,VCA_CHAN_MODE_TYPE ,atm能力的时候需要配置
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留,设置为0
}
//行为能力集结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_BEHAVIOR_ABILITY
{
public uint dwSize;//结构长度
public uint dwAbilityType;//支持的能力类型,按位表示,见VCA_ABILITY_TYPE定义
public byte byMaxRuleNum;//最大规则数
public byte byMaxTargetNum;//最大目标数
public byte bySupport; // 支持的功能类型 按位表示
// bySupport & 0x01 支持标定功能
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 9, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留,设置为0
}
// 交通能力集结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ITS_ABILITY
{
public uint dwSize; // 结构体大小
public uint dwAbilityType; // 支持的能力列表 参照ITS_ABILITY_TYPE
public byte byMaxRuleNum; //最大规则数
public byte byMaxTargetNum; //最大目标数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 10, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留
}
/***********************************end*******************************************/
/************************************智能参数结构*********************************/
//智能共用结构
//坐标值归一化,浮点数值为当前画面的百分比大小, 精度为小数点后三位
//点坐标结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_POINT
{
public float fX;// X轴坐标, 0.001~1
public float fY;//Y轴坐标, 0.001~1
}
//区域框结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_RECT
{
public float fX;//边界框左上角点的X轴坐标, 0.001~1
public float fY;//边界框左上角点的Y轴坐标, 0.001~1
public float fWidth;//边界框的宽度, 0.001~1
public float fHeight;//边界框的高度, 0.001~1
}
//行为分析事件类型
public enum VCA_EVENT_TYPE : uint
{
VCA_TRAVERSE_PLANE = 0x1, //穿越警戒面
VCA_ENTER_AREA = 0x2, //目标进入区域,支持区域规则
VCA_EXIT_AREA = 0x4, //目标离开区域,支持区域规则
VCA_INTRUSION = 0x8, //周界入侵,支持区域规则
VCA_LOITER = 0x10, //徘徊,支持区域规则
VCA_LEFT_TAKE = 0x20, //物品遗留拿取,支持区域规则
VCA_PARKING = 0x40, //停车,支持区域规则
VCA_RUN = 0x80, //快速移动,支持区域规则
VCA_HIGH_DENSITY = 0x100, //区域内人员聚集,支持区域规则
VCA_VIOLENT_MOTION = 0x200, //剧烈运动检测
VCA_REACH_HIGHT = 0x400, //攀高检测
VCA_GET_UP = 0x800, //起身检测
VCA_LEFT = 0x1000, //物品遗留
VCA_TAKE = 0x2000, //物品拿取
VCA_LEAVE_POSITION = 0x4000, //离岗
VCA_TRAIL = 0x8000, //尾随
VCA_KEY_PERSON_GET_UP = 0x10000, //重点人员起身检测
VCA_FALL_DOWN = 0x80000, //倒地检测
VCA_AUDIO_ABNORMAL = 0x100000, //声强突变检测
VCA_ADV_REACH_HEIGHT = 0x200000, //折线攀高
VCA_TOILET_TARRY = 0x400000, //如厕超时
VCA_YARD_TARRY = 0x800000, //放风场滞留
VCA_ADV_TRAVERSE_PLANE = 0x1000000, //折线警戒面
VCA_HUMAN_ENTER = 0x10000000, //人靠近ATM 只在ATM_PANEL模式下支持
VCA_OVER_TIME = 0x20000000, //操作超时 只在ATM_PANEL模式下支持
VCA_STICK_UP = 0x40000000, //贴纸条,支持区域规则
VCA_INSTALL_SCANNER = 0x80000000 //安装读卡器,支持区域规则
}
//行为分析事件类型扩展
public enum VCA_RULE_EVENT_TYPE_EX : ushort
{
ENUM_VCA_EVENT_TRAVERSE_PLANE = 1, //穿越警戒面
ENUM_VCA_EVENT_ENTER_AREA = 2, //目标进入区域,支持区域规则
ENUM_VCA_EVENT_EXIT_AREA = 3, //目标离开区域,支持区域规则
ENUM_VCA_EVENT_INTRUSION = 4, //周界入侵,支持区域规则
ENUM_VCA_EVENT_LOITER = 5, //徘徊,支持区域规则
ENUM_VCA_EVENT_LEFT_TAKE = 6, //物品遗留拿取,支持区域规则
ENUM_VCA_EVENT_PARKING = 7, //停车,支持区域规则
ENUM_VCA_EVENT_RUN = 8, //快速移动,支持区域规则
ENUM_VCA_EVENT_HIGH_DENSITY = 9, //区域内人员聚集,支持区域规则
ENUM_VCA_EVENT_VIOLENT_MOTION = 10, //剧烈运动检测
ENUM_VCA_EVENT_REACH_HIGHT = 11, //攀高检测
ENUM_VCA_EVENT_GET_UP = 12, //起身检测
ENUM_VCA_EVENT_LEFT = 13, //物品遗留
ENUM_VCA_EVENT_TAKE = 14, //物品拿取
ENUM_VCA_EVENT_LEAVE_POSITION = 15, //离岗
ENUM_VCA_EVENT_TRAIL = 16, //尾随
ENUM_VCA_EVENT_KEY_PERSON_GET_UP = 17, //重点人员起身检测
ENUM_VCA_EVENT_FALL_DOWN = 20, //倒地检测
ENUM_VCA_EVENT_AUDIO_ABNORMAL = 21, //声强突变检测
ENUM_VCA_EVENT_ADV_REACH_HEIGHT = 22, //折线攀高
ENUM_VCA_EVENT_TOILET_TARRY = 23, //如厕超时
ENUM_VCA_EVENT_YARD_TARRY = 24, //放风场滞留
ENUM_VCA_EVENT_ADV_TRAVERSE_PLANE = 25, //折线警戒面
ENUM_VCA_EVENT_HUMAN_ENTER = 29, //人靠近ATM,只在ATM_PANEL模式下支持
ENUM_VCA_EVENT_OVER_TIME = 30, //操作超时,只在ATM_PANEL模式下支持
ENUM_VCA_EVENT_STICK_UP = 31, //贴纸条,支持区域规则
ENUM_VCA_EVENT_INSTALL_SCANNER = 32 //安装读卡器,支持区域规则
}
//警戒面穿越方向类型
public enum VCA_CROSS_DIRECTION
{
VCA_BOTH_DIRECTION,// 双向
VCA_LEFT_GO_RIGHT,// 由左至右
VCA_RIGHT_GO_LEFT,// 由右至左
}
//线结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_LINE
{
public NET_VCA_POINT struStart;//起点
public NET_VCA_POINT struEnd; //终点
// public void init()
// {
// struStart = new NET_VCA_POINT();
// struEnd = new NET_VCA_POINT();
// }
}
//该结构会导致xaml界面出不来!!!!!!!!!??问题暂时还没有找到
//暂时屏蔽结构先
//多边型结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_POLYGON
{
/// DWORD->unsigned int
public uint dwPointNum;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = VCA_MAX_POLYGON_POINT_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_POINT[] struPos;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_TRAVERSE_PLANE
{
public NET_VCA_LINE struPlaneBottom;//警戒面底边
public uint dwCrossDirection;//穿越方向: 0-双向,1-从左到右,2-从右到左
public byte bySensitivity;//灵敏度,取值范围:[1,5] (对于Smart IPC,取值范围为[1,100])
public byte byPlaneHeight;//警戒面高度
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 38, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
// public void init()
// {
// struPlaneBottom = new NET_VCA_LINE();
// struPlaneBottom.init();
// byRes2 = new byte[38];
// }
}
//进入/离开区域参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_AREA
{
public NET_VCA_POLYGON struRegion;//区域范围
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//根据报警延迟时间来标识报警中带图片,报警间隔和IO报警一致,1秒发送一个。
//入侵参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_INTRUSION
{
public NET_VCA_POLYGON struRegion;//区域范围
public ushort wDuration;//报警延迟时间: 1-120秒,建议5秒,判断是有效报警的时间
public byte bySensitivity; //灵敏度参数,范围[1-100]
public byte byRate; //占比:区域内所有未报警目标尺寸目标占区域面积的比重,归一化为-;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//徘徊参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_LOITER
{
public NET_VCA_POLYGON struRegion;//区域范围
public ushort wDuration;//触发徘徊报警的持续时间:1-120秒,建议10秒
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//丢包/捡包参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_TAKE_LEFT
{
public NET_VCA_POLYGON struRegion;//区域范围
public ushort wDuration;//触发丢包/捡包报警的持续时间:1-120秒,建议10秒
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//停车参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_PARKING
{
public NET_VCA_POLYGON struRegion;//区域范围
public ushort wDuration;//触发停车报警持续时间:1-120秒,建议10秒
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//奔跑参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_RUN
{
public NET_VCA_POLYGON struRegion;//区域范围
public float fRunDistance;//人奔跑最大距离, 范围: [0.1, 1.00]
public byte byRes1; // 保留字节
public byte byMode; // 0 像素模式 1 实际模式
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//人员聚集参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_HIGH_DENSITY
{
public NET_VCA_POLYGON struRegion;//区域范围
public float fDensity;//密度比率, 范围: [0.1, 1.0]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public ushort wDuration; // 触发人员聚集参数报警阈值 20-360s
}
//剧烈运动参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_VIOLENT_MOTION
{
public NET_VCA_POLYGON struRegion;//区域范围
public ushort wDuration; //触发剧烈运动报警阈值:1-50秒
public byte bySensitivity; //灵敏度参数,范围[1,5]
public byte byMode; //0-纯视频模式,1-音视频联合模式,2-纯音频模式
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//攀高参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_REACH_HIGHT
{
public NET_VCA_LINE struVcaLine; //攀高警戒面
public ushort wDuration; //触发攀高报警阈值:1-120秒
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
//起床参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_GET_UP
{
public NET_VCA_POLYGON struRegion; //区域范围
public ushort wDuration; //触发起床报警阈值1-100 秒
public byte byMode; //起身检测模式,0-大床通铺模式,1-高低铺模式,2-大床通铺坐立起身模式
public byte bySensitivity; //灵敏度参数,范围[1,10]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留字节
}
//物品遗留
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_LEFT
{
public NET_VCA_POLYGON struRegion; // 区域范围
public ushort wDuration; // 触发物品遗留报警阈值 10-100秒
public byte bySensitivity; // 灵敏度参数,范围[1,5]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
// 物品拿取
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_TAKE
{
public NET_VCA_POLYGON struRegion; // 区域范围
public ushort wDuration; // 触发物品拿取报警阈值10-100秒
public byte bySensitivity; // 灵敏度参数,范围[1,5]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_OVER_TIME
{
public NET_VCA_POLYGON struRegion; // 区域范围
public ushort wDuration; // 操作报警时间阈值 4s-60000s
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_HUMAN_ENTER
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 23, ArraySubType = UnmanagedType.U4)]
public uint[] dwRes; //保留字节
}
//贴纸条参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_STICK_UP
{
public NET_VCA_POLYGON struRegion;//区域范围
public ushort wDuration;//报警持续时间:10-60秒,建议10秒
public byte bySensitivity;//灵敏度参数,范围[1,5]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//读卡器参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_SCANNER
{
public NET_VCA_POLYGON struRegion;//区域范围
public ushort wDuration;//读卡持续时间:10-60秒
public byte bySensitivity;//灵敏度参数,范围[1,5]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//离岗事件
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_LEAVE_POSITION
{
public NET_VCA_POLYGON struRegion; //区域范围
public ushort wLeaveDelay; //无人报警时间,单位:s,取值1-1800
public ushort wStaticDelay; //睡觉报警时间,单位:s,取值1-1800
public byte byMode; //模式,0-离岗事件,1-睡岗事件,2-离岗睡岗事件
public byte byPersonType; //值岗人数类型,0-单人值岗,1-双人值岗
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//尾随参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_TRAIL
{
public NET_VCA_POLYGON struRegion;//区域范围
public ushort wRes; /* 保留 */
public byte bySensitivity; /* 灵敏度参数,范围[1,5] */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//倒地参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_FALL_DOWN
{
public NET_VCA_POLYGON struRegion;//区域范围
public ushort wDuration; /* 触发事件阈值 1-60s*/
public byte bySensitivity; /* 灵敏度参数,范围[1,5] */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//声强突变参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_AUDIO_ABNORMAL
{
public ushort wDecibel; //声音强度
public byte bySensitivity; //灵敏度参数,范围[1,5]
public byte byAudioMode; //声音检测模式,0-灵敏度检测,1-分贝阈值检测,2-灵敏度与分贝阈值检测
public byte byEnable; //使能,是否开启
public byte byThreshold; //声音阈值[0,100]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 54, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_AUDIO_EXCEPTION
{
public uint dwSize;
public byte byEnableAudioInException; //使能,是否开启
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_VCA_AUDIO_ABNORMAL struAudioAbnormal;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmSched; //布防时间
public NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //异常处理方式
public uint dwMaxRelRecordChanNum; //报警触发的录象通道 数(只读)最大支持数量
public uint dwRelRecordChanNum; //报警触发的录象通道 数 实际支持的数量
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.U4)]
public uint[] byRelRecordChan;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_TOILET_TARRY
{
public NET_VCA_POLYGON struRegion;//区域范围
public ushort wDelay; //如厕超时时间[1,3600],单位:秒
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_YARD_TARRY
{
public NET_VCA_POLYGON struRegion;//区域范围
public ushort wDelay; //放风场滞留时间[1,120],单位:秒
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_ADV_REACH_HEIGHT
{
public NET_VCA_POLYGON struRegion; //攀高折线
public uint dwCrossDirection; //跨越方向(详见VCA_CROSS_DIRECTION): 0-双向,1-从左到右2-从右到左
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_ADV_TRAVERSE_PLANE
{
public NET_VCA_POLYGON struRegion; //警戒面折线
public uint dwCrossDirection; //跨越方向(详见VCA_CROSS_DIRECTION): 0-双向,1-从左到右2-从右到左
public byte bySensitivity; //灵敏度参数,范围[1,5]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留字节
}
//警戒事件参数
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct NET_VCA_EVENT_UNION
{
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 23, ArraySubType = UnmanagedType.U4)]
public uint[] uLen;//参数
//[FieldOffsetAttribute(0)]
//public NET_VCA_TRAVERSE_PLANE struTraversePlane;//穿越警戒面参数
//[FieldOffsetAttribute(0)]
//public NET_VCA_AREA struArea;//进入/离开区域参数
//[FieldOffsetAttribute(0)]
//public NET_VCA_INTRUSION struIntrusion;//入侵参数
//[FieldOffsetAttribute(0)]
//public NET_VCA_LOITER struLoiter;//徘徊参数
//[FieldOffsetAttribute(0)]
//public NET_VCA_TAKE_LEFT struTakeTeft;//丢包/捡包参数
//[FieldOffsetAttribute(0)]
//public NET_VCA_PARKING struParking;//停车参数
//[FieldOffsetAttribute(0)]
//public NET_VCA_RUN struRun;//奔跑参数
//[FieldOffsetAttribute(0)]
//public NET_VCA_HIGH_DENSITY struHighDensity;//人员聚集参数
//[FieldOffsetAttribute(0)]
//public NET_VCA_VIOLENT_MOTION struViolentMotion; //剧烈运动
//[FieldOffsetAttribute(0)]
//public NET_VCA_REACH_HIGHT struReachHight; //攀高
//[FieldOffsetAttribute(0)]
//public NET_VCA_GET_UP struGetUp; //起床
//[FieldOffsetAttribute(0)]
//public NET_VCA_LEFT struLeft; //物品遗留
//[FieldOffsetAttribute(0)]
//public NET_VCA_TAKE struTake; // 物品拿取
//[FieldOffsetAttribute(0)]
//public NET_VCA_HUMAN_ENTER struHumanEnter; //人员进入
//[FieldOffsetAttribute(0)]
//public NET_VCA_OVER_TIME struOvertime; //操作超时
//[FieldOffsetAttribute(0)]
//public NET_VCA_STICK_UP struStickUp;//贴纸条
//[FieldOffsetAttribute(0)]
//public NET_VCA_SCANNER struScanner;//读卡器参数
//[FieldOffsetAttribute(0)]
//public NET_VCA_LEAVE_POSITION struLeavePos; //离岗参数
//[FieldOffsetAttribute(0)]
//public NET_VCA_TRAIL struTrail; //尾随参数
//[FieldOffsetAttribute(0)]
//public NET_VCA_FALL_DOWN struFallDown; //倒地参数
//[FieldOffsetAttribute(0)]
//public NET_VCA_AUDIO_ABNORMAL struAudioAbnormal; //声强突变
//[FieldOffsetAttribute(0)]
//public NET_VCA_ADV_REACH_HEIGHT struReachHeight; //折线攀高参数
//[FieldOffsetAttribute(0)]
//public NET_VCA_TOILET_TARRY struToiletTarry; //如厕超时参数
//[FieldOffsetAttribute(0)]
//public NET_VCA_YARD_TARRY struYardTarry; //放风场滞留参数
//[FieldOffsetAttribute(0)]
//public NET_VCA_ADV_TRAVERSE_PLANE struAdvTraversePlane;//折线警戒面参数
}
// 尺寸过滤器类型
public enum SIZE_FILTER_MODE
{
IMAGE_PIX_MODE,//根据像素大小设置
REAL_WORLD_MODE,//根据实际大小设置
DEFAULT_MODE // 默认模式
}
//尺寸过滤器
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_SIZE_FILTER
{
public byte byActive;//是否激活尺寸过滤器 0-否 非0-是
public byte byMode;//过滤器模式SIZE_FILTER_MODE
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留,置0
public NET_VCA_RECT struMiniRect;//最小目标框,全0表示不设置
public NET_VCA_RECT struMaxRect;//最大目标框,全0表示不设置
}
//警戒规则结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_ONE_RULE
{
public byte byActive;//是否激活规则,0-否,非0-是
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 7, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留,设置为0字段
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRuleName;//规则名称
public VCA_EVENT_TYPE dwEventType;//行为分析事件类型
public NET_VCA_EVENT_UNION uEventParam;//行为分析事件参数
public NET_VCA_SIZE_FILTER struSizeFilter;//尺寸过滤器
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_2, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
public NET_DVR_HANDLEEXCEPTION_V30 struHandleType;//处理方式
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byRelRecordChan;//报警触发的录象通道,为1表示触发该通道
}
//行为分析配置结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_RULECFG
{
public uint dwSize;//结构长度
public byte byPicProType;//报警时图片处理方式 0-不处理 非0-上传
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public NET_DVR_JPEGPARA struPictureParam;//图片规格结构
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RULE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_ONE_RULE[] struRule;//规则数组
}
//尺寸过滤策略
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_FILTER_STRATEGY
{
public byte byStrategy; //尺寸过滤策略 0 - 不启用 1-高度和宽度过滤,2-面积过滤
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 11, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//规则触发参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_RULE_TRIGGER_PARAM
{
public byte byTriggerMode; //规则的触发方式,0- 不启用,1- 轨迹点 2- 目标面积
public byte byTriggerPoint; //触发点,触发方式为轨迹点时有效 0- 中,1-上,2-下
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public float fTriggerArea; //触发目标面积百分比 [0,100],触发方式为目标面积时有效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//警戒规则结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_ONE_RULE_V41
{
public byte byActive; //是否激活规则,0-否,非0-是
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留,设置为0字段
public ushort wEventTypeEx; //行为事件类型扩展,用于代替字段dwEventType,参考VCA_RULE_EVENT_TYPE_EX
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRuleName; //规则名称
public uint dwEventType; //行为事件类型,保留是为了兼容,后续建议使用wEventTypeEx获取事件类型
public NET_VCA_EVENT_UNION uEventParam; //行为分析事件参数
public NET_VCA_SIZE_FILTER struSizeFilter; //尺寸过滤器
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
public NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //处理方式
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byRelRecordChan; //报警触发的录象通道,为1表示触发该通道
public ushort wAlarmDelay; //智能报警延时,0-5s,1-10,2-30s,3-60s,4-120s,5-300s,6-600s
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
public NET_VCA_FILTER_STRATEGY struFilterStrategy; //尺寸过滤策略
public NET_VCA_RULE_TRIGGER_PARAM struTriggerParam; //规则触发参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//行为分析配置结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_RULECFG_V41
{
public uint dwSize; //结构长度
public byte byPicProType; //报警时图片处理方式 0-不处理 非0-上传
public byte byUpLastAlarm; //2011-04-06 是否先上传最近一次的报警
public byte byPicRecordEnable; /*2012-3-1是否启用图片存储, 0-不启用, 1-启用*/
public byte byRes1;
public NET_DVR_JPEGPARA struPictureParam; //图片规格结构
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RULE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_ONE_RULE_V41[] struRule; //规则数组
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//简化目标结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_TARGET_INFO
{
public uint dwID;//目标ID ,人员密度过高报警时为0
public NET_VCA_RECT struRect; //目标边界框
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留
}
//简化的规则信息, 包含规则的基本信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_RULE_INFO
{
public byte byRuleID;//规则ID,0-7
public byte byRes;//保留
public ushort wEventTypeEx; //行为事件类型扩展,用于代替字段dwEventType,参考VCA_RULE_EVENT_TYPE_EX
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRuleName;//规则名称
public VCA_EVENT_TYPE dwEventType;//警戒事件类型
public NET_VCA_EVENT_UNION uEventParam;//事件参数
}
//前端设备地址信息,智能分析仪表示的是前端设备的地址信息,其他设备表示本机的地址
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_DEV_INFO
{
public NET_DVR_IPADDR struDevIP;//前端设备地址,
public ushort wPort;//前端设备端口号,
public byte byChannel;//前端设备通道,
public byte byIvmsChannel;// 保留字节
}
//行为分析结果上报结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_RULE_ALARM
{
public uint dwSize;//结构长度
public uint dwRelativeTime;//相对时标
public uint dwAbsTime;//绝对时标
public NET_VCA_RULE_INFO struRuleInfo;//事件规则信息
public NET_VCA_TARGET_INFO struTargetInfo;//报警目标信息
public NET_VCA_DEV_INFO struDevInfo;//前端设备信息
public uint dwPicDataLen;//返回图片的长度 为0表示没有图片,大于0表示该结构后面紧跟图片数据*/
public byte byPicType; //0-普通图片 1-对比图片
public byte byRelAlarmPicNum; //关联通道报警图片数量
public byte bySmart;//IDS设备返回0(默认值),Smart Functiom Return 1
public byte byPicTransType; //图片数据传输方式: 0-二进制;1-url
public uint dwAlarmID; //报警ID,用以标识通道间关联产生的组合报警,0表示无效
public ushort wDevInfoIvmsChannelEx; //与NET_VCA_DEV_INFO里的byIvmsChannel含义相同,能表示更大的值。老客户端用byIvmsChannel能继续兼容,但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx。
public byte byRelativeTimeFlag; //dwRelativeTime字段是否有效 0-无效, 1-有效,dwRelativeTime表示UTC时间
public byte byAppendInfoUploadEnabled; //附加信息上传使能 0-不上传 1-上传
public IntPtr pAppendInfo; //指向附加信息NET_VCA_APPEND_INFO的指针,byAppendInfoUploadEnabled为1时或者byTimeDiffFlag为1时有效
public IntPtr pImage;//指向图片的指针
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SYSTEM_TIME
{
public ushort wYear; //年
public ushort wMonth; //月
public ushort wDay; //日
public ushort wHour; //时
public ushort wMinute; //分
public ushort wSecond; //秒
public ushort wMilliSec; //毫秒
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//设备支持AI开放平台接入,上传视频检测数据
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_AIOP_VIDEO_HEAD
{
public uint dwSize; //dwSize = sizeof(NET_AIOP_VIDEO_HEAD)
public uint dwChannel; //设备分析通道的通道号;
public NET_DVR_SYSTEM_TIME struTime; //时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] szTaskID; //视频任务ID,来自于视频任务派发
public uint dwAIOPDataSize; //对应AIOPDdata数据长度
public uint dwPictureSize; //对应分析图片长度
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] szMPID; //检测模型包ID,用于匹配AIOP的检测数据解析;可以通过URI(GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management?format=json)获取当前设备加载的模型包的label description信息;
public IntPtr pBufferAIOPData; //AIOPDdata数据
public IntPtr pBufferPicture;//对应分析图片数据
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 184, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//设备支持AI开放平台接入,上传图片检测数据
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_AIOP_PICTURE_HEAD
{
public uint dwSize; //dwSize = sizeof(NET_AIOP_PICTURE_HEAD)
public NET_DVR_SYSTEM_TIME struTime; //时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] szPID; //透传下发的图片ID,来自于图片任务派发
public uint dwAIOPDataSize; //对应AIOPDdata数据长度
public byte byStatus; //状态值:0-成功,1-图片大小错误
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] szMPID; //检测模型包ID,用于匹配AIOP的检测数据解析;
public IntPtr pBufferAIOPData;//AIOPDdata数据
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 184, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_AIOP_POLLING_VIDEO_HEAD
{
public uint dwSize; //dwSize = sizeof(NET_AIOP_POLLING_VIDEO_HEAD)
public uint dwChannel; //设备分析通道的通道号(走SDK协议);
public NET_DVR_SYSTEM_TIME struTime; //时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] szTaskID; //轮询抓图任务ID,来自于轮询抓图任务派发
public uint dwAIOPDataSize; //对应AIOPDdata数据长度
public uint dwPictureSize; //对应分析图片长度
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] szMPID; //检测模型包ID,用于匹配AIOP的检测数据解析;
public IntPtr pBufferAIOPData;//AIOPDdata数据
public IntPtr pBufferPicture;//对应分析图片数据
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 184, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_AIOP_POLLING_SNAP_HEAD
{
public uint dwSize; //dwSize = sizeof(NET_AIOP_POLLING_SNAP_HEAD)
public uint dwChannel; //设备分析通道的通道号(走SDK协议);
public NET_DVR_SYSTEM_TIME struTime; //时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] szTaskID; //轮询抓图任务ID,来自于轮询抓图任务派发
public uint dwAIOPDataSize; //对应AIOPDdata数据长度
public uint dwPictureSize; //对应分析图片长度
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] szMPID; //检测模型包ID,用于匹配AIOP的检测数据解析;
public IntPtr pBufferAIOPData;//AIOPDdata数据
public IntPtr pBufferPicture;//分析图片数据
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 184, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//行为分析规则DSP信息叠加结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_DRAW_MODE
{
public uint dwSize;
public byte byDspAddTarget;//编码是否叠加目标
public byte byDspAddRule;//编码是否叠加规则
public byte byDspPicAddTarget;//抓图是否叠加目标
public byte byDspPicAddRule;//抓图是否叠加规则
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//物体类型
public enum OBJECT_TYPE_ENUM
{
ENUM_OBJECT_TYPE_COAT = 1 //上衣
}
//物体颜色条件结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_OBJECT_COLOR_COND
{
public uint dwChannel; //通道号
public uint dwObjType; //物体类型,参见OBJECT_TYPE_ENUM
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//图片参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PIC
{
public byte byPicType; //图片类型,1-jpg
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public uint dwPicWidth; //图片宽度
public uint dwPicHeight; //图片高度
public uint dwPicDataLen; //图片数据实际大小
public uint dwPicDataBuffLen; //图片数据缓冲区大小
public IntPtr byPicDataBuff; //图片数据缓冲区
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//颜色联合体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_OBJECT_COLOR_UNION
{
public NET_DVR_COLOR struColor; //颜色值
public NET_DVR_PIC struPicture; //图片
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//物体颜色参数结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_OBJECT_COLOR
{
public uint dwSize; //结构体大小
public byte byEnable; //0-不启用,1-启用
public byte byColorMode; //取色方式,1-颜色值,2-图片
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public NET_DVR_OBJECT_COLOR_UNION uObjColor; //物体颜色联合体,取值依赖于取色方式
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//区域类型
public enum AREA_TYPE_ENUM
{
ENUM_OVERLAP_REGION = 1,//共同区域
ENUM_BED_LOCATION = 2 //床铺位置
}
//辅助区域
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_AUXAREA
{
public uint dwAreaType; //区域类型,参见AREA_TYPE_ENUM
public byte byEnable; //0-不启用,1-启用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public NET_VCA_POLYGON struPolygon; //区域
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//辅助区域列表
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_AUXAREA_LIST
{
public uint dwSize; // 结构体大小
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_AUXAREA_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_AUXAREA[] struArea; //辅助区域
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留
}
//通道工作模式
public enum CHAN_WORKMODE_ENUM
{
ENUM_CHAN_WORKMODE_INDEPENDENT = 1, //独立模式
ENUM_CHAN_WORKMODE_MASTER = 2, //主模式
ENUM_CHAN_WORKMODE_SLAVE = 3 //从模式
}
//通道工作模式参数结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CHANNEL_WORKMODE
{
public uint dwSize; //结构体大小
public byte byWorkMode; //工作模式,参见CHAN_WORKMODE_ENUM
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 63, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//设备通道参数结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CHANNEL
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] byAddress; //设备IP或域名
public ushort wDVRPort; //端口号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName; //主机用户名
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword; //主机密码
public uint dwChannel; //通道号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//从通道信息联合体
[StructLayout(LayoutKind.Explicit)]
public struct NET_DVR_SLAVE_CHANNEL_UNION
{
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 152, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //联合体大小
}
//从通道参数结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SLAVE_CHANNEL_PARAM
{
public byte byChanType; //从通道类型,1-本机通道,2-远程通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public NET_DVR_SLAVE_CHANNEL_UNION uSlaveChannel; //从通道联合体,取值依赖于byChanType
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//从通道参数配置结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SLAVE_CHANNEL_CFG
{
public uint dwSize; //结构体大小
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_SLAVE_CHANNEL_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SLAVE_CHANNEL_PARAM[] struChanParam;//从通道参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//视频质量诊断检测事件
public enum VQD_EVENT_ENUM
{
ENUM_VQD_EVENT_BLUR = 1, //图像模糊
ENUM_VQD_EVENT_LUMA = 2, //亮度异常
ENUM_VQD_EVENT_CHROMA = 3, //图像偏色
ENUM_VQD_EVENT_SNOW = 4, //雪花干扰
ENUM_VQD_EVENT_STREAK = 5, //条纹干扰
ENUM_VQD_EVENT_FREEZE = 6, //画面冻结
ENUM_VQD_EVENT_SIGNAL_LOSS = 7, //信号丢失
ENUM_VQD_EVENT_PTZ = 8, //云台失控
ENUM_VQD_EVENT_SCNENE_CHANGE = 9, //场景突变
ENUM_VQD_EVENT_VIDEO_ABNORMAL = 10, //视频异常
ENUM_VQD_EVENT_VIDEO_BLOCK = 11, //视频遮挡
}
//视频质量诊断事件条件结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VQD_EVENT_COND
{
public uint dwChannel; //通道号
public uint dwEventType; //检测事件类型,参见VQD_EVENT_ENUM
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//视频质量诊断事件参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VQD_EVENT_PARAM
{
public byte byThreshold; //报警阈值,范围[0,100]
public byte byTriggerMode; //1-持续触发,2-单次触发
public byte byUploadPic; //0-不上传图片,1-上传图片,无论是否上传图片,事后都可以从设备获取该事件所对应最新的一张报警图片,参见接口NET_DVR_StartDownload
public byte byRes1; //保留
public uint dwTimeInterval; //持续触发报警时间间隔,范围[0,3600] 单位:秒
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//视频质量诊断事件规则
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VQD_EVENT_RULE
{
public uint dwSize; //结构体大小
public byte byEnable; //0-不启用,1-启用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public NET_DVR_VQD_EVENT_PARAM struEventParam; //视频质量诊断事件参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//检测时间
public NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //处理方式
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IVMS_IP_CHANNEL, ArraySubType = UnmanagedType.I1)]
public byte[] byRelRecordChan; //报警触发的录象通道:1表示触发该通道;0表示不触发
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//基准场景参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_BASELINE_SCENE
{
public uint dwSize; //结构体大小
public byte byEnable; //0-不启用,1-启用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 63, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//基准场景操作参数结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CONTROL_BASELINE_SCENE_PARAM
{
public uint dwSize; //结构体大小
public uint dwChannel; //通道号
public byte byCommand; //操作类型,1-此字段保留,暂不使用,2-更新基准场景
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 127, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//视频质量诊断报警结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VQD_ALARM
{
public uint dwSize; //结构体大小
public uint dwRelativeTime; //相对时标
public uint dwAbsTime; //绝对时标
public NET_VCA_DEV_INFO struDevInfo; //前端设备信息
public uint dwEventType; //事件类型,参考VQD_EVENT_ENUM
public float fThreshold; //报警阈值[0.000,1.000]
public uint dwPicDataLen; //图片长度,为0表示没有图片
public IntPtr pImage; //指向图片的指针
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//标定点子结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CB_POINT
{
public NET_VCA_POINT struPoint; //标定点,主摄像机(枪机)
public NET_DVR_PTZPOS struPtzPos; //球机输入的PTZ坐标
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//标定参数配置结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TRACK_CALIBRATION_PARAM
{
public byte byPointNum; //有效标定点个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CALIB_PT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_CB_POINT[] struCBPoint; //标定点组
}
//球机配置结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TRACK_CFG
{
public uint dwSize; //结构长度
public byte byEnable; //标定使能
public byte byFollowChan; // 被控制的从通道
public byte byDomeCalibrate; //设置智能跟踪球机标定,1设置 0不设置
public byte byRes; // 保留字节
public NET_DVR_TRACK_CALIBRATION_PARAM struCalParam; //标定点组
}
//跟踪模式
public enum TRACK_MODE
{
MANUAL_CTRL = 0, //手动跟踪
ALARM_TRACK //报警触发跟踪
}
//手动控制结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MANUAL_CTRL_INFO
{
public NET_VCA_POINT struCtrlPoint;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//跟踪模式结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TRACK_MODE
{
public uint dwSize; //结构长度
public byte byTrackMode; //跟踪模式
public byte byRuleConfMode; //规则配置跟踪模式0-本地配置跟踪,1-远程配置跟踪
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留,置0
[StructLayout(LayoutKind.Explicit)]
public struct uModeParam
{
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.U4)]
public uint[] dwULen;
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARM_JPEG
{
public byte byPicProType; /*报警时图片处理方式 0-不处理 1-上传*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留字节
public NET_DVR_JPEGPARA struPicParam; /*图片规格结构*/
}
//分析仪行为分析规则结构
//警戒规则结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_IVMS_ONE_RULE
{
public byte byActive;/* 是否激活规则,0-否, 非0-是 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 7, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;//保留,设置为0字段
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRuleName;//规则名称
public VCA_EVENT_TYPE dwEventType;//行为分析事件类型
public NET_VCA_EVENT_UNION uEventParam;//行为分析事件参数
public NET_VCA_SIZE_FILTER struSizeFilter;//尺寸过滤器
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 68, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;/*保留,设置为0*/
}
// 分析仪规则结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_IVMS_RULECFG
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RULE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_IVMS_ONE_RULE[] struRule; //规则数组
}
// IVMS行为分析配置结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_IVMS_BEHAVIORCFG
{
public uint dwSize;
public byte byPicProType;//报警时图片处理方式 0-不处理 非0-上传
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public NET_DVR_JPEGPARA struPicParam;//图片规格结构
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT, ArraySubType = UnmanagedType.Struct)]
public NET_IVMS_RULECFG[] struRuleCfg;//每个时间段对应规则
}
//智能分析仪取流计划子结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_IVMS_DEVSCHED
{
public NET_DVR_SCHEDTIME struTime;//时间参数
public NET_DVR_PU_STREAM_CFG struPUStream;//前端取流参数
}
//智能分析仪参数配置结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_IVMS_STREAMCFG
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT, ArraySubType = UnmanagedType.Struct)]
public NET_IVMS_DEVSCHED[] struDevSched;//按时间段配置前端取流以及规则信息
}
//屏蔽区域
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_MASK_REGION
{
public byte byEnable;//是否激活, 0-否,非0-是
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留,置0
public NET_VCA_POLYGON struPolygon;//屏蔽多边形
}
//屏蔽区域链表结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_MASK_REGION_LIST
{
public uint dwSize;//结构长度
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留,置0
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_MASK_REGION_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_MASK_REGION[] struMask;//屏蔽区域数组
}
//ATM进入区域参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_ENTER_REGION
{
public uint dwSize;
public byte byEnable;//是否激活,0-否,非0-是
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_VCA_POLYGON struPolygon;//进入区域
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//IVMS屏蔽区域链表
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_IVMS_MASK_REGION_LIST
{
public uint dwSize;//结构长度
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_MASK_REGION_LIST[] struList;
}
//IVMS的ATM进入区域参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_IVMS_ENTER_REGION
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_ENTER_REGION[] struEnter;//进入区域
}
// ivms 报警图片上传结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_IVMS_ALARM_JPEG
{
public byte byPicProType;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public NET_DVR_JPEGPARA struPicParam;
}
// IVMS 后检索配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_IVMS_SEARCHCFG
{
public uint dwSize;
public NET_DVR_MATRIX_DEC_REMOTE_PLAY struRemotePlay;// 远程回放
public NET_IVMS_ALARM_JPEG struAlarmJpeg;// 报警上传图片配置
public NET_IVMS_RULECFG struRuleCfg;//IVMS 行为规则配置
}
/************************************end******************************************/
//NAS认证配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IDENTIFICATION_PARAM
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName; /* 用户名 32*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword; /* 密码 16*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
}
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct NET_DVR_MOUNT_PARAM_UNION
{
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 52, ArraySubType = UnmanagedType.I1)]
public byte[] uLen; //联合体结构大小
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_NAS_MOUNT_PARAM
{
public byte byMountType; //0~保留,1~NFS, 2~ SMB/CIFS
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public NET_DVR_MOUNT_PARAM_UNION uMountParam;
}
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct NET_DVR_MOUNTMETHOD_PARAM_UNION
{
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 56, ArraySubType = UnmanagedType.I1)]
public byte[] uLen; //联合体结构大小
}
//网络硬盘结构配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SINGLE_NET_DISK_INFO
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;//保留
public NET_DVR_IPADDR struNetDiskAddr;//网络硬盘地址
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PATHNAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sDirectory;// PATHNAME_LEN = 128
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 68, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;//保留
}
public const int MAX_NET_DISK = 16;
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_NET_DISKCFG
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NET_DISK, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SINGLE_NET_DISK_INFO[] struNetDiskParam;
}
//事件类型
//主类型
public enum MAIN_EVENT_TYPE
{
EVENT_MOT_DET = 0,//移动侦测
EVENT_ALARM_IN = 1,//报警输入
EVENT_VCA_BEHAVIOR = 2,//行为分析
EVENT_INQUEST = 3, //审讯事件
EVENT_VCA_DETECTION = 4, //智能侦测
EVENT_STREAM_INFO = 100 //流ID信息
}
public const int INQUEST_START_INFO = 0x1001; /*讯问开始信息*/
public const int INQUEST_STOP_INFO = 0x1002; /*讯问停止信息*/
public const int INQUEST_TAG_INFO = 0x1003; /*重点标记信息*/
public const int INQUEST_SEGMENT_INFO = 0x1004; /*审讯片断状态信息*/
public enum VCA_DETECTION_MINOR_TYPE : uint
{
EVENT_VCA_TRAVERSE_PLANE = 1, //越警侦测
EVENT_FIELD_DETECTION, //区域入侵侦测
EVENT_AUDIO_INPUT_ALARM, //音频输入异常
EVENT_SOUND_INTENSITY_ALARM, //声强突变侦测
EVENT_FACE_DETECTION, //人脸侦测
EVENT_VIRTUAL_FOCUS_ALARM, /*虚焦侦测*/
EVENT_SCENE_CHANGE_ALARM, /*场景变更侦测*/
EVENT_ALL = 0xffffffff //表示全部
}
//行为分析主类型对应的此类型, 0xffff表示全部
public enum BEHAVIOR_MINOR_TYPE
{
EVENT_TRAVERSE_PLANE = 0,// 穿越警戒面,
EVENT_ENTER_AREA,//目标进入区域,支持区域规则
EVENT_EXIT_AREA,//目标离开区域,支持区域规则
EVENT_INTRUSION,// 周界入侵,支持区域规则
EVENT_LOITER,//徘徊,支持区域规则
EVENT_LEFT_TAKE,//丢包捡包,支持区域规则
EVENT_PARKING,//停车,支持区域规则
EVENT_RUN,//奔跑,支持区域规则
EVENT_HIGH_DENSITY,//区域内人员密度,支持区域规则
EVENT_STICK_UP,//贴纸条,支持区域规则
EVENT_INSTALL_SCANNER,//安装读卡器,支持区域规则
EVENT_OPERATE_OVER_TIME, // 操作超时
EVENT_FACE_DETECT, // 异常人脸
EVENT_LEFT, // 物品遗留
EVENT_TAKE, // 物品拿取
EVENT_LEAVE_POSITION, //离岗事件
EVENT_TRAIL_INFO = 16, //尾随
EVENT_FALL_DOWN_INFO = 19, //倒地
EVENT_OBJECT_PASTE = 20, // 异物粘贴区域
EVENT_FACE_CAPTURE_INFO = 21, //正常人脸
EVENT_MULTI_FACES_INFO = 22, //多张人脸
EVENT_AUDIO_ABNORMAL_INFO = 23, //声强突变
EVENT_DETECT = 24 //智能侦测
}
// 主类型100,对应的小类型
public enum STREAM_INFO_MINOR_TYPE
{
EVENT_STREAM_ID = 0, // 流ID
EVENT_TIMING = 1, // 定时录像
EVENT_MOTION_DETECT = 2, // 移动侦测
EVENT_ALARM = 3, // 报警录像
EVENT_ALARM_OR_MOTION_DETECT = 4, // 报警或移动侦测
EVENT_ALARM_AND_MOTION_DETECT = 5, // 报警和移动侦测
EVENT_COMMAND_TRIGGER = 6, // 命令触发
EVENT_MANNUAL = 7, // 手动录像
EVENT_BACKUP_VOLUME = 8 // 存档卷录像
}
//邦诺CVR
public const int MAX_ID_COUNT = 256;
public const int MAX_STREAM_ID_COUNT = 1024;
public const int STREAM_ID_LEN = 32;
public const int PLAN_ID_LEN = 32;
// 流信息 - 72字节长
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_STREAM_INFO
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = STREAM_ID_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byID; //ID数据
public uint dwChannel; //关联设备通道,等于0xffffffff时,表示不关联
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
public void Init()
{
byID = new byte[STREAM_ID_LEN];
byRes = new byte[32];
}
}
//事件搜索条件 200-04-07 9000_1.1
public const int SEARCH_EVENT_INFO_LEN = 300;
//报警输入
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct EVENT_ALARM_BYBIT
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMIN_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byAlarmInNo;//报警输入号,byAlarmInNo[0]若置1则表示查找由报警输入1触发的事件
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SEARCH_EVENT_INFO_LEN - MAX_ALARMIN_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public void init()
{
byAlarmInNo = new byte[MAX_ALARMIN_V30];
byRes = new byte[SEARCH_EVENT_INFO_LEN - MAX_CHANNUM_V30];
}
}
//报警输入 按值表示
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct EVENT_ALARM_BYVALUE
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.U2)]
public ushort[] wAlarmInNo;//报警输入号,byAlarmInNo[0]若置1则表示查找由报警输入1触发的事件
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 44, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public void init()
{
wAlarmInNo = new ushort[128];
byRes = new byte[44];
}
}
//移动侦测
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct EVENT_MOTION_BYBIT
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byMotDetChanNo;//移动侦测通道,byMotDetChanNo[0]若置1则表示查找由通道1发生移动侦测触发的事件
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SEARCH_EVENT_INFO_LEN - MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public void init()
{
byMotDetChanNo = new byte[MAX_CHANNUM_V30];
byRes = new byte[SEARCH_EVENT_INFO_LEN - MAX_CHANNUM_V30];
}
}
//移动侦测--按值
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct EVENT_MOTION_BYVALUE
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.U2)]
public ushort[] wMotDetChanNo;//报警输入号,byAlarmInNo[0]若置1则表示查找由报警输入1触发的事件
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 172, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public void init()
{
wMotDetChanNo = new ushort[64];
byRes = new byte[172];
}
}
//行为分析
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct EVENT_VCA_BYBIT
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byChanNo;//触发事件的通道
public byte byRuleID;//规则ID,0xff表示全部
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 235, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;//保留
public void init()
{
byChanNo = new byte[MAX_CHANNUM_V30];
byRes1 = new byte[235];
}
}
//行为分析--按值方式查找
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct EVENT_VCA_BYVALUE
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.U2)]
public ushort[] wChanNo; //触发事件的通道
public byte byRuleID; //行为分析类型,规则0xff表示全部,从0开始
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 171, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; /*保留*/
public void init()
{
wChanNo = new ushort[64];
byRes = new byte[171];
}
}
//审讯事件搜索条件
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct EVENT_INQUEST_PARAM
{
public byte byRoomIndex; //审讯室编号,从1开始
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 299, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
public void init()
{
byRes = new byte[299];
}
}
//智能侦测查找条件
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct EVENT_VCADETECT_BYBIT
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 256, ArraySubType = UnmanagedType.I1)]
public byte[] byChan;//触发智能侦测的通道号,按数组下标表示,byChan[0]若置1则表示查找由通道1发生移动侦测触发的事件
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 44, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
public void init()
{
byChan = new byte[256];
byRes = new byte[44];
}
}
//智能侦测查找条件 ,通道号按值表示
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct EVENT_VCADETECT_BYVALUE
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30 - 1, ArraySubType = UnmanagedType.U4)]
public uint[] dwChanNo;// 触发通道号,按值表示,0xffffffff无效,且后续数据也表示无效值
public byte byAll;//0-表示不是全部,1-表示全部。
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 47, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public void init()
{
dwChanNo = new uint[MAX_CHANNUM_V30 - 1];
byRes = new byte[47];
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct EVENT_STREAMID_PARAM
{
public NET_DVR_STREAM_INFO struIDInfo; // 流id信息,72字节长
public uint dwCmdType; // 外部触发类型,NVR接入云存储使用
public byte byBackupVolumeNum; //存档卷号,CVR使用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 223, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public void init()
{
struIDInfo.Init();
byRes = new byte[223];
}
}
[StructLayout(LayoutKind.Explicit)]
public struct SEARCH_EVENT_UNION
{
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SEARCH_EVENT_INFO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byLen;
/* [FieldOffsetAttribute(0)]
public EVENT_ALARM_BYBIT struAlarmParam;
[FieldOffsetAttribute(0)]
public EVENT_ALARM_BYVALUE struAlarmParamByValue;
[FieldOffsetAttribute(0)]
public EVENT_MOTION_BYBIT struMotionParam;
[FieldOffsetAttribute(0)]
public EVENT_MOTION_BYVALUE struMotionParamByValue;
[FieldOffsetAttribute(0)]
public EVENT_VCA_BYBIT struVcaParam;
[FieldOffsetAttribute(0)]
public EVENT_VCA_BYVALUE struVcaParamByValue;
[FieldOffsetAttribute(0)]
public EVENT_INQUEST_PARAM struInquestParam;
[FieldOffsetAttribute(0)]
public EVENT_VCADETECT_BYBIT struVCADetectByBit;
[FieldOffsetAttribute(0)]
public EVENT_VCADETECT_BYVALUE struVCADetectByValue;
[FieldOffsetAttribute(0)]
public EVENT_STREAMID_PARAM struStreamIDParam;
* */
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SEARCH_EVENT_PARAM
{
public ushort wMajorType;//0-移动侦测,1-报警输入, 2-智能事件
public ushort wMinorType;//搜索次类型- 根据主类型变化,0xffff表示全部
public NET_DVR_TIME struStartTime;//搜索的开始时间,停止时间: 同时为(0, 0) 表示从最早的时间开始,到最后,最前面的4000个事件
public NET_DVR_TIME struEndTime;
public byte byLockType; // 0xff-全部,0-未锁,1-锁定
public byte byValue; //0-按位表示,1-按值表示
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 130, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留
public SEARCH_EVENT_UNION uSeniorPara;
}
//报警输入结果
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct EVENT_ALARM_RET
{
public uint dwAlarmInNo;//报警输入号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SEARCH_EVENT_INFO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public void init()
{
byRes = new byte[SEARCH_EVENT_INFO_LEN];
}
}
//移动侦测结果
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct EVENT_MOTION_RET
{
public uint dwMotDetNo;//移动侦测通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SEARCH_EVENT_INFO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public void init()
{
byRes = new byte[SEARCH_EVENT_INFO_LEN];
}
}
//行为分析结果
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct EVENT_VCA_RET
{
public uint dwChanNo;//触发事件的通道号
public byte byRuleID;//规则ID
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;//保留
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRuleName;//规则名称
public NET_VCA_EVENT_UNION uEvent;//行为事件参数,wMinorType = VCA_EVENT_TYPE决定事件类型
public void init()
{
byRes1 = new byte[3];
byRuleName = new byte[NAME_LEN];
}
}
//审讯事件查询结果
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct EVENT_INQUEST_RET
{
public byte byRoomIndex; //审讯室编号,从1开始
public byte byDriveIndex; //刻录机编号,从1开始
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public uint dwSegmentNo; //本片断在本次审讯中的序号,从1开始
public ushort wSegmetSize; //本片断的大小, 单位M
public ushort wSegmentState; //本片断状态 0 刻录正常,1 刻录异常,2 不刻录审讯
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 288, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
public void init()
{
byRes1 = new byte[6];
byRes2 = new byte[288];
}
}
//流id录像查询结果
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct EVENT_STREAMID_RET
{
public uint dwRecordType; //录像类型 0-定时录像 1-移动侦测 2-报警录像 3-报警|移动侦测 4-报警&移动侦测 5-命令触发 6-手动录像 7-震动报警 8-环境触发 9-智能报警 10-回传录像
public uint dwRecordLength; //录像大小
public byte byLockFlag; // 锁定标志 0:没锁定 1:锁定
public byte byDrawFrameType; // 0:非抽帧录像 1:抽帧录像
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byFileName; //文件名
public uint dwFileIndex; // 存档卷上的文件索引
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 256, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public void init()
{
byRes1 = new byte[2];
byFileName = new byte[NAME_LEN];
byRes = new byte[256];
}
}
[StructLayout(LayoutKind.Explicit)]
public struct SEARCH_EVENT_RET
{
[FieldOffset(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 304, ArraySubType = UnmanagedType.I1)]
public byte[] byEventRetUnion;
/*
[FieldOffset(0)]
public EVENT_ALARM_RET struAlarmRet;
[FieldOffset(0)]
public EVENT_MOTION_RET struMotionRet;
[FieldOffset(0)]
public EVENT_VCA_RET struVcaRet;
[FieldOffset(0)]
public EVENT_INQUEST_RET struInquestRet;
[FieldOffset(0)]
public EVENT_STREAMID_RET struStreamIDRet;
* */
}
//查找返回结果
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SEARCH_EVENT_RET
{
public ushort wMajorType;//主类型MA
public ushort wMinorType;//次类型
public NET_DVR_TIME struStartTime;//事件开始的时间
public NET_DVR_TIME struEndTime;//事件停止的时间,脉冲事件时和开始时间一样
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byChan;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 36, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public SEARCH_EVENT_RET uSeniorRet;
public void init()
{
byChan = new byte[MAX_CHANNUM_V30];
byRes = new byte[36];
}
}
//SDK_V35 2009-10-26
// 标定配置类型
public enum tagCALIBRATE_TYPE
{
PDC_CALIBRATE = 0x01, // PDC 标定
BEHAVIOR_OUT_CALIBRATE = 0x02, //行为室外场景标定
BEHAVIOR_IN_CALIBRATE = 0x03, // 行为室内场景标定
ITS_CALBIRETE = 0x04 // 交通事件标定
}
public const int MAX_RECT_NUM = 6;
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_RECT_LIST
{
public byte byRectNum; // 矩形框的个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 11, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留字节
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RECT_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_RECT[] struVcaRect; // 最大为6个Rect
}
// PDC 标定参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PDC_CALIBRATION
{
public NET_DVR_RECT_LIST struRectList; // 标定矩形框列表
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 120, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
// 标定线的属性类别,用来表示当前标定线在实际表示的是高度线还是长度线。
public enum LINE_MODE
{
HEIGHT_LINE, //高度样本线
LENGTH_LINE //长度样本线
}
/*在设置标定信息的时候,如果相应位设置了使能,并设置相关参数,若没有设置使能,则标定后可以获取相关的摄像机参数*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CAMERA_PARAM
{
public byte byEnableHeight; // 是否使能设置摄像机高度线
public byte byEnableAngle; // 是否使能设置摄像机俯仰角度
public byte byEnableHorizon; // 是否使能设置摄像机地平线
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
public float fCameraHeight; // 摄像机高度
public float fCameraAngle; // 摄像机俯仰角度
public float fHorizon; // 场景中的地平线
}
/*当fValue表示目标高度的时候,struStartPoint和struEndPoint分别表示目标头部点和脚部点。
* 当fValue表示线段长度的时候,struStartPoint和struEndPoint分别表示线段起始点和终点,
* mode表示当前样本线表示高度线还是长度线。*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LINE_SEGMENT
{
public byte byLineMode; // 参照 LINE_MODE
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
public NET_VCA_POINT struStartPoint;
public NET_VCA_POINT struEndPoint;
public float fValue;
}
public const int MAX_LINE_SEG_NUM = 8;
/*标定样本线目前需要4-8调样本线,以获取摄像机相关参数*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_BEHAVIOR_OUT_CALIBRATION
{
public uint dwLineSegNum; // 样本线个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_LINE_SEG_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_LINE_SEGMENT[] struLineSegment; // 样本线最大个数
public NET_DVR_CAMERA_PARAM struCameraParam; // 摄像机参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
/*该结构体表示IAS智能库标定样本,其中包括一个目标框和一条对应的高度标定线;
* 目标框为站立的人体外接矩形框;高度线样本标识从人头顶点到脚点的标定线;用归一化坐标表示;*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IN_CAL_SAMPLE
{
public NET_VCA_RECT struVcaRect; // 目标框
public NET_DVR_LINE_SEGMENT struLineSegment; // 高度标定线
}
public const int MAX_SAMPLE_NUM = 5;
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_BEHAVIOR_IN_CALIBRATION
{
public uint dwCalSampleNum; // 标定样本个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_SAMPLE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IN_CAL_SAMPLE[] struCalSample; // 标定样本最大个数
public NET_DVR_CAMERA_PARAM struCameraParam; // 摄像机参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
public const int CALIB_PT_NUM = 4;
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ITS_CALIBRATION
{
public uint dwPointNum; //标定点数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = CALIB_PT_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_POINT[] struPoint; //图像坐标
public float fWidth;
public float fHeight;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 100, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
}
// 标定参数联合体
// 后续的相关标定参数可以放在该结构里面
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct NET_DVR_CALIBRATION_PRARM_UNION
{
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 240, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //联合体结构大小
/*[FieldOffsetAttribute(0)]
public NET_DVR_PDC_CALIBRATION struPDCCalibration; //PDC 标定参数
[FieldOffsetAttribute(0)]
public NET_DVR_BEHAVIOR_OUT_CALIBRATION struBehaviorOutCalibration; // 行为室外场景标定 主要应用于IVS等
[FieldOffsetAttribute(0)]
public NET_DVR_BEHAVIOR_IN_CALIBRATION struBehaviorInCalibration; // 行为室内场景标定,主要应用IAS等
[FieldOffsetAttribute(0)]
public NET_DVR_ITS_CALIBRATION struITSCalibration;
* */
}
// 标定配置结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CALIBRATION_CFG
{
public uint dwSize; //标定结构大小
public byte byEnable; // 是否启用标定
public byte byCalibrationType; // 标定类型 根据不同类型在联合体类选择不同的标定 参考CALIBRATE_TYPE
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_CALIBRATION_PRARM_UNION uCalibrateParam; // 标定参数联合体
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//流量统计方向结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PDC_ENTER_DIRECTION
{
public NET_VCA_POINT struStartPoint; //流量统计方向起始点
public NET_VCA_POINT struEndPoint; // 流量统计方向结束点
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PDC_RULE_CFG
{
public uint dwSize; //结构大小
public byte byEnable; // 是否激活规则;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 23, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
public NET_VCA_POLYGON struPolygon; // 多边形
public NET_DVR_PDC_ENTER_DIRECTION struEnterDirection; // 流量进入方向
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PDC_RULE_CFG_V41
{
public uint dwSize; //结构大小
public byte byEnable; // 是否激活规则;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 23, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
public NET_VCA_POLYGON struPolygon; // 多边形
public NET_DVR_PDC_ENTER_DIRECTION struEnterDirection; // 流量进入方向
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME struAlarmTime;//布防时间
public NET_DVR_TIME_EX struDayStartTime; //白天开始时间,时分秒有效
public NET_DVR_TIME_EX struNightStartTime; //夜晚开始时间,时分秒有效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 100, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
//试用版信息结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TRIAL_VERSION_CFG
{
public uint dwSize;
public ushort wReserveTime; //试用期剩余时间,0xffff表示无效,单位:天
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 62, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SYN_CHANNEL_NAME_PARAM
{
public uint dwSize;
public uint dwChannel; //通道号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_RESET_COUNTER_CFG
{
public uint dwSize;
public byte byEnable; //是否启用,0-不启用,1-启用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_TIME_EX[] struTime;//数据清零时间,时分秒有效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VCA_CTRLINFO_COND
{
public uint dwSize;
public NET_DVR_STREAM_INFO struStreamInfo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VCA_CTRLINFO_CFG
{
public uint dwSize;
public byte byVCAEnable; //是否开启智能
public byte byVCAType; //智能能力类型,VCA_CHAN_ABILITY_TYPE
public byte byStreamWithVCA; //码流中是否带智能信息
public byte byMode; //模式,ATM 能力时参照VCA_CHAN_MODE_TYPE ,TFS 能力时参照 TFS_CHAN_MODE_TYPE,行为分析完整版时参照BEHAVIOR_SCENE_MODE_TYPE
public byte byControlType; //控制类型,按位表示,0-否,1-是
//byControlType &1 是否启用抓拍功能
//byControlType &2 是否启用联动前端设备
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 83, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留,设置为0
}
/*设置人流量统计参数 复用行为内部关键字参数
* HUMAN_GENERATE_RATE
* 目标生成速度参数,控制PDC库生成目标的速度。速度越快,目标越容易生成。
* 当输入视频光照条件较差,对比度较低时,或者设置的规则区域较小时,应加快目标生成速度, 避免目标的漏检;
* 当输入视频中对比度较高时,或者规则区域较大时,应该降低目标生成速度,以减少误检。
* 目标生成速度参数共有5级,1级速度最慢,5级最快,默认参数为3。
*
* DETECT_SENSITIVE
* 目标检测灵敏度控制参数,控制PDC库中一个矩形区域被检测为目标的灵敏度。
* 灵敏度越高,矩形区域越容易被检测为目标,灵敏度越低则越难检测为目标。
* 当输入视频光照条件较差,对比度较低时,应提高检测灵敏度, 避免目标的漏检;
* 当输入视频中对比度较高时,应该降低检测灵敏度,以减少误检。
* 对应参数共有5级,级别1灵敏度最低,5级最高,默认级别为3。
*
* TRAJECTORY_LEN
* 轨迹生成长度控制参数,表示生成轨迹时要求目标的最大位移像素。
* 对应参数共有5级,级别1,生成长度最长,轨迹生成最慢,5级生成长度最短,轨迹生成最快,默认级别为3。
*
* TRAJECT_CNT_LEN
* 轨迹计数长度控制参数,表示轨迹计数时要求目标的最大位移像素。
* 对应参数共有5级,级别1,计数要求长度最长,轨迹计数最慢,5级计数要求长度最短,轨迹计数最快,默认级别为3。
*
* PREPROCESS
* 图像预处理控制参数,0 - 不处理;1 - 处理。默认为0;
*
* CAMERA_ANGLE
* 摄像机角度输入参数, 0 - 倾斜; 1 - 垂直。默认为0;
*/
public enum PDC_PARAM_KEY
{
HUMAN_GENERATE_RATE = 50, // 目标生成速度 从50开始
DETECT_SENSITIVE = 51, // 检测灵敏度
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PDC_TARGET_INFO
{
public uint dwTargetID; // 目标id
public NET_VCA_RECT struTargetRect; // 目标框
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PDC_TARGET_IN_FRAME
{
public byte byTargetNum; //目标个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] yRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_TARGET_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_PDC_TARGET_INFO[] struTargetInfo; //目标信息数组
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
}
//单帧统计结果时使用
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct UNION_STATFRAME
{
public uint dwRelativeTime; // 相对时标
public uint dwAbsTime; // 绝对时标
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 92, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct UNION_STATTIME
{
public NET_DVR_TIME tmStart; // 统计起始时间
public NET_DVR_TIME tmEnd; // 统计结束时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 92, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct UNION_PDCPARAM
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 140, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PDC_ALRAM_INFO
{
public uint dwSize; // PDC人流量报警上传结构体大小
public byte byMode; // 0 单帧统计结果 1最小时间段统计结果
public byte byChannel; // 报警上传通道号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
public NET_VCA_DEV_INFO struDevInfo; //前端设备信息
public UNION_PDCPARAM uStatModeParam;
public uint dwLeaveNum; // 离开人数
public uint dwEnterNum; // 进入人数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
}
//人流量信息查询
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PDC_QUERY
{
public NET_DVR_TIME tmStart;
public NET_DVR_TIME tmEnd;
public uint dwLeaveNum;
public uint dwEnterNum;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 256, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PTZ_POSITION
{
// 是否启用场景,在设置场景行为规则的时候该字段无效,在设置球机本地配置场景位置信息时作为使能位
public byte byEnable;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byPtzPositionName; //场景位置名称
public NET_DVR_PTZPOS struPtzPos; //ptz 坐标
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_POSITION_RULE_CFG
{
public uint dwSize; // 结构大小
public NET_DVR_PTZ_POSITION struPtzPosition; // 场景位置信息
public NET_VCA_RULECFG struVcaRuleCfg; //行为规则配置
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 80, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_POSITION_RULE_CFG_V41
{
public uint dwSize; // 结构大小
public NET_DVR_PTZ_POSITION struPtzPosition; // 场景位置信息
public NET_VCA_RULECFG_V41 struVcaRuleCfg; //行为规则配置
public byte byTrackEnable; //是否启用跟踪
public byte byRes1;
public ushort wTrackDuration; //跟踪持续时间,单位s
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 76, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LIMIT_ANGLE
{
public byte byEnable; // 是否启用场景限位功能
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_PTZPOS struUp; // 上限位
public NET_DVR_PTZPOS struDown; // 下限位
public NET_DVR_PTZPOS struLeft; // 左限位
public NET_DVR_PTZPOS struRight; // 右限位
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_POSITION_INDEX
{
public byte byIndex; // 场景索引
public byte byRes1;
public ushort wDwell; // 停留时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
}
public const int MAX_POSITION_NUM = 10;
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_POSITION_TRACK_CFG
{
public uint dwSize;
public byte byNum; // 场景个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_POSITION_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_POSITION_INDEX[] struPositionIndex;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//巡航路径场景信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PATROL_SCENE_INFO
{
public ushort wDwell; // 停留时间 30-300
public byte byPositionID; // 场景号1-10,默认0表示该巡航点不添加场景
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//场景巡航跟踪配置信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PATROL_TRACKCFG
{
public uint dwSize; // 结构大小
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 10, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_PATROL_SCENE_INFO[] struPatrolSceneInfo; // 巡航路径
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
//球机本地规则菜单配置结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TRACK_PARAMCFG
{
public uint dwSize; // 结构大小
public ushort wAlarmDelayTime; // 报警延时时间,目前球机只支持全局入侵 范围1-120秒
public ushort wTrackHoldTime; // 报警跟踪持续时间 范围0-300秒
public byte byTrackMode; // 参照 IPDOME_TRACK_MODE
public byte byPreDirection; // 跟踪方向预判 0-不启用 1-启用
public byte byTrackSmooth; // 跟踪连续 0-不启用 1-启用
public byte byZoomAdjust; // 倍率系数调整 参见下表
public byte byMaxTrackZoom; //最大跟踪倍率系数,0-表示默认倍率系数,等级6-标定值*1.0(默认),1-5为缩小标定值,值越小,缩小的比例越大,7-15为放大,值越大,放大的比例越大
public byte byStopTrackWhenFindFace; //人脸检测到后是否停止跟踪 0-否 1-是
public byte byStopTrackThreshold; //跟踪终止评分阈值
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 9, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
//球机机芯参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DOME_MOVEMENT_PARAM
{
public ushort wMaxZoom; // 球机最大倍率系数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 42, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
/********************************智能交通事件 begin****************************************/
public const int MAX_REGION_NUM = 8; // 区域列表最大数目
public const int MAX_TPS_RULE = 8; // 最大参数规则数目
public const int MAX_AID_RULE = 8; // 最大事件规则数目
public const int MAX_LANE_NUM = 8; // 最大车道数目
//交通事件类型
public enum TRAFFIC_AID_TYPE
{
CONGESTION = 0x01, //拥堵
PARKING = 0x02, //停车
INVERSE = 0x04, //逆行
PEDESTRIAN = 0x08, //行人
DEBRIS = 0x10, //遗留物 抛洒物碎片
SMOKE = 0x20, //烟雾
OVERLINE = 0x40, //压线
VEHICLE_CONTROL_LIST = 0x80, //黑名单数据
SPEED = 0x100 //超速
}
public enum TRAFFIC_SCENE_MODE
{
FREEWAY = 0, // 高速户外场景
TUNNEL, // 高速隧道场景
BRIDGE // 高速桥梁场景
}
public enum ITS_ABILITY_TYPE
{
ITS_CONGESTION_ABILITY = 0x01, //拥堵
ITS_PARKING_ABILITY = 0x02, //停车
ITS_INVERSE_ABILITY = 0x04, //逆行
ITS_PEDESTRIAN_ABILITY = 0x08, //行人
ITS_DEBRIS_ABILITY = 0x10, //遗留物 抛洒物碎片
ITS_SMOKE_ABILITY = 0x20, //烟雾-隧道
ITS_OVERLINE_ABILITY = 0x40, //压线
ITS_VEHICLE_CONTROL_LIST_ABILITY = 0x80, //黑名单数据
ITS_SPEED_ABILITY = 0x100, //超速
ITS_LANE_VOLUME_ABILITY = 0x010000, //车道流量
ITS_LANE_VELOCITY_ABILITY = 0x020000, //车道平均速度
ITS_TIME_HEADWAY_ABILITY = 0x040000, //车头时距
ITS_SPACE_HEADWAY_ABILITY = 0x080000, //车头间距
ITS_TIME_OCCUPANCY_RATIO_ABILITY = 0x100000, //车道占有率,(时间上)
ITS_SPACE_OCCUPANCY_RATIO_ABILITY = 0x200000, //车道占有率,百分比计算(空间上)
ITS_LANE_QUEUE_ABILITY = 0x400000, //排队长度
ITS_VEHICLE_TYPE_ABILITY = 0x800000, //车辆类型
ITS_TRAFFIC_STATE_ABILITY = 0x1000000 //交通状态
}
// 交通统计参数
public enum ITS_TPS_TYPE
{
LANE_VOLUME = 0x01, //车道流量
LANE_VELOCITY = 0x02, //车道速度
TIME_HEADWAY = 0x04, //车头时距
SPACE_HEADWAY = 0x08, //车头间距
TIME_OCCUPANCY_RATIO = 0x10, //车道占有率 (时间上)
SPACE_OCCUPANCY_RATIO = 0x20, //车道占有率,百分比计算(空间上)
QUEUE = 0x40, //排队长度
VEHICLE_TYPE = 0x80, //车辆类型
TRAFFIC_STATE = 0x100 //交通状态
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_REGION_LIST
{
public uint dwSize; // 结构体大小
public byte byNum; // 区域个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_REGION_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_POLYGON[] struPolygon; // 区域
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
}
//方向结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DIRECTION
{
public NET_VCA_POINT struStartPoint; // 方向起始点
public NET_VCA_POINT struEndPoint; // 方向结束点
}
//单个车道
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ONE_LANE
{
public byte byEnable; //车道是否启用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 11, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byLaneName; // 车道规则名称
public NET_DVR_DIRECTION struFlowDirection;// 车道内车流方向
public NET_VCA_POLYGON struPolygon; // 车道区域
}
//车道配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LANE_CFG
{
public uint dwSize; // 结构体大小
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_LANE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_ONE_LANE[] struLane; // 车道参数 数组下标作为车道ID
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
}
//交通事件参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_AID_PARAM
{
public ushort wParkingDuration; // 违停检测灵敏度 10-120s
public ushort wPedestrianDuration; // 行人持续时间 1-120s
public ushort wDebrisDuration; // 抛洒物持续时间 10-120s
public ushort wCongestionLength; // 拥堵长度阈值 5-200(米)
public ushort wCongestionDuration; // 拥堵持续参数 10-120s
public ushort wInverseDuration; // 逆行持续时间 1-10s
public ushort wInverseDistance; // 逆行距离阈值 单位m 范围[2-100] 默认 10米
public ushort wInverseAngleTolerance; // 允许角度偏差 90-180度,车流与逆行允许的夹角
public ushort wIllegalParkingTime; // 违停时间[4,60],单位:分钟 ,TFS(交通违章取证) 城市模式下
public ushort wIllegalParkingPicNum; // 违停图片数量[1,6], TFS(交通违章取证) 城市模式下
public byte byMergePic; // 图片拼接,TFS 城市模式下 0- 不拼接 1- 拼接
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 23, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
}
//单条交通事件规则结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ONE_AID_RULE
{
public byte byEnable; // 是否启用事件规则
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRuleName; // 规则名称
public uint dwEventType; // 交通事件检测类型 TRAFFIC_AID_TYPE
public NET_VCA_SIZE_FILTER struSizeFilter; // 尺寸过滤器
public NET_VCA_POLYGON struPolygon; // 规则区域
public NET_DVR_AID_PARAM struAIDParam; // 事件参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_2, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
public NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //处理方式
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byRelRecordChan; //报警触发的录象通道,为1表示触发该通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//交通事件规则
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_AID_RULECFG
{
public uint dwSize; // 结构体大小
public byte byPicProType; //报警时图片处理方式 0-不处理 非0-上传
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
public NET_DVR_JPEGPARA struPictureParam; //图片规格结构
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_AID_RULE, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_ONE_AID_RULE[] struOneAIDRule;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//单条交通事件规则结构体(扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ONE_AID_RULE_V41
{
public byte byEnable; // 是否启用事件规则
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRuleName; // 规则名称
public uint dwEventType; // 交通事件检测类型 TRAFFIC_AID_TYPE
public NET_VCA_SIZE_FILTER struSizeFilter; // 尺寸过滤器
public NET_VCA_POLYGON struPolygon; // 规则区域
public NET_DVR_AID_PARAM struAIDParam; // 事件参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;// 布防时间段
public NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //处理方式
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_IVMS_IP_CHANNEL, ArraySubType = UnmanagedType.I1)]
public byte[] byRelRecordChan; //报警触发的录象通道:1表示触发该通道;0表示不触发
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 60, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//交通事件规则(扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_AID_RULECFG_V41
{
public uint dwSize; // 结构体大小
public byte byPicProType; // 报警时图片处理方式 0-不处理 非0-上传
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
public NET_DVR_JPEGPARA struPictureParam; // 图片规格结构
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_AID_RULE, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_ONE_AID_RULE_V41[] struAIDRule; //规则数组
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//交通统计参数结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ONE_TPS_RULE
{
public byte byEnable; //是否使能车道交通规则参数
public byte byLaneID; //车道ID
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwCalcType; //统计参数类型ITS_TPS_TYPE
public NET_VCA_SIZE_FILTER struSizeFilter; //尺寸过滤器
public NET_VCA_POLYGON struVitrualLoop; //虚拟线圈
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_2, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
public NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //处理方式,一般为处理是否上传中心,其他功能不需要
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留字节
}
//交通参数统计规则配置结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TPS_RULECFG
{
public uint dwSize; // 结构大小
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_TPS_RULE, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_ONE_TPS_RULE[] struOneTpsRule; // 下标对应交通参数ID
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
}
//交通统计参数结构体(扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ONE_TPS_RULE_V41
{
public byte byEnable; //是否使能车道交通规则参数
public byte byLaneID; //车道ID
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public uint dwCalcType; // 统计参数类型ITS_TPS_TYPE
public NET_VCA_SIZE_FILTER struSizeFilter; //尺寸过滤器
public NET_VCA_POLYGON struVitrualLoop; //虚拟线圈
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
public NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //处理方式
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 60, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
}
//交通参数统计规则配置结构体(扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TPS_RULECFG_V41
{
public uint dwSize; // 结构大小
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_TPS_RULE, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_ONE_TPS_RULE_V41[] struOneTpsRule; // 下标对应交通参数ID
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留
}
//实时信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TPS_PARAM
{
public byte byStart; // 开始码
public byte byCMD; // 命令号,01-进入指令,02-离开指令,03-拥堵状态指令(为03时,只有byLaneState和byQueueLen有效),04-多线圈状态(为04时,wLoopState和wStateMask有效,表示byLane车道上多个线圈的过车状态)
public ushort wSpaceHeadway; //车头间距,以米来计算
public ushort wDeviceID; // 设备ID
public ushort wDataLen; // 数据长度
public byte byLane; // 对应车道号
public byte bySpeed; // 对应车速(KM/H)
public byte byLaneState; // 车道状态;0-无状态,1-畅通,2-拥挤,3-堵塞
public byte byQueueLen; // 堵塞状态下排队长度(比如50米)
public ushort wLoopState; //线圈状态,第几位表示几号线圈状态,线圈编号从镜头由近到远依次增大。状态1-到达,0-离开
public ushort wStateMask; //线圈状态掩码,掩码位为1对应wLoopState状态位有效,为0表示无效
public uint dwDownwardFlow; //当前车道 从上到下车流量
public uint dwUpwardFlow; //当前车道 从下到上车流量
public byte byJamLevel; //拥堵等级,当byLaneState为3时有效,1-轻度,2-中度,3-重度
public byte byVehicleDirection; //0-未知,1-由上而下,2-由下而上
public byte byJamFlow; //拥堵新增流量,每新增一辆车就上报一次累计车辆的信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 7, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public ushort wTimeHeadway; // 车头时距,以秒计算
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LLI_PARAM
{
public float fSec;//秒[0.000000,60.000000]
public byte byDegree;//度:纬度[0,90] 经度[0,180]
public byte byMinute;//分[0,59]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LLPOS_PARAM
{
public byte byLatitudeType;//纬度类型,0-北纬,1-南纬
public byte byLongitudeType;//经度类型,0-东经,1-西经
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_LLI_PARAM struLatitude; /*纬度*/
public NET_DVR_LLI_PARAM struLongitude; /*经度*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//TPS附加信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TPS_ADDINFO
{
public NET_DVR_LLPOS_PARAM struLLPos;//车流量最后一辆车的经纬度位置信息(byLaneState=3且byQueueLen>0时才返回)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 1024, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//TPS实时过车数据上传
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TPS_REAL_TIME_INFO
{
public uint dwSize; // 结构体大小
public uint dwChan;//通道号
public NET_DVR_TIME_V30 struTime; //检测时间
public NET_DVR_TPS_PARAM struTPSRealTimeInfo;// 交通参数统计信息
public IntPtr pAddInfoBuffer;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
/*附加信息标识(即是否有NET_DVR_TPS_ADDINFO结构体),0-无附加信息, 1-有附加信息。*/
public byte byAddInfoFlag;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 15, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留
}
//统计信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TPS_LANE_PARAM
{
public byte byLane; // 对应车道号
public byte bySpeed; // 车道过车平均速度
public ushort wArrivalFlow; //到达流量
public uint dwLightVehicle; // 小型车数量
public uint dwMidVehicle; // 中型车数量
public uint dwHeavyVehicle; // 重型车数量
public uint dwTimeHeadway; // 车头时距,以秒计算
public uint dwSpaceHeadway; // 车头间距,以米来计算
public float fSpaceOccupyRation; // 空间占有率,百分比计算,浮点数*1000
public float fTimeOccupyRation; // 时间占有率,百分比计算,浮点数*1000
public byte byStoppingTimes; //平均停车次数
public byte byQueueLen; // 堵塞状态下排队长度(比如50米)
public byte byFlag; //上传标识,0-表示T1时间的统计结果,1-表示T2时间的统计
public byte byVehicelNum; //区域车辆数
public ushort wDelay; //平均延误
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留
public uint dwNonMotor; // 非机动车数量
}
// 交通参数统计信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TPS_STATISTICS_PARAM
{
public byte byStart; // 开始码
public byte byCMD; // 命令号, 08-定时成组数据指令
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 预留字节
public ushort wDeviceID; // 设备ID
public ushort wDataLen; // 数据长度
public byte byTotalLaneNum; // 有效车道总数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 15, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_TIME_V30 struStartTime; //统计开始时间
public uint dwSamplePeriod; //统计时间,单位秒
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_TPS_RULE, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_TPS_LANE_PARAM[] struLaneParam;
}
//TPS统计过车数据上传
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TPS_STATISTICS_INFO
{
public uint dwSize; // 结构体大小
public uint dwChan;//通道号
public NET_DVR_TPS_STATISTICS_PARAM struTPSStatisticsInfo;// 交通参数统计信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留
}
//交通事件信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_AID_INFO
{
public byte byRuleID; // 规则序号,为规则配置结构下标,0-16
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRuleName; // 规则名称
public uint dwAIDType; // 报警事件类型
public NET_DVR_DIRECTION struDirect; // 报警指向区域
public byte bySpeedLimit; //限速值,单位km/h[0,255]
public byte byCurrentSpeed; //当前速度值,单位km/h[0,255]
public byte byVehicleEnterState;//车辆出入状态 0-无效 1-驶入 2-驶出
public byte byState; //0-变化上传,1-轮巡上传
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byParkingID; //停车位编号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
}
//交通事件报警
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_AID_ALARM
{
public uint dwSize; // 结构长度
public uint dwRelativeTime; // 相对时标
public uint dwAbsTime; // 绝对时标
public NET_VCA_DEV_INFO struDevInfo; // 前端设备信息
public NET_DVR_AID_INFO struAIDInfo; // 交通事件信息
public uint dwPicDataLen; // 返回图片的长度 为0表示没有图片,大于0表示该结构后面紧跟图片数据
public IntPtr pImage; // 指向图片的指针
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
//车道队列结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LANE_QUEUE
{
public NET_VCA_POINT struHead; //队列头
public NET_VCA_POINT struTail; //队列尾
public uint dwLength; //实际队列长度 单位为米 [0-500]
}
public enum TRAFFIC_DATA_VARY_TYPE
{
NO_VARY, //无变化
VEHICLE_ENTER, //车辆进入虚拟线圈
VEHICLE_LEAVE, //车辆离开虚拟线圈
UEUE_VARY //队列变化
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LANE_PARAM
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRuleName; //车道规则名称
public byte byRuleID; //规则序号,为规则配置结构下标,0-7
public byte byVaryType; //车道交通参数变化类型 参照 TRAFFIC_DATA_VARY_TYPE
public byte byLaneType; //车道上行或下行
public byte byRes1;
public uint dwLaneVolume; //车道流量 ,统计有多少车子通过
public uint dwLaneVelocity; //车道速度,公里计算
public uint dwTimeHeadway; //车头时距,以秒计算
public uint dwSpaceHeadway; //车头间距,以米来计算
public float fSpaceOccupyRation; //车道占有率,百分比计算(空间上)
public NET_DVR_LANE_QUEUE struLaneQueue; //车道队列长度
public NET_VCA_POINT struRuleLocation; //线圈规则的中心点位置
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TPS_INFO
{
public uint dwLanNum; // 交通参数的车道数目
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_TPS_RULE, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_LANE_PARAM[] struLaneParam;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TPS_ALARM
{
public uint dwSize; //结构体大小
public uint dwRelativeTime; //相对时标
public uint dwAbsTime; //绝对时标
public NET_VCA_DEV_INFO struDevInfo; //前端设备信息
public NET_DVR_TPS_INFO struTPSInfo; //交通事件信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留字节
}
public enum TRAFFIC_DATA_VARY_TYPE_EX_ENUM
{
ENUM_TRAFFIC_VARY_NO = 0x00, //无变化
ENUM_TRAFFIC_VARY_VEHICLE_ENTER = 0x01, //车辆进入虚拟线圈
ENUM_TRAFFIC_VARY_VEHICLE_LEAVE = 0x02, //车辆离开虚拟线圈
ENUM_TRAFFIC_VARY_QUEUE = 0x04, //队列变化
ENUM_TRAFFIC_VARY_STATISTIC = 0x08, //统计数据变化(每分钟变化一次包括平均速度,车道空间/时间占有率,交通状态)
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LANE_PARAM_V41
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRuleName; // 车道规则名称
public byte byRuleID; // 规则序号,为规则配置结构下标,0-7
public byte byLaneType; // 车道上行或下行
public byte byTrafficState; // 车道的交通状态,0-无效,1-畅通,2-拥挤,3-堵塞
public byte byRes1; // 保留
public uint dwVaryType; // 车道交通参数变化类型参照 TRAFFIC_DATA_VARY_TYPE_EX_ENUM,按位区分
public uint dwTpsType; // 数据变化类型标志,表示当前上传的统计参数中,哪些数据有效,参照ITS_TPS_TYPE,按位区分
public uint dwLaneVolume; // 车道流量,统计有多少车子通过
public uint dwLaneVelocity; // 车道速度,公里计算
public uint dwTimeHeadway; // 车头时距,以秒计算
public uint dwSpaceHeadway; // 车头间距,以米来计算
public float fSpaceOccupyRation; // 车道占有率,百分比计算(空间上)
public float fTimeOccupyRation; // 时间占有率,百分比计算
public uint dwLightVehicle; // 小型车数量
public uint dwMidVehicle; // 中型车数量
public uint dwHeavyVehicle; // 重型车数量
public NET_DVR_LANE_QUEUE struLaneQueue; // 车道队列长度
public NET_VCA_POINT struRuleLocation; // 规则位置虚拟线圈的中心
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TPS_INFO_V41
{
public uint dwLanNum; // 交通参数的车道数目
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_TPS_RULE, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_LANE_PARAM_V41[] struLaneParam;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//人脸规则配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FACEDETECT_RULECFG
{
public uint dwSize; // 结构体大小
public byte byEnable; // 是否启用
public byte byEventType; //警戒事件类型, 0-异常人脸; 1-正常人脸;2-异常人脸&正常人脸;
public byte byUpLastAlarm; //2011-04-06 是否先上传最近一次的报警
public byte byUpFacePic; //是否上传人脸子图,0-否,1-是
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRuleName;
public NET_VCA_POLYGON struVcaPolygon; // 人脸检测规则区域
public byte byPicProType; //报警时图片处理方式 0-不处理 非0-上传
public byte bySensitivity; // 规则灵敏度
public ushort wDuration; // 触发人脸报警时间阈值
public NET_DVR_JPEGPARA struPictureParam; //图片规格结构
public NET_VCA_SIZE_FILTER struSizeFilter; //尺寸过滤器
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_2, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
public NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //处理方式
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byRelRecordChan; //报警触发的录象通道,为1表示触发该通道
public byte byPicRecordEnable; /*2012-3-1是否启用图片存储, 0-不启用, 1-启用*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 39, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FACE_PIPCFG
{
public byte byEnable; //是否开启画中画
public byte byBackChannel; //背景通道号(面板通道)
public byte byPosition; //叠加位置,0-左上,1-左下,2-右上,3-右下
public byte byPIPDiv; //分屏系数(人脸画面:面板画面),0-1:4,1-1:9,2-1:16
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FACEDETECT_RULECFG_V41
{
public uint dwSize; // 结构体大小
public byte byEnable; // 是否启用
public byte byEventType; //警戒事件类型, 0-异常人脸; 1-正常人脸;2-异常人脸&正常人脸;
public byte byUpLastAlarm; //2011-04-06 是否先上传最近一次的报警
public byte byUpFacePic; //是否上传人脸子图,0-否,1-是
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRuleName;
public NET_VCA_POLYGON struVcaPolygon; // 人脸检测规则区域
public byte byPicProType; //报警时图片处理方式 0-不处理 非0-上传
public byte bySensitivity; // 规则灵敏度
public ushort wDuration; // 触发人脸报警时间阈值
public NET_DVR_JPEGPARA struPictureParam; //图片规格结构
public NET_VCA_SIZE_FILTER struSizeFilter; //尺寸过滤器
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
public NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //处理方式
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byRelRecordChan; //报警触发的录象通道,为1表示触发该通道
public byte byPicRecordEnable; /*2012-10-22是否启用图片存储, 0-不启用, 1-启用*/
public byte byRes1;
public ushort wAlarmDelay; //2012-10-22智能报警延时,0-5s,1-10,2-30s,3-60s,4-120s,5-300s,6-600s
public NET_DVR_FACE_PIPCFG struFacePIP; //2012-11-7画中画参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 28, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FACEDETECT_ALARM
{
public uint dwSize; // 结构大小
public uint dwRelativeTime; // 相对时标
public uint dwAbsTime; // 绝对时标
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRuleName; // 规则名称
public NET_VCA_TARGET_INFO struTargetInfo; //报警目标信息
public NET_VCA_DEV_INFO struDevInfo; //前端设备信息
public uint dwPicDataLen; //返回图片的长度 为0表示没有图片,大于0表示该结构后面紧跟图片数据*/
public byte byAlarmPicType; // 0-异常人脸报警图片 1- 人脸图片,2-多张人脸
public byte byPanelChan; /*2012-3-1人脸通道关联的面板通道*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwFacePicDataLen; //人脸图片的长度 为0表示没有图片,大于0表示该结构后面紧跟图片数据*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 48, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
public IntPtr pFaceImage; //指向人脸图指针
public IntPtr pImage; //指向图片的指针
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_EVENT_PARAM_UNION
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.U4)]
public uint[] uLen; // 联合体大小为12字节
public uint dwHumanIn; //有无人接近 0 - 无人 1- 有人
public float fCrowdDensity; // 人员聚集值
}
//目前只有有人无人事件和人员聚集事件实时报警上传
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_EVENT_INFO
{
public byte byRuleID; // Rule ID
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRuleName; // 规则名称
public uint dwEventType; // 参照VCA_EVENT_TYPE
public NET_DVR_EVENT_PARAM_UNION uEventParam; //
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_EVENT_INFO_LIST
{
public byte byNum; // 事件实时信息个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RULE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_EVENT_INFO[] struEventInfo; // 事际实时信息
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_RULE_INFO_ALARM
{
public uint dwSize; // 结构体大小
public uint dwRelativeTime; // 相对时标
public uint dwAbsTime; // 绝对时标
public NET_VCA_DEV_INFO struDevInfo; // 前端设备信息
public NET_DVR_EVENT_INFO_LIST struEventInfoList; //事件信息列表
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
}
//单条场景时间段
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ONE_SCENE_TIME
{
public byte byActive; //0 -无效,1–有效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public uint dwSceneID; //场景ID
public NET_DVR_SCHEDTIME struEffectiveTime; //场景起效时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//场景起效时间段配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCENE_TIME_CFG
{
public uint dwSize; //结构大小
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_SCENE_TIMESEG_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_ONE_SCENE_TIME[] struSceneTime; //场景时间段数组
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//单条场景配置信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ONE_SCENE_CFG
{
public byte byEnable; //是否启用该场景,0-不启用 1- 启用
public byte byDirection; //监测方向 1-上行,2-下行,3-双向,4-由东向西,5-由南向北,6-由西向东,7-由北向南,8-其它
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public uint dwSceneID; //场景ID(只读), 0 - 表示该场景无效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] bySceneName; //场景名称
public NET_DVR_PTZPOS struPtzPos; //ptz 坐标
public uint dwTrackTime; //球机跟踪时间[5,300] 秒,TFS(交通取证)模式下有效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//场景配置结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCENE_CFG
{
public uint dwSize; //结构大小
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ITS_SCENE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_ONE_SCENE_CFG[] struSceneCfg; //场景配置信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//多场景操作条件
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCENE_COND
{
public uint dwSize; //结构大小
public Int32 lChannel; //通道号
public uint dwSceneID; //场景ID, 0-表示该场景无效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 48, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//取证方式
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FORENSICS_MODE
{
public uint dwSize; //结构大小
public byte byMode; // 0-手动取证 ,1-自动取证
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 23, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//报警场景信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCENE_INFO
{
public uint dwSceneID; //场景ID, 0 - 表示该场景无效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] bySceneName; //场景名称
public byte byDirection; //监测方向 1-上行,2-下行,3-双向,4-由东向西,5-由南向北,6-由西向东,7-由北向南,8-其它
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public NET_DVR_PTZPOS struPtzPos; //Ptz 坐标
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//交通事件报警(扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_AID_ALARM_V41
{
public uint dwSize; //结构长度
public uint dwRelativeTime; //相对时标
public uint dwAbsTime; //绝对时标
public NET_VCA_DEV_INFO struDevInfo; //前端设备信息
public NET_DVR_AID_INFO struAIDInfo; //交通事件信息
public NET_DVR_SCENE_INFO struSceneInfo; //场景信息
public uint dwPicDataLen; //图片长度
public IntPtr pImage; //指向图片的指针
// 0-数据直接上传; 1-云存储服务器URL(3.7Ver)原先的图片数据变成URL数据,图片长度变成URL长度
public byte byDataType;
public byte byLaneNo; //关联车道号
public ushort wMilliSecond; //时标毫秒
//监测点编号(路口编号、内部编号)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MONITORSITE_ID_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byMonitoringSiteID;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = DEVICE_ID_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byDeviceID;//设备编号
public uint dwXmlLen;//XML报警信息长度
public IntPtr pXmlBuf;// XML报警信息指针,其XML对应到EventNotificationAlert XML Block
public byte byTargetType;// 检测的目标类型,0~未知,1~行人、2~二轮车、3~三轮车(行人检测中返回)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 19, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
//交通统计信息报警(扩展)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TPS_ALARM_V41
{
public uint dwSize; // 结构体大小
public uint dwRelativeTime; // 相对时标
public uint dwAbsTime; // 绝对时标
public NET_VCA_DEV_INFO struDevInfo; // 前端设备信息
public NET_DVR_TPS_INFO_V41 struTPSInfo; // 交通参数统计信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VCA_VERSION
{
public ushort wMajorVersion; // 主版本号
public ushort wMinorVersion; // 次版本号
public ushort wRevisionNumber; // 修正号
public ushort wBuildNumber; // 编译号
public ushort wVersionYear; // 版本日期-年
public byte byVersionMonth; // 版本日期-月
public byte byVersionDay; // 版本日期-日
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
/*******************************智能交通事件 end*****************************************/
/******************************车牌识别 begin******************************************/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PLATE_PARAM
{
public byte byPlateRecoMode; //车牌识别的模式,默认为1(视频触发模式)
public byte byBelive; /*整牌置信度阈值, 只用于视频识别方式, 根据背景复杂程度设置, 误触发率高就设高, 漏车率高就设低,
* 建议在80-90范围内*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 22, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PLATECFG
{
public uint dwSize;
public uint dwEnable; /* 是否启用视频车牌识别 0-否 1-是 */
public byte byPicProType; //报警时图片处理方式 0-不处理 非0-上传
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
public NET_DVR_JPEGPARA struPictureParam; //图片规格结构
public NET_DVR_PLATE_PARAM struPlateParam; // 车牌识别参数配置
public NET_DVR_HANDLEEXCEPTION struHandleType; /* 处理方式 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM, ArraySubType = UnmanagedType.I1)]
public byte[] byRelRecordChan; //报警触发的录象通道,为1表示触发该通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
//车牌识别结果子结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PLATE_INFO
{
public byte byPlateType; //车牌类型
public byte byColor; //车牌颜色
public byte byBright; //车牌亮度
public byte byLicenseLen; //车牌字符个数
public byte byEntireBelieve;//整个车牌的置信度,0-100
public byte byRegion; // 区域索引值 0-保留,1-欧洲(EU),2-俄语区域(ER),3-欧洲&俄罗斯(EU&CIS) ,4-中东(ME),0xff-所有
public byte byCountry; // 国家索引值,参照枚举COUNTRY_INDEX(不支持"COUNTRY_ALL = 0xff, //ALL 全部")
public byte byArea; //区域(省份),各国家内部区域枚举,阿联酋参照 EMI_AREA
public byte byPlateSize; //车牌尺寸,0~未知,1~long, 2~short(中东车牌使用)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 15, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CATEGORY_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPlateCategory;//车牌附加信息, 即中东车牌中车牌号码旁边的小字信息,(目前只有中东地区支持)
public uint dwXmlLen; //XML报警信息长度
public IntPtr pXmlBuf; // XML报警信息指针,报警类型为 COMM_ITS_PLATE_RESUL时有效,其XML对应到EventNotificationAlert XML Block
public NET_VCA_RECT struPlateRect; //车牌位置
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_LICENSE_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sLicense; //车牌号码
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_LICENSE_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byBelieve; //各个识别字符的置信度,如检测到车牌"浙A12345", 置信度为,20,30,40,50,60,70,则表示"浙"字正确的可能性只有%,"A"字的正确的可能性是%
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PLATERECO_RESULE
{
public uint dwSize;
public uint dwRelativeTime; //相对时标
public uint dwAbsTime; //绝对时标
public NET_VCA_DEV_INFO struDevInfo; // 前段设备信息
public NET_DVR_PLATE_INFO struPlateInfo;
public uint dwPicDataLen; //返回图片的长度 为0表示没有图片,大于0表示该结构后面紧跟图片数据
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.U4)]
public uint[] dwRes; //保留,设置为0
public IntPtr pImage; //指向图片的指针
}
/******************************车牌识别 end******************************************/
/******************************抓拍机*******************************************/
//IO输入配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IO_INCFG
{
public uint dwSize;
public byte byIoInStatus;//输入的IO口状态,0-下降沿,1-上升沿,2-上升沿和下降沿,3-高电平,4-低电平
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留字节
}
//IO输出配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IO_OUTCFG
{
public uint dwSize;
public byte byDefaultStatus;//IO默认状态:0-低电平,1-高电平
public byte byIoOutStatus;//IO起效时状态:0-低电平,1-高电平,2-脉冲
public ushort wAheadTime;//输出IO提前时间,单位us
public uint dwTimePluse;//脉冲间隔时间,单位us
public uint dwTimeDelay;//IO有效持续时间,单位us
public byte byFreqMulti; //倍频,数值范围[1,15]
public byte byDutyRate; //占空比,[0,40%]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//闪光灯配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FLASH_OUTCFG
{
public uint dwSize;
public byte byMode;//闪光灯闪烁模式,0-不闪,1-闪,2-关联闪,3-轮闪
public byte byRelatedIoIn;//闪光灯关联的输入IO号(关联闪时此参数有效)
public byte byRecognizedLane; /*关联的IO号,按位表示,bit0表示IO1是否关联,0-不关联,1-关联*/
public byte byDetectBrightness;/*自动检测亮度使能闪光灯0-不检测;1-检测*/
public byte byBrightnessThreld;/*使能闪光灯亮度阈值,范围[0,100],高于阈值闪*/
public byte byStartHour; //开始时间-小时,取值范围0-23
public byte byStartMinute; //开始时间-分,取值范围0-59
public byte byEndHour; //结束时间-小时,取值范围0-23
public byte byEndMinute; //结束时间-分,取值范围0-59
public byte byFlashLightEnable; //设置闪光灯时间使能:0-关;1-开
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//红绿灯功能(2个IO输入一组)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LIGHTSNAPCFG
{
public uint dwSize;
public byte byLightIoIn;//红绿灯的IO 号
public byte byTrigIoIn;//触发的IO号
public byte byRelatedDriveWay;//触发IO关联的车道号
public byte byTrafficLight; //0-高电平红灯,低电平绿灯;1-高电平绿灯,低电平红灯
public byte bySnapTimes1; //红灯抓拍次数1,0-不抓拍,非0-连拍次数,最大5次
public byte bySnapTimes2; //绿灯抓拍次数2,0-不抓拍,非0-连拍次数,最大5次
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_INTERVAL_NUM, ArraySubType = UnmanagedType.U2)]
public ushort[] wIntervalTime1;//红灯连拍间隔时间,ms
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_INTERVAL_NUM, ArraySubType = UnmanagedType.U2)]
public ushort[] wIntervalTime2;//绿灯连拍间隔时间,ms
public byte byRecord;//闯红灯周期录像标志,0-不录像,1-录像
public byte bySessionTimeout;//闯红灯周期录像超时时间(秒)
public byte byPreRecordTime;//闯红灯录像片段预录时间(秒)
public byte byVideoDelay;//闯红灯录像片段延时时间(秒)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;//保留字节
}
//测速功能(2个IO输入一组)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MEASURESPEEDCFG
{
public uint dwSize;
public byte byTrigIo1; //测速第1线圈
public byte byTrigIo2; //测速第2线圈
public byte byRelatedDriveWay;//触发IO关联的车道号
public byte byTestSpeedTimeOut;//测速模式超时时间,单位s
public uint dwDistance;//线圈距离,cm
public byte byCapSpeed;//测速模式起拍速度,单位km/h
public byte bySpeedLimit;//限速值,单位km/h
public byte bySnapTimes1; //线圈1抓拍次数,0-不抓拍,非0-连拍次数,最大5次
public byte bySnapTimes2; //线圈2抓拍次数,0-不抓拍,非0-连拍次数,最大5次
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_INTERVAL_NUM, ArraySubType = UnmanagedType.U2)]
public ushort[] wIntervalTime1;//线圈1连拍间隔时间,ms
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_INTERVAL_NUM, ArraySubType = UnmanagedType.U2)]
public ushort[] wIntervalTime2;//线圈2连拍间隔时间,ms
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留字节
}
//视频参数配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VIDEOEFFECT
{
public byte byBrightnessLevel; /*0-100*/
public byte byContrastLevel; /*0-100*/
public byte bySharpnessLevel; /*0-100*/
public byte bySaturationLevel; /*0-100*/
public byte byHueLevel; /*0-100,(保留)*/
public byte byEnableFunc; //使能,按位表示,bit0-SMART IR(防过曝),bit1-低照度,bit2-强光抑制使能,0-否,1-是
public byte byLightInhibitLevel; //强光抑制等级,[1-3]表示等级
public byte byGrayLevel; //灰度值域,0-[0-255],1-[16-235]
}
//增益配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_GAIN
{
public byte byGainLevel; /*增益:0-100*/
public byte byGainUserSet; /*用户自定义增益;0-100,对于抓拍机,是CCD模式下的抓拍增益*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public uint dwMaxGainValue;/*最大增益值,单位dB*/
}
//白平衡配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_WHITEBALANCE
{
public byte byWhiteBalanceMode; /*0-手动白平衡(MWB),1-自动白平衡1(AWB1),2-自动白平衡2 (AWB2),3-自动控制改名为锁定白平衡(Locked WB),
4-室外(Indoor),5-室内(Outdoor)6-日光灯(Fluorescent Lamp),7-钠灯(Sodium Lamp),
8-自动跟踪(Auto-Track)9-一次白平衡(One Push),10-室外自动(Auto-Outdoor),
11-钠灯自动 (Auto-Sodiumlight),12-水银灯(Mercury Lamp),13-自动白平衡(Auto),
14-白炽灯 (IncandescentLamp),15-暖光灯(Warm Light Lamp),16-自然光(Natural Light) */
public byte byWhiteBalanceModeRGain; /*手动白平衡时有效,手动白平衡 R增益*/
public byte byWhiteBalanceModeBGain; /*手动白平衡时有效,手动白平衡 B增益*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//曝光控制
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_EXPOSURE
{
public byte byExposureMode; /*0 手动曝光 1自动曝光*/
public byte byAutoApertureLevel; /* 自动光圈灵敏度, 0-10 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public uint dwVideoExposureSet; /* 自定义视频曝光时间(单位us)*//*注:自动曝光时该值为曝光最慢值 新增20-1s(1000000us)*/
public uint dwExposureUserSet; /* 自定义曝光时间,在抓拍机上应用时,CCD模式时是抓拍快门速度*/
public uint dwRes;
}
//宽动态配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_WDR
{
public byte byWDREnabled; /*宽动态:0 dsibale 1 enable 2 auto*/
public byte byWDRLevel1; /*0-F*/
public byte byWDRLevel2; /*0-F*/
public byte byWDRContrastLevel; /*0-100*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//日夜转换功能配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DAYNIGHT
{
public byte byDayNightFilterType; /*日夜切换:0-白天,1-夜晚,2-自动,3-定时,4-报警输入触发*/
public byte bySwitchScheduleEnabled; /*0 dsibale 1 enable,(保留)*/
//定时模式参数
public byte byBeginTime; /*开始时间(小时),0-23*/
public byte byEndTime; /*结束时间(小时),0-23*/
//模式2
public byte byDayToNightFilterLevel; //0-7
public byte byNightToDayFilterLevel; //0-7
public byte byDayNightFilterTime;//(60秒)
//定时模式参数
public byte byBeginTimeMin; //开始时间(分),0-59
public byte byBeginTimeSec; //开始时间(秒),0-59
public byte byEndTimeMin; //结束时间(分),0-59
public byte byEndTimeSec; //结束时间(秒),0-59
//报警输入触发模式参数
public byte byAlarmTrigState; //报警输入触发状态,0-白天,1-夜晚
}
//Gamma校正
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_GAMMACORRECT
{
public byte byGammaCorrectionEnabled; /*0 dsibale 1 enable*/
public byte byGammaCorrectionLevel; /*0-100*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//背光补偿配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_BACKLIGHT
{
public byte byBacklightMode; /*背光补偿:0 off 1 UP、2 DOWN、3 LEFT、4 RIGHT、5MIDDLE、6自定义*/
public byte byBacklightLevel; /*0x0-0xF*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwPositionX1; //(X坐标1)
public uint dwPositionY1; //(Y坐标1)
public uint dwPositionX2; //(X坐标2)
public uint dwPositionY2; //(Y坐标2)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//数字降噪功能
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_NOISEREMOVE
{
public byte byDigitalNoiseRemoveEnable; /*0-不启用,1-普通模式数字降噪,2-专家模式数字降噪*/
public byte byDigitalNoiseRemoveLevel; /*普通模式数字降噪级别:0x0-0xF*/
public byte bySpectralLevel; /*专家模式下空域强度:0-100*/
public byte byTemporalLevel; /*专家模式下时域强度:0-100*/
public byte byDigitalNoiseRemove2DEnable; /* 抓拍帧2D降噪,0-不启用,1-启用 */
public byte byDigitalNoiseRemove2DLevel; /* 抓拍帧2D降噪级别,0-100 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//CMOS模式下前端镜头配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CMOSMODECFG
{
public byte byCaptureMod; //抓拍模式:0-抓拍模式1;1-抓拍模式2
public byte byBrightnessGate;//亮度阈值
public byte byCaptureGain1; //抓拍增益1,0-100
public byte byCaptureGain2; //抓拍增益2,0-100
public uint dwCaptureShutterSpeed1;//抓拍快门速度1
public uint dwCaptureShutterSpeed2;//抓拍快门速度2
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//前端参数配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CAMERAPARAMCFG
{
public uint dwSize;
public NET_DVR_VIDEOEFFECT struVideoEffect;/*亮度、对比度、饱和度、锐度、色调配置*/
public NET_DVR_GAIN struGain;/*自动增益*/
public NET_DVR_WHITEBALANCE struWhiteBalance;/*白平衡*/
public NET_DVR_EXPOSURE struExposure; /*曝光控制*/
public NET_DVR_GAMMACORRECT struGammaCorrect;/*Gamma校正*/
public NET_DVR_WDR struWdr;/*宽动态*/
public NET_DVR_DAYNIGHT struDayNight;/*日夜转换*/
public NET_DVR_BACKLIGHT struBackLight;/*背光补偿*/
public NET_DVR_NOISEREMOVE struNoiseRemove;/*数字降噪*/
public byte byPowerLineFrequencyMode; /*0-50HZ; 1-60HZ*/
public byte byIrisMode; /*0 自动光圈 1手动光圈*/
public byte byMirror; /* 镜像:0 off,1- leftright,2- updown,3-center */
public byte byDigitalZoom; /*数字缩放:0 dsibale 1 enable*/
public byte byDeadPixelDetect; /*坏点检测,0 dsibale 1 enable*/
public byte byBlackPwl;/*黑电平补偿 , 0-255*/
public byte byEptzGate;// EPTZ开关变量:0-不启用电子云台,1-启用电子云台
public byte byLocalOutputGate;//本地输出开关变量0-本地输出关闭1-本地BNC输出打开 2-HDMI输出关闭
//20-HDMI_720P50输出开
//21-HDMI_720P60输出开
//22-HDMI_1080I60输出开
//23-HDMI_1080I50输出开
//24-HDMI_1080P24输出开
//25-HDMI_1080P25输出开
//26-HDMI_1080P30输出开
//27-HDMI_1080P50输出开
//28-HDMI_1080P60输出开
//40-SDI_720P50,
//41-SDI_720P60,
//42-SDI_1080I50,
//43-SDI_1080I60,
//44-SDI_1080P24,
//45-SDI_1080P25,
//46-SDI_1080P30,
//47-SDI_1080P50,
//48-SDI_1080P60
public byte byCoderOutputMode;//编码器fpga输出模式0直通3像素搬家
public byte byLineCoding; //是否开启行编码:0-否,1-是
public byte byDimmerMode; //调光模式:0-半自动,1-自动
public byte byPaletteMode; //调色板:0-白热,1-黑热,2-调色板2,…,8-调色板8
public byte byEnhancedMode; //增强方式(探测物体周边):0-不增强,1-1,2-2,3-3,4-4
public byte byDynamicContrastEN; //动态对比度增强 0-1
public byte byDynamicContrast; //动态对比度 0-100
public byte byJPEGQuality; //JPEG图像质量 0-100
public NET_DVR_CMOSMODECFG struCmosModeCfg;//CMOS模式下前端参数配置,镜头模式从能力集获取
public byte byFilterSwitch; //滤波开关:0-不启用,1-启用
public byte byFocusSpeed; //镜头调焦速度:0-10
public byte byAutoCompensationInterval; //定时自动快门补偿:1-120,单位:分钟
public byte bySceneMode; //场景模式:0-室外,1-室内,2-默认,3-弱光
}
//透雾
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DEFOGCFG
{
public byte byMode; //模式,0-不启用,1-自动模式,2-常开模式
public byte byLevel; //等级,0-100
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//电子防抖
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ELECTRONICSTABILIZATION
{
public byte byEnable;//使能 0- 不启用,1- 启用
public byte byLevel; //等级,0-100
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//走廊模式
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CORRIDOR_MODE_CCD
{
public byte byEnableCorridorMode; //是否启用走廊模式 0~不启用, 1~启用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 11, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//SMART IR(防过曝)配置参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SMARTIR_PARAM
{
public byte byMode;//0~手动,1~自动
public byte byIRDistance;//红外距离等级(等级,距离正比例)level:1~100 默认:50(手动模式下增加)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//在byIrisMode 为P-Iris1时生效,配置红外光圈大小等级,配置模式
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PIRIS_PARAM
{
public byte byMode;//0-自动,1-手动
public byte byPIrisAperture;//红外光圈大小等级(等级,光圈大小正比例)level:1~100 默认:50(手动模式下增加)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//前端参数配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CAMERAPARAMCFG_EX
{
public uint dwSize;
public NET_DVR_VIDEOEFFECT struVideoEffect;/*亮度、对比度、饱和度、锐度、色调配置*/
public NET_DVR_GAIN struGain;/*自动增益*/
public NET_DVR_WHITEBALANCE struWhiteBalance;/*白平衡*/
public NET_DVR_EXPOSURE struExposure; /*曝光控制*/
public NET_DVR_GAMMACORRECT struGammaCorrect;/*Gamma校正*/
public NET_DVR_WDR struWdr;/*宽动态*/
public NET_DVR_DAYNIGHT struDayNight;/*日夜转换*/
public NET_DVR_BACKLIGHT struBackLight;/*背光补偿*/
public NET_DVR_NOISEREMOVE struNoiseRemove;/*数字降噪*/
public byte byPowerLineFrequencyMode; /*0-50HZ; 1-60HZ*/
public byte byIrisMode; /*0-自动光圈 1-手动光圈, 2-P-Iris1*/
public byte byMirror; /* 镜像:0 off,1- leftright,2- updown,3-center */
public byte byDigitalZoom; /*数字缩放:0 dsibale 1 enable*/
public byte byDeadPixelDetect; /*坏点检测,0 dsibale 1 enable*/
public byte byBlackPwl;/*黑电平补偿 , 0-255*/
public byte byEptzGate;// EPTZ开关变量:0-不启用电子云台,1-启用电子云台
public byte byLocalOutputGate;//本地输出开关变量0-本地输出关闭1-本地BNC输出打开 2-HDMI输出关闭
//20-HDMI_720P50输出开
//21-HDMI_720P60输出开
//22-HDMI_1080I60输出开
//23-HDMI_1080I50输出开
//24-HDMI_1080P24输出开
//25-HDMI_1080P25输出开
//26-HDMI_1080P30输出开
//27-HDMI_1080P50输出开
//28-HDMI_1080P60输出开
public byte byCoderOutputMode;//编码器fpga输出模式0直通3像素搬家
public byte byLineCoding; //是否开启行编码:0-否,1-是
public byte byDimmerMode; //调光模式:0-半自动,1-自动
public byte byPaletteMode; //调色板:0-白热,1-黑热,2-调色板2,…,8-调色板8
public byte byEnhancedMode; //增强方式(探测物体周边):0-不增强,1-1,2-2,3-3,4-4
public byte byDynamicContrastEN; //动态对比度增强 0-1
public byte byDynamicContrast; //动态对比度 0-100
public byte byJPEGQuality; //JPEG图像质量 0-100
public NET_DVR_CMOSMODECFG struCmosModeCfg;//CMOS模式下前端参数配置,镜头模式从能力集获取
public byte byFilterSwitch; //滤波开关:0-不启用,1-启用
public byte byFocusSpeed; //镜头调焦速度:0-10
public byte byAutoCompensationInterval; //定时自动快门补偿:1-120,单位:分钟
public byte bySceneMode; //场景模式:0-室外,1-室内,2-默认,3-弱光
public NET_DVR_DEFOGCFG struDefogCfg;//透雾参数
public NET_DVR_ELECTRONICSTABILIZATION struElectronicStabilization;//电子防抖
public NET_DVR_CORRIDOR_MODE_CCD struCorridorMode;//走廊模式
public byte byExposureSegmentEnable; //0~不启用,1~启用 曝光时间和增益呈阶梯状调整,比如曝光往上调整时,先提高曝光时间到中间值,然后提高增益到中间值,再提高曝光到最大值,最后提高增益到最大值
public byte byBrightCompensate;//亮度增强 [0~100]
/*0-关闭、1-640*480@25fps、2-640*480@30ps、3-704*576@25fps、4-704*480@30fps、5-1280*720@25fps、6-1280*720@30fps、
* 7-1280*720@50fps、8-1280*720@60fps、9-1280*960@15fps、10-1280*960@25fps、11-1280*960@30fps、
* 12-1280*1024@25fps、13--1280*1024@30fps、14-1600*900@15fps、15-1600*1200@15fps、16-1920*1080@15fps、
* 17-1920*1080@25fps、18-1920*1080@30fps、19-1920*1080@50fps、20-1920*1080@60fps、21-2048*1536@15fps、22-2048*1536@20fps、
* 23-2048*1536@24fps、24-2048*1536@25fps、25-2048*1536@30fps、26-2560*2048@25fps、27-2560*2048@30fps、
* 28-2560*1920@7.5fps、29-3072*2048@25fps、30-3072*2048@30fps、31-2048*1536@12.5、32-2560*1920@6.25、
* 33-1600*1200@25、34-1600*1200@30、35-1600*1200@12.5、36-1600*900@12.5、37-1600@900@15、38-800*600@25、39-800*600@30*/
public byte byCaptureModeN; //视频输入模式(N制)
public byte byCaptureModeP; //视频输入模式(P制)
public NET_DVR_SMARTIR_PARAM struSmartIRParam; //红外放过爆配置信息
public NET_DVR_PIRIS_PARAM struPIrisParam;//PIris配置信息对应byIrisMode字段从2-PIris1开始生效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 296, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
}
//车牌颜色
public enum VCA_PLATE_COLOR
{
VCA_BLUE_PLATE = 0,//蓝色车牌
VCA_YELLOW_PLATE,//黄色车牌
VCA_WHITE_PLATE,//白色车牌
VCA_BLACK_PLATE,//黑色车牌
VCA_GREEN_PLATE //绿色车牌
}
//车牌类型
public enum VCA_PLATE_TYPE
{
VCA_STANDARD92_PLATE = 0,//标准民用车与军车
VCA_STANDARD02_PLATE,//02式民用车牌
VCA_WJPOLICE_PLATE,//武警车
VCA_JINGCHE_PLATE,//警车
STANDARD92_BACK_PLATE,//民用车双行尾牌
VCA_SHIGUAN_PLATE, //使馆车牌
VCA_NONGYONG_PLATE, //农用车
VCA_MOTO_PLATE //摩托车
}
public enum VLR_VEHICLE_CLASS
{
VLR_OTHER = 0, //其它
VLR_VOLKSWAGEN = 1, //大众
VLR_BUICK = 2, //别克
VLR_BMW = 3, //宝马
VLR_HONDA = 4, //本田
VLR_PEUGEOT = 5, //标致
VLR_TOYOTA = 6, //丰田
VLR_FORD = 7, //福特
VLR_NISSAN = 8, //日产
VLR_AUDI = 9, //奥迪
VLR_MAZDA = 10, //马自达
VLR_CHEVROLET = 11, //雪佛兰
VLR_CITROEN = 12, //雪铁龙
VLR_HYUNDAI = 13, //现代
VLR_CHERY = 14 //奇瑞
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VEHICLE_INFO
{
public uint dwIndex;
public byte byVehicleType;
public byte byColorDepth;
public byte byColor;
public byte byRadarState;
public ushort wSpeed;
public ushort wLength;
public byte byIllegalType;
public byte byVehicleLogoRecog; //参考枚举类型 VLR_VEHICLE_CLASS
public byte byVehicleSubLogoRecog; //车辆品牌子类型识别;参考VSB_VOLKSWAGEN_CLASS等子类型枚举。
public byte byVehicleModel; //车辆子品牌年款,0-未知,参考"车辆子品牌年款.xlsx"
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byCustomInfo; //自定义信息
public ushort wVehicleLogoRecog; //车辆主品牌,参考"车辆主品牌.xlsx" (该字段兼容byVehicleLogoRecog);
public byte byIsParking;//是否停车 0-无效,1-停车,2-未停车
public byte byRes;//保留字节
public uint dwParkingTime; //停车时间,单位:s
public byte byBelieve; //byIllegalType置信度,1-100
public byte byCurrentWorkerNumber;//当前作业人数
public byte byCurrentGoodsLoadingRate;//当前货物装载率 0-空 1-少 2-中 3-多 4-满
public byte byDoorsStatus;//车门状态 0-车门关闭 1-车门开启
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3;
public void Init()
{
byCustomInfo = new byte[16];
byRes3 = new byte[4];
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PLATE_RESULT
{
public uint dwSize;
public byte byResultType;
public byte byChanIndex;
public ushort wAlarmRecordID; //报警录像ID(用于查询录像,仅当byResultType为2时有效)
public uint dwRelativeTime;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byAbsTime;
public uint dwPicLen;
public uint dwPicPlateLen;
public uint dwVideoLen;
public byte byTrafficLight;
public byte byPicNum;
public byte byDriveChan;
public byte byVehicleType; //0- 未知,1- 客车,2- 货车,3- 轿车,4- 面包车,5- 小货车
public uint dwBinPicLen;
public uint dwCarPicLen;
public uint dwFarCarPicLen;
public IntPtr pBuffer3;
public IntPtr pBuffer4;
public IntPtr pBuffer5;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3;
public NET_DVR_PLATE_INFO struPlateInfo;
public NET_DVR_VEHICLE_INFO struVehicleInfo;
public IntPtr pBuffer1;
public IntPtr pBuffer2;
public void Init()
{
byAbsTime = new byte[32];
byRes3 = new byte[8];
}
}
//图像叠加信息配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IMAGEOVERLAYCFG
{
public uint dwSize;
public byte byOverlayInfo;//叠加使能开关,0-不叠加,1-叠加
public byte byOverlayMonitorInfo;//是否叠加监测点信息,0-不叠加,1-叠加
public byte byOverlayTime;//是否叠加时间,0-不叠加,1-叠加
public byte byOverlaySpeed;//是否叠加速度,0-不叠加,1-叠加
public byte byOverlaySpeeding;//是否叠加超速比例,0-不叠加,1-叠加
public byte byOverlayLimitFlag;//是否叠加限速标志,0-不叠加,1-叠加
public byte byOverlayPlate;//是否叠加车牌号,0-不叠加,1-叠加
public byte byOverlayColor;//是否叠加车身颜色,0-不叠加,1-叠加
public byte byOverlayLength;//是否叠加车长,0-不叠加,1-叠加
public byte byOverlayType;//是否叠加车型,0-不叠加,1-叠加
public byte byOverlayColorDepth;//是否叠加车身颜色深浅,0-不叠加,1-叠加
public byte byOverlayDriveChan;//是否叠加车道,0-不叠加,1-叠加
public byte byOverlayMilliSec; //叠加毫秒信息 0-不叠加,1-叠加
public byte byOverlayIllegalInfo; //叠加违章信息 0-不叠加,1-叠加
public byte byOverlayRedOnTime; //叠加红灯已亮时间 0-不叠加,1-叠加
public byte byFarAddPlateJpeg; //远景图是否叠加车牌截图,0-不叠加,1-叠加
public byte byNearAddPlateJpeg; //近景图是否叠加车牌截图,0-不叠加,1-叠加
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byMonitorInfo1; //监测点信息1
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 44, ArraySubType = UnmanagedType.I1)]
public byte[] byMonitorInfo2; //检测点信息2
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 52, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SNAPCFG
{
public uint dwSize;
public byte byRelatedDriveWay;
public byte bySnapTimes;
public ushort wSnapWaitTime;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_INTERVAL_NUM, ArraySubType = UnmanagedType.U2)]
public ushort[] wIntervalTime;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
public enum ITC_MAINMODE_ABILITY
{
ITC_MODE_UNKNOW = 0x0, //无
ITC_POST_MODE = 0x1, //卡口模式
ITC_EPOLICE_MODE = 0x2, //电警模式
ITC_POSTEPOLICE_MODE = 0x4 //卡式电警模式
}
public enum ITC_RECOG_REGION_TYPE
{
ITC_REGION_RECT = 0x0, //矩形
ITC_REGION_POLYGON = 0x1, //多边形
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SNAP_ABILITY
{
public uint dwSize;
public byte byIoInNum;//IO输入口数
public byte byIoOutNum;//IO输出口数
public byte bySingleSnapNum;//单IO触发组数
public byte byLightModeArrayNum;//红绿灯模式组数
public byte byMeasureModeArrayNum;//测速模式组数
public byte byPlateEnable; //车牌识别能力
public byte byLensMode;//镜头模式0-CCD,1-CMOS
public byte byPreTriggerSupport; //是否支持原触发模式,0-支持,1-不支持
public uint dwAbilityType; //支持的触发模式能力,按位表示,定义见ITC_MAINMODE_ABILITY
public byte byIoSpeedGroup; //支持的IO测速组数
public byte byIoLightGroup; //支持的IO红绿灯组数
public byte byRecogRegionType; //牌识区域支持的类型,详见定义ITC_RECOG_REGION_TYPE
public byte bySupport; //设备能力,按位表示,0-不支持,1-支持
// bySupport&0x1,表示是否支持扩展的字符叠加配置
// bySupport&0x2,表示是否支持扩展的校时配置结构
// bySupport&0x4, 表示是否支持多网卡(多网隔离)
// bySupport&0x8, 表示是否支持网卡的bonding功能(网络容错)
// bySupport&0x10, 表示是否支持语音对讲
//2013-07-09 能力集返回
public ushort wSupportMultiRadar;// 设备能力,按位表示,0-不支持,1-支持
// wSupportMultiRadar&0x1,表示 卡口RS485雷达 支持车道关联雷达处理
// wSupportMultiRadar&0x2,表示 卡口虚拟线圈 支持车道关联雷达处理
// wSupportMultiRadar&0x4,表示 混行卡口 支持车道关联雷达处理
// wSupportMultiRadar&0x8,表示 视频检测 支持车道关联雷达处理
public byte byICRPresetNum;
// 表示支持的ICR预置点(滤光片偏移点)数
public byte byICRTimeSlot;//表示支持的ICR的时间段数(1~8)
public byte bySupportRS485Num;//表示支持的RS485口的数量
public byte byExpandRs485SupportSensor;// 设备能力,按位表示,0-不支持,1-支持
// byExpandRs485SupportSensor &0x1,表示电警车检器支持车检器
// byExpandRs485SupportSensor &0x2,表示卡式电警车检器支持车检器
public byte byExpandRs485SupportSignalLampDet;// 设备能力,按位表示,0-不支持,1-支持
// byExpandRs485SupportSignalLampDet &0x1,表示电警车检器支持外接信号灯检测器
// byExpandRs485SupportSignalLampDet &0x2,表示卡式电警车检器支持外接信号灯检测器
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 13, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_ITC_ICRTIMECFG
{
public NET_DVR_SCHEDTIME struTime;
public byte byAssociateRresetNo;//预置点号1~8 , 0代表无
public byte bySubSwitchMode;//1~白天,2~晚上 (当预置点等于0 的时候生效)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 10, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_ITC_ICR_TIMESWITCH_PARAM
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_ITC_ICRTIMECFG[] struAutoCtrlTime;//自动切换时间段 (自动切换下 时空下生效 现在支持4组,预留4组)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ICR_NUM, ArraySubType = UnmanagedType.I1)]
public byte[] byICRPreset; //实际生效根据能力集动态显示 [0~100] 数组下标表示预置点号1~8 (0~7 相对应)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_ITC_ICR_MANUALSWITCH_PARAM
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ICR_NUM, ArraySubType = UnmanagedType.I1)]
public byte[] byICRPreset; //实际生效根据能力集动态显示 [0~100]
public byte bySubSwitchMode;//1~白天,2~晚上
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 147, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_ITC_ICR_AOTOSWITCH_PARAM
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ICR_NUM, ArraySubType = UnmanagedType.I1)]
public byte[] byICRPreset; //实际生效根据能力集动态显示 [0~100] 数组下标表示预置点号1~8 (0~7 相对应)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 148, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_ITC_ICR_PARAM_UNION
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 156, ArraySubType = UnmanagedType.I1)]
public byte[] uLen;
public NET_ITC_ICR_AOTOSWITCH_PARAM struICRAutoSwitch;
public NET_ITC_ICR_MANUALSWITCH_PARAM struICRManualSwitch;
public NET_ITC_ICR_TIMESWITCH_PARAM struICRTimeSwitch;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_ITC_ICRCFG
{
public uint dwSize;
public byte bySwitchType;//1~自动切换,2~手动切换 ,3~定时切换
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public NET_ITC_ICR_PARAM_UNION uICRParam;
}
//2013-07-09 异常处理
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_ITC_HANDLEEXCEPTION
{
public uint dwHandleType; //异常处理,异常处理方式的"或"结果
/*0x00: 无响应*/
/*0x01: 监视器上警告*/
/*0x02: 声音警告*/
/*0x04: 上传中心*/
/*0x08: 触发报警输出(继电器输出)*/
/*0x10: 触发JPRG抓图并上传Email*/
/*0x20: 无线声光报警器联动*/
/*0x40: 联动电子地图(目前只有PCNVR支持)*/
/*0x200: 抓图并上传FTP*/
public byte byEnable; //0~不启用,1~启用
public byte byRes;
public ushort wDuration;//持续时间(单位/s)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ITC_EXCEPTIONOUT, ArraySubType = UnmanagedType.I1)]
public byte[] byAlarmOutTriggered;//触发输出通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_ITC_EXCEPTION
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_EXCEPTIONNUM_V30, ArraySubType = UnmanagedType.Struct)]
public NET_ITC_HANDLEEXCEPTION[] struSnapExceptionType;
//数组的每个元素都表示一种异常,数组0- 硬盘出错,1-网线断,2-IP 地址冲突, 3-车检器异常, 4-信号灯检测器异常
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TRIGCOORDINATE
{
public ushort wTopLeftX; /*线圈左上角横坐标(2个字节)*/
public ushort wTopLeftY; /*线圈左上角纵坐标(2个字节)*/
public ushort wWdith; /*线圈宽度(2个字节)*/
public ushort wHeight; /*线圈高度(2个字节)*/
}
public enum PROVINCE_CITY_IDX
{
ANHUI_PROVINCE = 0, //安徽
AOMEN_PROVINCE = 1, //澳门
BEIJING_PROVINCE = 2, //北京
CHONGQING_PROVINCE = 3, //重庆
FUJIAN_PROVINCE = 4, //福建
GANSU_PROVINCE = 5, //甘肃
GUANGDONG_PROVINCE = 6, //广东
GUANGXI_PROVINCE = 7, //广西
GUIZHOU_PROVINCE = 8, //贵州
HAINAN_PROVINCE = 9, //海南
HEBEI_PROVINCE = 10, //河北
HENAN_PROVINCE = 11, //河南
HEILONGJIANG_PROVINCE = 12, //黑龙江
HUBEI_PROVINCE = 13, //湖北
HUNAN_PROVINCE = 14, //湖南
JILIN_PROVINCE = 15, //吉林
JIANGSU_PROVINCE = 16, //江苏
JIANGXI_PROVINCE = 17, //江西
LIAONING_PROVINCE = 18, //辽宁
NEIMENGGU_PROVINCE = 19, //内蒙古
NINGXIA_PROVINCE = 20, //宁夏
QINGHAI_PROVINCE = 21, //青海
SHANDONG_PROVINCE = 22, //山东
SHANXI_JIN_PROVINCE = 23, //山西
SHANXI_SHAN_PROVINCE = 24, //陕西
SHANGHAI_PROVINCE = 25, //上海
SICHUAN_PROVINCE = 26, //四川
TAIWAN_PROVINCE = 27, //台湾
TIANJIN_PROVINCE = 28, //天津
XIZANG_PROVINCE = 29, //西藏
XIANGGANG_PROVINCE = 30, //香港
XINJIANG_PROVINCE = 31, //新疆
YUNNAN_PROVINCE = 32, //云南
ZHEJIANG_PROVINCE = 33 //浙江
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_GEOGLOCATION
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.U4)]
public int[] iRes; /*保留*/
public uint dwCity; /*城市,详见PROVINCE_CITY_IDX */
}
//场景模式
public enum SCENE_MODE
{
UNKOWN_SCENE_MODE = 0, //未知场景模式
HIGHWAY_SCENE_MODE = 1, //高速场景模式
SUBURBAN_SCENE_MODE = 2, //郊区场景模式(保留)
URBAN_SCENE_MODE = 3, //市区场景模式
TUNNEL_SCENE_MODE = 4 //隧道场景模式(保留)
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VTPARAM
{
public uint dwSize;
public byte byEnable; /* 是否使能虚拟线圈,0-不使用,1-使用*/
public byte byIsDisplay; /* 是否显示虚拟线圈,0-不显示,1-显示*/
public byte byLoopPos; //晚间触发线圈的偏向:0-向上,1-向下
public byte bySnapGain; /*抓拍增益*/
public uint dwSnapShutter; /*抓拍快门速度*/
public NET_DVR_TRIGCOORDINATE struTrigCoordinate; //保留
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_VL_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_TRIGCOORDINATE[] struRes;
public byte byTotalLaneNum;/*视频触发的车道数1*/
public byte byPolarLenType; /*偏振镜类型,0:不加偏振镜;1:加施耐德偏振镜。*/
public byte byDayAuxLightMode; /*白天辅助照明模式,0:无辅助照明;1:LED灯照明;2:闪光灯照明*/
public byte byLoopToCalRoadBright; /*用以计算路面亮度的车道(虚拟线圈)*/
public byte byRoadGrayLowTh; /*路面亮度低阈值初始化值1*/
public byte byRoadGrayHighTh; /*路面亮度高阈值初始化值140*/
public ushort wLoopPosBias; /*晚间触发线圈位移30*/
public uint dwHfrShtterInitValue; /*连续图像曝光时间的初始值2000*/
public uint dwSnapShtterInitValue; /*抓拍图像曝光时间的初始值500*/
public uint dwHfrShtterMaxValue; /*连续图像曝光时间的最大值20000*/
public uint dwSnapShtterMaxValue; /*抓拍图像曝光时间的最大值1500*/
public uint dwHfrShtterNightValue; /*晚间连续图像曝光时间的设置值3000*/
public uint dwSnapShtterNightMinValue; /*晚间抓拍图像曝光时间的最小值3000*/
public uint dwSnapShtterNightMaxValue; /*晚间抓拍图像曝光时间的最大值5000*/
public uint dwInitAfe; /*增益的初始值200*/
public uint dwMaxAfe; /*增益的最大值400*/
public ushort wResolutionX;/* 设备当前分辨率宽*/
public ushort wResolutionY;/* 设备当前分辨率高*/
public uint dwGainNightValue; /*晚间增益,默认值70*/
public uint dwSceneMode; /*场景模式, 详见SCENE_MODE */
public uint dwRecordMode; /*录像标志:0-不录像,1-录像*/
public NET_DVR_GEOGLOCATION struGeogLocation; /*地址位置*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_VL_NUM, ArraySubType = UnmanagedType.I1)]
public byte[] byTrigFlag; /*触发标志,0-车头触发;1-车尾触发;2-车头/车尾都触发*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_VL_NUM, ArraySubType = UnmanagedType.I1)]
public byte[] byTrigSensitive; /*触发灵敏度,1-100*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 62, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SNAPENABLECFG
{
public uint dwSize;
public byte byPlateEnable;//是否支持车牌识别,0-不支持,1-支持
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public byte byFrameFlip; //图像是否翻转 0-不翻转,1-翻转
public ushort wFlipAngle; //图像翻转角度 0,90,180,270
public ushort wLightPhase; //相位,取值范围[0, 360]
public byte byLightSyncPower; //是否信号灯电源同步,0-不同步;1-同步
public byte byFrequency; //信号频率
public byte byUploadSDEnable; //是否自动上传SD图片,0-否;1-是
public byte byPlateMode; //识别模式参数:0-视频触发,1-外部触发
public byte byUploadInfoFTP; //是否上传抓拍附加信息到FTP,0-否,1-是
public byte byAutoFormatSD; //是否自动格式化SD卡,0-否,1-是
public ushort wJpegPicSize; //Jpeg图片大小[64-8196]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 56, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
/*ftp上传参数*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FTPCFG
{
public uint dwSize;
public uint dwEnableFTP; /*是否启动ftp上传功能*/
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sFTPIP; /*ftp 服务器*/
public uint dwFTPPort; /*ftp端口*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName; /*用户名*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword; /*密码*/
public uint dwDirLevel; /*0 = 不使用目录结构,直接保存在根目录,1 = 使用1级目录,2=使用2级目录*/
public ushort wTopDirMode; /* 一级目录,0x1 = 使用设备名,0x2 = 使用设备号,0x3 = 使用设备ip地址,0x4=使用监测点,0x5=使用时间(年月),0x=6自定义,0x7=违规类型,0x8=方向,0x9=地点*/
public ushort wSubDirMode; /* 二级目录,0x1 = 使用通道名,0x2 = 使用通道号,,0x3=使用时间(年月日),0x4=使用车道号,0x=5自定义,0x6=违规类型,0x7=方向,0x8=地点*/
public byte byEnableAnony; //启用匿名,0-否,1-是
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 23, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
/*可用来命名图片的相关元素 */
public const int PICNAME_ITEM_DEV_NAME = 1; /*设备名*/
public const int PICNAME_ITEM_DEV_NO = 2; /*设备号*/
public const int PICNAME_ITEM_DEV_IP = 3; /*设备IP*/
public const int PICNAME_ITEM_CHAN_NAME = 4; /*通道名*/
public const int PICNAME_ITEM_CHAN_NO = 5; /*通道号*/
public const int PICNAME_ITEM_TIME = 6; /*时间*/
public const int PICNAME_ITEM_CARDNO = 7; /*卡号*/
public const int PICNAME_ITEM_PLATE_NO = 8; /*车牌号码*/
public const int PICNAME_ITEM_PLATE_COLOR = 9; /*车牌颜色*/
public const int PICNAME_ITEM_CAR_CHAN = 10; /*车道号*/
public const int PICNAME_ITEM_CAR_SPEED = 11; /*车辆速度*/
public const int PICNAME_ITEM_CARCHAN = 12; /*监测点*/
public const int PICNAME_ITEM_PIC_NUMBER = 13; //图片序号
public const int PICNAME_ITEM_CAR_NUMBER = 14; //车辆序号
public const int PICNAME_ITEM_SPEED_LIMIT_VALUES = 15; //限速值
public const int PICNAME_ITEM_ILLEGAL_CODE = 16; //国标违法代码
public const int PICNAME_ITEM_CROSS_NUMBER = 17; //路口编号
public const int PICNAME_ITEM_DIRECTION_NUMBER = 18; //方向编号
public const int PICNAME_MAXITEM = 15;
//图片命名
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PICTURE_NAME
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PICNAME_MAXITEM, ArraySubType = UnmanagedType.I1)]
public byte[] byItemOrder; /* 桉数组定义文件命名的规则 */
public byte byDelimiter; /*分隔符,一般为'_'*/
}
//命名规则:2013-09-27
public const int PICNAME_ITEM_PARK_DEV_IP = 1; /*设备IP*/
public const int PICNAME_ITEM_PARK_PLATE_NO = 2;/*车牌号码*/
public const int PICNAME_ITEM_PARK_TIME = 3; /*时间*/
public const int PICNAME_ITEM_PARK_INDEX = 4; /*车位编号*/
public const int PICNAME_ITEM_PARK_STATUS = 5; /*车位状态*/
//图片命名扩展 2013-09-27
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PICTURE_NAME_EX
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PICNAME_MAXITEM, ArraySubType = UnmanagedType.I1)]
public byte[] byItemOrder; /* 桉数组定义文件命名的规则 */
public byte byDelimiter; /*分隔符,一般为'_'*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; /*保留*/
}
/* 串口抓图设置*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SERIAL_CATCHPIC_PARA
{
public byte byStrFlag; /*串口数据开始符*/
public byte byEndFlag; /*结束符*/
public ushort wCardIdx; /*卡号相对起始位*/
public uint dwCardLen; /*卡号长度*/
public uint dwTriggerPicChans; /*所触发的通道号,按位,从第1位开始计,即0x2表示第一通道*/
}
//DVR抓图参数配置(基线)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_JPEGCFG_V30
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_JPEGPARA[] struJpegPara; /*每个通道的图像参数*/
public ushort wBurstMode; /*抓图方式,按位设置.0x1=报警输入触发,0x2=移动侦测触发 0x4=232触发,0x8=485触发,0x10=网络触发*/
public ushort wUploadInterval; /*图片上传间隔(秒)[0,65535]*/
public NET_DVR_PICTURE_NAME struPicNameRule; /* 图片命名规则 */
public byte bySaveToHD; /*是否保存到硬盘*/
public byte byRes1;
public ushort wCatchInterval; /*抓图间隔(毫秒)[0,65535]*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public NET_DVR_SERIAL_CATCHPIC_PARA struRs232Cfg;
public NET_DVR_SERIAL_CATCHPIC_PARA struRs485Cfg;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.U4)]
public uint[] dwTriggerPicTimes; /* 每个通道一次触发拍照次数 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMIN_V30, ArraySubType = UnmanagedType.U4)]
public uint[] dwAlarmInPicChanTriggered; /*报警触发抓拍通道,按位设置,从第1位开始*/
}
//抓拍触发请求结构(保留)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MANUALSNAP
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SPRCFG
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHJC_NUM, ArraySubType = UnmanagedType.I1)]
public byte[] byDefaultCHN; /*设备运行省份的汉字简写*/
public byte byPlateOSD; /*0:不发送车牌彩色图,1:发送车牌彩色图*/
public byte bySendJPEG1; /*0-不传送近景JPEG图,1-传送近景JPEG图*/
public byte bySendJPEG2; /*0-不传送远景JPEG图,1-传送远景JPEG图*/
public ushort wDesignedPlateWidth; /*车牌设计宽度*/
public byte byTotalLaneNum; /*识别的车道数*/
public byte byRes1; /*保留*/
public ushort wRecognizedLane; /*识别的车道号,按位表示,bit0表示车道1是否识别,0-不识别,1-识别*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_LANERECT_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_RECT[] struLaneRect; /*车道识别区域*/
public uint dwRecogMode; /*识别的类型,
bit0-背向识别:0-正向车牌识别,1-背向识别(尾牌识别) ;
bit1-大车牌识别或小车牌识别:0-小车牌识别,1-大车牌识别 ;
bit2-车身颜色识别:0-不采用车身颜色识别,在背向识别或小车牌识别时禁止启用,1-车身颜色识别;
bit3-农用车识别:0-不采用农用车识别,1-农用车识别;
bit4-模糊识别:0-不采用模糊识别,1-模糊识别;
bit5-帧定位或场定位:0-帧定位,1-场定位;
bit6-帧识别或场识别:0-帧识别,1-场识别;
bit7-晚上或白天:0-白天,1-晚上 */
public byte bySendPRRaw; //是否发送原图:0-不发送,1-发送
public byte bySendBinImage; //是否发送车牌二值图:0-不发送,1-发送
public byte byDelayCapture; //延时抓拍控制,单位:帧
public byte byUseLED; //使用LED控制,0-否,1-是
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 68, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PLCCFG
{
public uint dwSize;
public byte byPlcEnable; //是否启用车牌亮度补偿(默认启用):0-关闭,1-启用
public byte byPlateExpectedBright; //车牌的预期亮度(默认值50), 范围[0, 100]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public byte byTradeoffFlash; //是否考虑闪光灯的影响: 0 - 否; 1 - 是(默认);
//使用闪光灯补光时, 如果考虑减弱闪光灯的亮度增强效应, 则需要设为1;否则为0
public byte byCorrectFactor; //纠正系数, 范围[0, 100], 默认值50 (在tradeoff_flash切换时,恢复默认值)
public ushort wLoopStatsEn; //是否该线圈的亮度,按位表示,0-不统计,1-统计
public byte byPlcBrightOffset;// 车牌亮度补偿灵敏度(虚拟线圈模式起效),取值范围1~100
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 19, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DEVICESTATECFG
{
public uint dwSize;
public ushort wPreviewNum; //预览连接个数
public ushort wFortifyLinkNum; //布防连接个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_LINK, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPADDR[] struPreviewIP; //预览的用户IP地址
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_FORTIFY_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_IPADDR[] struFortifyIP; //布防连接的用户IP地址
public uint dwVideoFrameRate; //帧率:0-全部; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20; 14-15; 15-18; 16-22;
public byte byResolution; //分辨率0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF 5(保留),16-VGA(640*480), 17-UXGA(1600*1200), 18-SVGA (800*600),19-HD720p(1280*720),20-XVGA, 21-HD900p, 27-HD1080i, 28-2560*1920, 29-1600*304, 30-2048*1536, 31-2448*2048
public byte bySnapResolution; //抓拍分辨率0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF 5(保留),16-VGA(640*480), 17-UXGA(1600*1200), 18-SVGA (800*600),19-HD720p(1280*720),20-XVGA, 21-HD900p, 27-HD1080i, 28-2560*1920, 29-1600*304, 30-2048*1536, 31-2448*2048
public byte byStreamType; //传输类型:0-主码流;1-子码流
public byte byTriggerType; //触发模式:0-视频触发;1-普通触发
public uint dwSDVolume; //SD卡容量
public uint dwSDFreeSpace; //SD卡剩余空间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DRIVECHAN_NUM * MAX_COIL_NUM, ArraySubType = UnmanagedType.I1)]
public byte[] byDetectorState; //车检器状态:0-未使用;1-正常;2-异常
public byte byDetectorLinkState; //车检器连接状态:0-未连接;1-连接
public byte bySDStatus; //SD卡状态 0-活动;1-休眠;2-异常,3-无sd卡
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_FORTIFY_NUM, ArraySubType = UnmanagedType.I1)]
public byte[] byFortifyLevel; //布防等级,0-无,1-一等级(高),2-二等级(中),3-三等级(低)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 116, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_POSTEPOLICECFG
{
public uint dwSize;
public uint dwDistance;//线圈距离,单位cm,取值范围[0,20000]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_SIGNALLIGHT_NUM, ArraySubType = UnmanagedType.U4)]
public uint[] dwLightChan; //信号灯通道号
public byte byCapSpeed;//标志限速,单位km/h,取值范围[0,255]
public byte bySpeedLimit;//限速值,单位km/h,取值范围[0,255]
public byte byTrafficDirection;//车流方向,0-由东向西,1-由西向东,2-由南向北,3-由北向南
public byte byRes1; //保留
public ushort wLoopPreDist; /*触发延迟距离 ,单位:分米*/
public ushort wTrigDelay; /*触发硬延时时间 ,单位:毫秒*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 124, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留字节
}
/***************************** end *********************************************/
public const int IPC_PROTOCOL_NUM = 50; //ipc 协议最大个数
//协议类型
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PROTO_TYPE
{
public uint dwType; /*ipc协议值*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = DESC_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byDescribe; /*协议描述字段*/
}
//协议列表
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPC_PROTO_LIST
{
public uint dwSize;
public uint dwProtoNum; /*有效的ipc协议数目*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = IPC_PROTOCOL_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_PROTO_TYPE[] struProto; /*有效的ipc协议*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//协议列表V41
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPC_PROTO_LIST_V41
{
public uint dwSize;
public uint dwProtoNum; //有效的ipc协议数目
public IntPtr pBuffer; //协议列表缓冲区, dwProtoNum 个NET_DVR_PROTO_TYPE结构
public uint dwBufferLen; //缓冲区长度
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
public const int MAX_ALERTLINE_NUM = 8; //最大警戒线条数
//越界侦测查询条件
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TRAVERSE_PLANE_SEARCHCOND
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALERTLINE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_TRAVERSE_PLANE[] struVcaTraversePlane; //穿越境界面参数
public uint dwPreTime; /*智能报警提前时间 单位:秒*/
public uint dwDelayTime; /*智能报警延迟时间 单位:秒*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5656, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
public const int MAX_INTRUSIONREGION_NUM = 8; //最大区域数数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_INTRUSION_SEARCHCOND
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_INTRUSIONREGION_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_INTRUSION[] struVcaIntrusion; //入侵区域
public uint dwPreTime; /*智能报警提前时间 单位:秒*/
public uint dwDelayTime; /*智能报警延迟时间 单位:秒*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5400, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct NET_DVR_AREA_SMARTSEARCH_COND_UNION
{
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6144, ArraySubType = UnmanagedType.I1)]
public byte[] byLen; //结构体长度
/*[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64 * 96, ArraySubType = UnmanagedType.I1)]
public byte[] byMotionScope; //侦测区域 0-96位表示64行,共有96*64个小宏块,1-是移动侦测区域,0-非移动侦测区域
[FieldOffsetAttribute(0)]
public NET_DVR_TRAVERSE_PLANE_SEARCHCOND struTraversPlaneCond; //越界侦测
[FieldOffsetAttribute(0)]
public NET_DVR_INTRUSION_SEARCHCOND struIntrusionCond; //区域入侵
* */
}
//智能搜索参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SMART_SEARCH_PARAM
{
public byte byChan; //通道号
public byte bySearchCondType; //智能查找联合体NET_DVR_AREA_SMARTSEARCH_COND_UNION的索引
/*0-移动侦测区域 ,1-越界侦测, 2-区域入侵*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_TIME struStartTime; //录像开始的时间
public NET_DVR_TIME struEndTime; //录像停止的时间
public NET_DVR_AREA_SMARTSEARCH_COND_UNION uSmartSearchCond; //智能查找条件
public byte bySensitivity; //移动侦测搜索灵敏度,1 >80% 2 40%~80% 3 1%~40%
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 11, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SMART_SEARCH_RET
{
public NET_DVR_TIME struStartTime; //移动侦测报警开始的时间
public NET_DVR_TIME struEndTime; //事件停止的时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//IPSAN 文件目录查找
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPSAN_SERACH_PARAM
{
public NET_DVR_IPADDR struIP; // IPSAN IP地址
public ushort wPort; // IPSAN 端口
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 10, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPSAN_SERACH_RET
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byDirectory; // 返回的文件目录
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//DVR设备参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DEVICECFG_V40
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sDVRName; //DVR名称
public uint dwDVRID; //DVR ID,用于遥控器 //V1.4(0-99), V1.5(0-255)
public uint dwRecycleRecord; //是否循环录像,0:不是; 1:是
//以下不可更改
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SERIALNO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sSerialNumber; //序列号
public uint dwSoftwareVersion; //软件版本号,高16位是主版本,低16位是次版本
public uint dwSoftwareBuildDate; //软件生成日期,0xYYYYMMDD
public uint dwDSPSoftwareVersion; //DSP软件版本,高16位是主版本,低16位是次版本
public uint dwDSPSoftwareBuildDate; // DSP软件生成日期,0xYYYYMMDD
public uint dwPanelVersion; // 前面板版本,高16位是主版本,低16位是次版本
public uint dwHardwareVersion; // 硬件版本,高16位是主版本,低16位是次版本
public byte byAlarmInPortNum; //DVR报警输入个数
public byte byAlarmOutPortNum; //DVR报警输出个数
public byte byRS232Num; //DVR 232串口个数
public byte byRS485Num; //DVR 485串口个数
public byte byNetworkPortNum; //网络口个数
public byte byDiskCtrlNum; //DVR 硬盘控制器个数
public byte byDiskNum; //DVR 硬盘个数
public byte byDVRType; //DVR类型, 1:DVR 2:ATM DVR 3:DVS ......
public byte byChanNum; //DVR 通道个数
public byte byStartChan; //起始通道号,例如DVS-1,DVR - 1
public byte byDecordChans; //DVR 解码路数
public byte byVGANum; //VGA口的个数
public byte byUSBNum; //USB口的个数
public byte byAuxoutNum; //辅口的个数
public byte byAudioNum; //语音口的个数
public byte byIPChanNum; //最大数字通道数 低8位,高8位见byHighIPChanNum
public byte byZeroChanNum; //零通道编码个数
public byte bySupport; //能力,位与结果为0表示不支持,1表示支持,
//bySupport & 0x1, 表示是否支持智能搜索
//bySupport & 0x2, 表示是否支持备份
//bySupport & 0x4, 表示是否支持压缩参数能力获取
//bySupport & 0x8, 表示是否支持多网卡
//bySupport & 0x10, 表示支持远程SADP
//bySupport & 0x20, 表示支持Raid卡功能
//bySupport & 0x40, 表示支持IPSAN搜索
//bySupport & 0x80, 表示支持rtp over rtsp
public byte byEsataUseage; //Esata的默认用途,0-默认备份,1-默认录像
public byte byIPCPlug; //0-关闭即插即用,1-打开即插即用
public byte byStorageMode; //0-盘组模式,1-磁盘配额, 2抽帧模式
public byte bySupport1; //能力,位与结果为0表示不支持,1表示支持
//bySupport1 & 0x1, 表示是否支持snmp v30
//bySupport1 & 0x2, 支持区分回放和下载
//bySupport1 & 0x4, 是否支持布防优先级
//bySupport1 & 0x8, 智能设备是否支持布防时间段扩展
//bySupport1 & 0x10, 表示是否支持多磁盘数(超过33个)
//bySupport1 & 0x20, 表示是否支持rtsp over http
public ushort wDevType;//设备型号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = DEV_TYPE_NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byDevTypeName;//设备型号名称
public byte bySupport2; //能力集扩展,位与结果为0表示不支持,1表示支持
//bySupport2 & 0x1, 表示是否支持扩展的OSD字符叠加(终端和抓拍机扩展区分)
public byte byAnalogAlarmInPortNum; //模拟报警输入个数
public byte byStartAlarmInNo; //模拟报警输入起始号
public byte byStartAlarmOutNo; //模拟报警输出起始号
public byte byStartIPAlarmInNo; //IP报警输入起始号 0-无效
public byte byStartIPAlarmOutNo; //IP报警输出起始号 0-无效
public byte byHighIPChanNum; //数字通道个数,高8位
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 9, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
public const int MAX_ZEROCHAN_NUM = 16;
//零通道压缩配置参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ZEROCHANCFG
{
public uint dwSize; //结构长度
public byte byEnable; //0-停止零通道编码,1-表示启用零通道编码
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public uint dwVideoBitrate; /*视频码率 0-保留 1-16K(保留) 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K
* 12-320K 13-384K 14-448K 15-512K 16-640K 17-768K 18-896K 19-1024K 20-1280K 21-1536K 22-1792K
* 23-2048K
* 最高位(31位)置成1表示是自定义码流, 0-30位表示码流值(MIN-32K MAX-8192K) */
public uint dwVideoFrameRate; //帧率 0-全部; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20,
//V2.0增加14-15, 15-18, 16-22;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//零通道缩放参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ZERO_ZOOMCFG
{
public uint dwSize; //结构长度
public NET_VCA_POINT struPoint; //画面中的坐标点
public byte byState; //现在的状态,0-缩小,1-放大
public byte byPreviewNumber; //预览数目,0-1画面,1-4画面,2-9画面,3-16画面 该参数只读
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_WINDOW_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byPreviewSeq;//画面通道信息 该参数只读
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 30, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
public const int DESC_LEN_64 = 64;
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SNMPCFG
{
public uint dwSize; //结构长度
public byte byEnable; //0-禁用SNMP,1-表示启用SNMP
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public ushort wVersion; //snmp 版本 v1 = 1, v2 =2, v3 =3,设备目前不支持 v3
public ushort wServerPort; //snmp消息接收端口,默认 161
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byReadCommunity; //读共同体,最多31,默认"public"
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byWriteCommunity;//写共同体,最多31 字节,默认 "private"
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = DESC_LEN_64, ArraySubType = UnmanagedType.I1)]
public byte[] byTrapHostIP; //自陷主机ip地址描述,支持IPV4 IPV6和域名描述
public ushort wTrapHostPort; //trap主机端口
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byTrapName;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 70, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SNMPv3_USER
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byUserName; // 用户名
public byte bySecLevel; //安全级别 1-无校验 2-无授权校验 3-授权校验
public byte byAuthtype; //认证类型 0-MD5认证 1-SHA认证 2: none
public byte byPrivtype; //0: DES; 1: AES; 2: none;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byAuthpass; //认证密码
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byPrivpass; //加密密码
}
//snmpv30
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SNMPCFG_V30
{
public uint dwSize; //结构长度
public byte byEnableV1; //0-禁用SNMP V1,1-表示启用SNMP V1
public byte byEnableV2; //0-禁用SNMP V2,1-表示启用SNMP V2
public byte byEnableV3; //0-禁用SNMP V3,1-表示启用SNMP V3
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public ushort wServerPort; //snmp消息接收端口,默认 161
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byReadCommunity; //读共同体,最多31,默认"public"
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byWriteCommunity; //写共同体,最多31 字节,默认 "private"
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = DESC_LEN_64, ArraySubType = UnmanagedType.I1)]
public byte[] byTrapHostIP; //自陷主机ip地址描述,支持IPV4 IPV6和域名描述
public ushort wTrapHostPort; // trap主机端口
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public NET_DVR_SNMPv3_USER struRWUser; // 读写用户
public NET_DVR_SNMPv3_USER struROUser; // 只读用户
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byTrapName;
}
public const int PROCESSING = 0; //正在处理
public const int PROCESS_SUCCESS = 100; //过程完成
public const int PROCESS_EXCEPTION = 400; //过程异常
public const int PROCESS_FAILED = 500; //过程失败
public const int PROCESS_QUICK_SETUP_PD_COUNT = 501; //一键配置至少3块硬盘
public const int SOFTWARE_VERSION_LEN = 48;
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SADPINFO
{
public NET_DVR_IPADDR struIP; // 设备IP地址
public ushort wPort; // 设备端口号
public ushort wFactoryType; // 设备厂家类型
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = SOFTWARE_VERSION_LEN)]
public string chSoftwareVersion;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string chSerialNo; // 序列号
public ushort wEncCnt; // 编码通道个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MACADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byMACAddr; // MAC 地址
public NET_DVR_IPADDR struSubDVRIPMask; // DVR IP地址掩码
public NET_DVR_IPADDR struGatewayIpAddr; // 网关
public NET_DVR_IPADDR struDnsServer1IpAddr; /* 域名服务器1的IP地址 */
public NET_DVR_IPADDR struDnsServer2IpAddr; /* 域名服务器2的IP地址 */
public byte byDns;
public byte byDhcp;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 158, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
public const int MAX_SADP_NUM = 256; //搜索到设备最大数目
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SADPINFO_LIST
{
public uint dwSize; // 结构大小
public ushort wSadpNum; // 搜索到设备数目
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_SADP_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SADPINFO[] struSadpInfo; // 搜索
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SADP_VERIFY
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = PASSWD_LEN)]
public string chPassword;
public NET_DVR_IPADDR struOldIP;
public ushort wOldPort;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 62, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VIDEO_CALL_COND
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VIDEO_CALL_PARAM
{
public uint dwSize;
public uint dwCmdType; //信令类型 0-请求呼叫,1-取消本次呼叫,2-接听本次呼叫 3-拒绝本地来电呼叫 4-被叫响铃超时 5-结束本次通话,6-设备正在通话中,7-客户端正在通话中,8室内机不在线
public ushort wPeriod; //期号, 范围[0,9]
public ushort wBuildingNumber; //楼号
public ushort wUnitNumber; //单元号
public ushort wFloorNumber; //层号
public ushort wRoomNumber; //房间号
public ushort wDevIndex; //设备编号
public byte byUnitType; //设备类型,1-门口机,2-管理机,3-室内机,4-围墙机,5-别墅门口机,6-二次确认机,7-8700客户端,8-4200客户端,9-APP
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 115, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//开锁记录
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_UNLOCK_RECORD_INFO
{
public byte byUnlockType; //开锁方式,参考UNLOCK_TYPE_ENUM
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byControlSrc; //操作发起源信息,刷卡开锁时为卡号,蓝牙开锁时为萤石的APP账号,二维码开锁时为访客的手机号,其余情况下为设备编号
public uint dwPicDataLen; //图片数据长度
public IntPtr pImage; //图片指针
public uint dwCardUserID; //持卡人ID
public ushort nFloorNumber;//刷卡开锁时有效,为楼层号
public ushort wRoomNumber; //操作发起源附加信息,刷卡开锁时有效,为房间号,
public ushort wLockID; //(对于门口机,0-表示本机控制器上接的锁、1-表示外接控制器上接的锁)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = LOCK_NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byLockName; //刷卡开锁时有效,锁名称,对应门参数配置中门名称
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NET_SDK_EMPLOYEE_NO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byEmployeeNo; //工号(人员ID)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 136, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//公告信息阅读回执
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_NOTICEDATA_RECEIPT_INFO
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NOTICE_NUMBER_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byNoticeNumber; //公告编号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 224, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//认证记录(设备未实现)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_AUTH_INFO
{
public byte byAuthResult; //认证结果:0-无效,1-认证成功,2-认证失败
public byte byAuthType; //认证方式:0-无效,1-指纹,2-人脸
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = ACS_CARD_NO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byCardNo; //卡号
public uint dwPicDataLen; //图片数据长度(当认证方式byAuthType为人脸时有效)
public IntPtr pImage; //图片指针(当认证方式byAuthType为人脸时有效)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 212, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON
{
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 256, ArraySubType = UnmanagedType.I1)]
public byte[] byLen;
}
//可视对讲事件记录
public struct NET_DVR_VIDEO_INTERCOM_EVENT
{
public uint dwSize; //结构体大小
public NET_DVR_TIME_EX struTime; //时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DEV_NUMBER_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byDevNumber; //设备编号
public byte byEventType; //事件信息类型,1-开锁记录,2-公告信息阅读回执,3-认证记录,4-车牌信息上传,5非法卡刷卡事件,6-门口机发卡记录(需要启动门口机发卡功能,刷卡时才会上传该事件)
public byte byPicTransType; //图片数据传输方式: 0-二进制;1-url
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON uEventInfo; //事件信息,具体内容参考byEventType取值
public uint dwIOTChannelNo; //IOT通道号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 252, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//XML透传接口
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_XML_CONFIG_INPUT
{
public uint dwSize;//结构体大小
public IntPtr lpRequestUrl;//请求信令,字符串格式
public uint dwRequestUrlLen;
public IntPtr lpInBuffer;//输入参数缓冲区,XML格式
public uint dwInBufferSize;
public uint dwRecvTimeOut;//接收超时时间,单位:ms,填0则使用默认超时5s
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_XML_CONFIG_OUTPUT
{
public uint dwSize;//结构体大小
public IntPtr lpOutBuffer;//输出参数缓冲区,XML格式
public uint dwOutBufferSize;
public uint dwReturnedXMLSize;//实际输出的XML内容大小
public IntPtr lpStatusBuffer;//返回的状态参数(XML格式:ResponseStatus),获取命令成功时不会赋值,如果不需要,可以置NULL
public uint dwStatusSize;//状态缓冲区大小(内存大小)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CHANNEL_GROUP
{
public uint dwSize;//结构体大小
public uint dwChannel;//通道号
public uint dwGroup; //组号,从0开始,即0表示第1组,1表示第2组,依次类推
public byte byID;//设备区域设置ID
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwPositionNo;//场景位置索引号,IPC为0,IPD从1开始
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 56, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_TRAVERSE_PLANE_DETECTION
{
public uint dwSize;//结构体大小
public byte byEnable;//使能越界侦测功能:0- 否,1- 是
public byte byEnableDualVca; //启用支持智能后检索:0- 不启用,1- 启用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALERTLINE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_TRAVERSE_PLANE[] struAlertParam;//警戒线参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmSched;//布防时间,每周7天,每天最多设置8个时间段
public NET_DVR_HANDLEEXCEPTION_V40 struHandleException;//异常处理方式
public uint dwMaxRelRecordChanNum;
public uint dwRelRecordChanNum;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.U4)]
public uint[] byRelRecordChan;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struHolidayTime; //假日布防时间,最多设置8个时间段
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 100, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_STD_CONFIG
{
public IntPtr lpCondBuffer;
public uint dwCondSize;
public IntPtr lpInBuffer;
public uint dwInSize;
public IntPtr lpOutBuffer;
public uint dwOutSize;
public IntPtr lpStatusBuffer;
public uint dwStatusSize;
public IntPtr lpXmlBuffer;
public uint dwXmlSize;
public byte byDataType;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 23, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_THERMOMETRY_COND
{
public uint dwSize;
public uint dwChannel;
public ushort wPresetNo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 62, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_THERMOMETRY_TRIGGER_COND
{
public uint dwSize;
public uint dwChan;
public uint dwPreset;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 256, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_EVENT_TRIGGER
{
public uint dwSize;
public NET_DVR_HANDLEEXCEPTION_V41 struHandleException;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwRelRecordChan;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_PRESETCHAN_INFO[] struPresetChanInfo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_CRUISECHAN_INFO[] struCruiseChanInfo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_PTZTRACKCHAN_INFO[] struPtzTrackInfo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 256, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_THERMOMETRY_ALARMRULE
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = THERMOMETRY_ALARMRULE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_THERMOMETRY_ALARMRULE_PARAM[] struThermometryAlarmRuleParam;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_THERMOMETRY_ALARMRULE_PARAM
{
public byte byEnabled;
public byte byRuleID;
public byte byRule;
public byte byRes;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = NAME_LEN)]
public string szRuleName;
public float fAlert;
public float fAlarm;
public float fThreshold;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_SDK_MANUALTHERM_BASICPARAM
{
public uint dwSize;
public ushort wDistance;//距离(m)[0, 10000]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public float fEmissivity;//发射率(发射率 精确到小数点后两位)[0.01, 1.00](即:物体向外辐射能量的本领)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_SDK_POINT_THERMOMETRY
{
public float fPointTemperature;/*点测温当前温度, 当标定为0-点时生效。精确到小数点后一位(-40-1000),(浮点数+100)*10 */
public NET_VCA_POINT struPoint;//点测温坐标(当规则标定类型为“点”的时候生效)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_SDK_REGION_THERMOMETRY
{
public float fMaxTemperature;//最高温度,精确到小数点后一位(-40-1000),(浮点数+100)*10 */
public float fMinTemperature;//最低温度,精确到小数点后一位(-40-1000),(浮点数+100)*10 */
public float fAverageTemperature;//平均温度,精确到小数点后一位(-40-1000),(浮点数+100)*10 */
public float fTemperatureDiff;//温差,精确到小数点后一位(-40-1000),(浮点数+100)*10 */
public NET_VCA_POLYGON struRegion;//区域、线(当规则标定类型为“框”或者“线”的时候生效)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_SDK_MANUALTHERM_RULE
{
public byte byRuleID;//规则ID 0-表示无效,从1开始 (list内部判断数据有效性)
public byte byEnable;//是否启用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] szRuleName;//规则名称
public byte byRuleCalibType;//规则标定类型 0-点,1-框,2-线
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public NET_SDK_POINT_THERMOMETRY struPointTherm;//点测温,当标定为0-点时生效
public NET_SDK_REGION_THERMOMETRY struRegionTherm; //区域测温,当标定为1-框、2-线时生效。
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 512, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_SDK_MANUAL_THERMOMETRY
{
public uint dwSize;//结构体大小
public uint dwChannel;//通道号
public uint dwRelativeTime; // 相对时标(只读)
public uint dwAbsTime; // 绝对时标(只读)
public byte byThermometryUnit;//测温单位: 0-摄氏度(℃),1-华氏度(℉),2-开尔文(K)
public byte byDataType;//数据状态类型:0-检测中,1-开始,2-结束(只读)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_SDK_MANUALTHERM_RULE struRuleInfo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 512, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
/***************************** end *********************************************/
/*******************************备份结构 begin********************************/
//获取备份设备信息接口定义
public const int DESC_LEN_32 = 32; //描述字长度
public const int MAX_NODE_NUM = 256; //节点个数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DESC_NODE
{
public int iValue;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = DESC_LEN_32, ArraySubType = UnmanagedType.I1)]
public byte[] byDescribe; //描述字段
public uint dwFreeSpace; //获取磁盘列表专用,单位为M
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DISKABILITY_LIST
{
public uint dwSize; //结构长度
public uint dwNodeNum; //能力结点个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NODE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_DESC_NODE[] struDescNode; //描述参数
}
//备份进度列表
public const int BACKUP_SUCCESS = 100; //备份完成
public const int BACKUP_CHANGE_DEVICE = 101; //备份设备已满,更换设备继续备份
public const int BACKUP_SEARCH_DEVICE = 300; //正在搜索备份设备
public const int BACKUP_SEARCH_FILE = 301; //正在搜索录像文件
public const int BACKUP_SEARCH_LOG_FILE = 302; //正在搜索日志文件
public const int BACKUP_EXCEPTION = 400; //备份异常
public const int BACKUP_FAIL = 500; //备份失败
public const int BACKUP_TIME_SEG_NO_FILE = 501; //时间段内无录像文件
public const int BACKUP_NO_RESOURCE = 502; //申请不到资源
public const int BACKUP_DEVICE_LOW_SPACE = 503; //备份设备容量不足
public const int BACKUP_DISK_FINALIZED = 504; //刻录光盘封盘
public const int BACKUP_DISK_EXCEPTION = 505; //刻录光盘异常
public const int BACKUP_DEVICE_NOT_EXIST = 506; //备份设备不存在
public const int BACKUP_OTHER_BACKUP_WORK = 507; //有其他备份操作在进行
public const int BACKUP_USER_NO_RIGHT = 508; //用户没有操作权限
public const int BACKUP_OPERATE_FAIL = 509; //操作失败
public const int BACKUP_NO_LOG_FILE = 510; //硬盘中无日志
//备份过程接口定义
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_BACKUP_NAME_PARAM
{
public uint dwFileNum; //文件个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RECORD_FILE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_FINDDATA_V30[] struFileList; //文件列表
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = DESC_LEN_32, ArraySubType = UnmanagedType.I1)]
public byte[] byDiskDes; //备份磁盘描述
public byte byWithPlayer; //是否备份播放器
public byte byContinue; /*是否继续备份 0不继续 1继续*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 34, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_BACKUP_TIME_PARAM
{
public int lChannel; //按时间备份的通道
public NET_DVR_TIME struStartTime; //备份的起始时间
public NET_DVR_TIME struStopTime; //备份的终止时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = DESC_LEN_32, ArraySubType = UnmanagedType.I1)]
public byte[] byDiskDes; //备份磁盘描述
public byte byWithPlayer; //是否备份播放器
public byte byContinue; //是否继续备份 0不继续 1继续
public byte byDrawFrame; //0 不抽帧 1 抽帧
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 33, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
/********************************* end *******************************************/
public enum COMPRESSION_ABILITY_TYPE
{
COMPRESSION_STREAM_ABILITY = 0, //码流压缩类型
MAIN_RESOLUTION_ABILITY = 1, //主码流压缩分辨率
SUB_RESOLUTION_ABILITY = 2, //子码流压缩分辨率
EVENT_RESOLUTION_ABILITY = 3, //事件压缩参数分辨率
FRAME_ABILITY = 4, //帧率能力
BITRATE_TYPE_ABILITY = 5, //位率类型能力
BITRATE_ABILITY = 6, //位率上限
THIRD_RESOLUTION_ABILITY = 7, //三码流压缩分辨率
STREAM_TYPE_ABILITY = 8, //码流类型
PIC_QUALITY_ABILITY = 9, //图像质量
INTERVAL_BPFRAME_ABILITY = 10, //BP帧间隔
VIDEO_ENC_ABILITY = 11, //视频编码能力
AUDIO_ENC_ABILITY = 12, //音频编码能力
VIDEO_ENC_COMPLEXITY_ABILITY = 13, //视频编码复杂度能力
FORMAT_ABILITY = 14, //封装格式能力
}
//能力列表
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ABILITY_LIST
{
public uint dwAbilityType; //能力类型 COMPRESSION_ABILITY_TYPE
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留字节
public uint dwNodeNum; //能力结点个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NODE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_DESC_NODE[] struDescNode; //描述参数
}
public const int MAX_ABILITYTYPE_NUM = 12; //最大能力项
// 压缩参数能力列表
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_COMPRESSIONCFG_ABILITY
{
public uint dwSize; //结构长度
public uint dwAbilityNum; //能力类型个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ABILITYTYPE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_ABILITY_LIST[] struAbilityNode; //描述参数
}
//模式A
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HOLIDATE_MODEA
{
public byte byStartMonth; // 开始月 从1开始
public byte byStartDay; // 开始日 从1开始
public byte byEndMonth; // 结束月
public byte byEndDay; // 结束日
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HOLIDATE_MODEB
{
public byte byStartMonth; // 从1开始
public byte byStartWeekNum; // 第几个星期 从1开始
public byte byStartWeekday; // 星期几
public byte byEndMonth; // 从1开始
public byte byEndWeekNum; // 第几个星期 从1开始
public byte byEndWeekday; // 星期几
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HOLIDATE_MODEC
{
public ushort wStartYear; // 年
public byte byStartMon; // 月
public byte byStartDay; // 日
public ushort wEndYear; // 年
public byte byEndMon; // 月
public byte byEndDay; // 日
}
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct NET_DVR_HOLIDATE_UNION
{
//联合体大小 12字节
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.U4)]
public uint[] dwSize;
/*[FieldOffsetAttribute(0)]
public NET_DVR_HOLIDATE_MODEA struModeA; // 模式A
[FieldOffsetAttribute(0)]
public NET_DVR_HOLIDATE_MODEB struModeB; // 模式B
[FieldOffsetAttribute(0)]
public NET_DVR_HOLIDATE_MODEC struModeC; // 模式C
* */
}
public enum HOLI_DATE_MODE
{
HOLIDATE_MODEA = 0,
HOLIDATE_MODEB,
HOLIDATE_MODEC
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HOLIDAY_PARAM
{
public byte byEnable; // 是否启用
public byte byDateMode; // 日期模式 0-模式A 1-模式B 2-模式C
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
public NET_DVR_HOLIDATE_UNION uHolidate; // 假日日期
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byName; // 假日名称
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
}
public const int MAX_HOLIDAY_NUM = 32;
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HOLIDAY_PARAM_CFG
{
public uint dwSize; // 结构体大小
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_HOLIDAY_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_HOLIDAY_PARAM[] struHolidayParam; // 假日参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留参数
}
//假日报警处理方式
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HOLIDAY_HANDLE
{
public uint dwSize; // 结构体大小
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime; // 布防时间段
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 240, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HOLIDAY_RECORD
{
public uint dwSize;
public NET_DVR_RECORDDAY struRecDay; // 录像参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_RECORDSCHED[] struRecordSched; // 录像时间段
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
public const int MAX_LINK_V30 = 128;
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ONE_LINK
{
public NET_DVR_IPADDR struIP; // 客户端IP
public int lChannel; // 通道号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LINK_STATUS
{
public uint dwSize; // 结构体大小
public ushort wLinkNum; // 连接的数目
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_LINK_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_ONE_LINK[] struOneLink; // 连接的客户端信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
public const int MAX_BOND_NUM = 2;
//单BONDING网卡配置结构体
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_ONE_BONDING
{
public byte byMode;
public byte byUseDhcp;
public byte byMasterCard;
public byte byStatus;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NETWORK_CARD, ArraySubType = UnmanagedType.I1)]
public byte[] byBond;
public NET_DVR_ETHERNET_V30 struEtherNet;
public NET_DVR_IPADDR struGatewayIpAddr;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//BONDING网卡配置结构体
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_DVR_NETWORK_BONDING
{
public uint dwSize;
public byte byEnable;
public byte byNum;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_BOND_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_ONE_BONDING[] struOneBond;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//磁盘配额
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DISK_QUOTA
{
public byte byQuotaType; // 磁盘配额类型,1 - 按容量
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 7, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
public uint dwHCapacity; // 分配的磁盘容量高32位 单位MB
public uint dwLCapacity; // 分配的磁盘容量低32位 单位MB
public uint dwHUsedSpace; // 已使用的磁盘大小高32位 单位MB
public uint dwLUsedSpace; // 已使用的磁盘大小低32位 单位MB
public byte byQuotaRatio; // 分配的磁盘比例,单位:%
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 21, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DISK_QUOTA_CFG
{
public uint dwSize; // 结构体大小
public NET_DVR_DISK_QUOTA struPicQuota; // 图片配额
public NET_DVR_DISK_QUOTA struRecordQuota; // 录像配额
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 60, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TIMING_CAPTURE
{
public NET_DVR_JPEGPARA struJpegPara; // 定时抓图图片质量
public uint dwPicInterval; //定时抓图时间间隔,单位s 1-1s 2-2s 3-3s 4-4s 5-5s
//6-10m 7-30m 8-1h 9-12h 10-24h
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_REL_CAPTURE_CHAN
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byChan; // 按位表示
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
public const int MAX_PIC_EVENT_NUM = 32;
public const int MAX_ALARMIN_CAPTURE = 16;
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_REL_CAPTURE_CHAN_V40
{
public uint dwMaxRelCaptureChanNum; //最大可触发的关联通道数-只读属性
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.U4)]
public uint[] dwChanNo; //触发的关联抓图通道号,按值表示,采用紧凑型排列,0xffffffff表示后续无效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_EVENT_CAPTURE_V40
{
public NET_DVR_JPEGPARA struJpegPara; // 事件抓图图片质量
public uint dwPicInterval; // 事件抓图时间间隔 单位为秒
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_PIC_EVENT_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_REL_CAPTURE_CHAN_V40[] struRelCaptureChan; // 数组下标 0 移动侦测触发抓图 1 视频遮挡触发抓图 2 视频丢失触发抓图,数组3表示PIR报警抓图,数组4表示无线报警抓图,数组5表示呼救报警抓图,数组6表示智能抓图
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMIN_CAPTURE, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_REL_CAPTURE_CHAN_V40[] struAlarmInCapture; // 报警输入触发抓图,下标0 代表报警输入1 依次类推
public uint dwMaxGroupNum; //设备支持的最大报警输入组数,每组16个报警输入
public byte byCapTimes; //抓图张数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 59, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_EVENT_CAPTURE
{
public NET_DVR_JPEGPARA struJpegPara; // 事件抓图图片质量
public uint dwPicInterval; /*事件抓图时间间隔 单位为秒 1-1s 2-2s 3-3s 4-4s 5-5s
* 6-10m 7-30m 8-1h 9-12h 10-24h*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_PIC_EVENT_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_REL_CAPTURE_CHAN[] struRelCaptureChan; /* 数组下标 0 移动侦测触发抓图 1 视频遮挡触发抓图,
* 2 视频丢失触发抓图,数组3表示PIR报警抓图,数组4表示无线报警抓图,
* 数组5表示呼救报警抓图,数组6表示智能抓图, 数组7表示人脸侦测*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ALARMIN_CAPTURE, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_REL_CAPTURE_CHAN[] struAlarmInCapture; //报警输入触发抓图,下标0 代表报警输入1 依次类推
public byte byCapTimes; //抓图张数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 59, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_JPEG_CAPTURE_CFG_V40
{
public uint dwSize; //结构体长度
public NET_DVR_TIMING_CAPTURE struTimingCapture;
public NET_DVR_EVENT_CAPTURE_V40 struEventCapture;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_JPEG_CAPTURE_CFG
{
public uint dwSize; // 结构体大小
public NET_DVR_TIMING_CAPTURE struTimingCapture;
public NET_DVR_EVENT_CAPTURE struEventCapture;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CAPTURE_DAY
{
public byte byAllDayCapture; // 是否全天抓图
public byte byCaptureType; // 抓图类型:0-定时抓图,1-移动侦测抓图,2-报警抓图,3-移动侦测或报警抓图,4-移动侦测和报警抓图,6-智能报警抓图
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CAPTURE_SCHED
{
public NET_DVR_SCHEDTIME struCaptureTime; // 抓图时间段
public byte byCaptureType; // 抓图类型:0-定时抓图,1-移动侦测抓图,2-报警抓图,3-移动侦测或报警抓图,4-移动侦测和报警抓图,6-智能报警抓图
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
//通道抓图计划
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCHED_CAPTURECFG
{
public uint dwSize; //结构体
public byte byEnable; //是否抓图
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留字节
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_CAPTURE_DAY[] struCaptureDay;//全天抓图计划
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_CAPTURE_SCHED[] struCaptureSched;//时间段抓图布防计划
public NET_DVR_CAPTURE_DAY struCaptureHoliday; //假日抓图计划
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_TIMESEGMENT_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_CAPTURE_SCHED[] struHolidaySched; //时间段假日抓图布防计划
public uint dwRecorderDuration; //抓图保存最长时间 0xffffffff表示该值无效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FLOW_TEST_PARAM
{
public uint dwSize; //结构大小
public int lCardIndex; //网卡索引
public uint dwInterval; //设备上传流量时间间隔, 单位:100ms
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FLOW_INFO
{
public uint dwSize; //结构大小
public uint dwSendFlowSize; //发送流量大小,单位kbps
public uint dwRecvFlowSize; //接收流量大小,单位kbps
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//录像标签
public const int LABEL_NAME_LEN = 40;
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_RECORD_LABEL
{
public uint dwSize; // 结构体大小
public NET_DVR_TIME struTimeLabel; // 标签的时间
public byte byQuickAdd; // 是否快速添加 快速添加时标签名称无效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = LABEL_NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sLabelName; // 标签的名称 长度为40字节
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
}
public const int LABEL_IDENTIFY_LEN = 64;
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LABEL_IDENTIFY
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = LABEL_IDENTIFY_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sLabelIdentify; // 64字节标识
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
public const int MAX_DEL_LABEL_IDENTIFY = 20;// 删除的最大标签标识个数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DEL_LABEL_PARAM
{
public uint dwSize; // 结构体大小
public byte byMode; // 按位表示,0x01表示按标识删除
public byte byRes1;
public ushort wLabelNum; // 标签数目
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DEL_LABEL_IDENTIFY, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_LABEL_IDENTIFY[] struIndentify; // 标签标识
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 160, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MOD_LABEL_PARAM
{
public NET_DVR_LABEL_IDENTIFY struIndentify; //要修改的标签标识
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = LABEL_NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sLabelName; //修改后的标签名称
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//标签搜索结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FIND_LABEL
{
public uint dwSize; // 结构体大小
public int lChannel; // 查找的通道
public NET_DVR_TIME struStartTime; // 开始时间
public NET_DVR_TIME struStopTime; // 结束时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = LABEL_NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sLabelName; // 录像标签名称 如果标签名称为空,则搜索起止时间所有标签
public byte byDrawFrame; //0:不抽帧,1:抽帧
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 39, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
//标签信息结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FINDLABEL_DATA
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = LABEL_NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sLabelName; // 标签名称
public NET_DVR_TIME struTimeLabel; // 标签时间
public NET_DVR_LABEL_IDENTIFY struLabelIdentify; // 标签标识
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
}
public const int CARDNUM_LEN_V30 = 40;
public const int PICTURE_NAME_LEN = 64;
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FIND_PICTURE
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = PICTURE_NAME_LEN)]
public string sFileName;//图片名
public NET_DVR_TIME struTime;//图片的时间
public uint dwFileSize;//图片的大小
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = CARDNUM_LEN_V30)]
public string sCardNum; //卡号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FIND_PICTURE_PARAM
{
public uint dwSize; // 结构体大小
public int lChannel; // 通道号
public byte byFileType;
public byte byNeedCard; // 是否需要卡号
public byte byProvince; //省份索引值
public byte byEventType; // 事件类型:0保留,1-交通事件;2-违章取证;3-其他事件
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = CARDNUM_LEN_V30, ArraySubType = UnmanagedType.I1)]
public byte[] sCardNum; // 卡号
public NET_DVR_TIME struStartTime;//查找图片的开始时间
public NET_DVR_TIME struStopTime;// 查找图片的结束时间
//ITC3.7 新增
public uint dwTrafficType; //图片检索生效项 参考 VCA_OPERATE _TYPE
public uint dwVehicleType; //车辆类型 参考 VCA_VEHICLE_TYPE
//违规检测类型参考 VCA_ILLEGAL_TYPE 当前不支持复选
public uint dwIllegalType;
public byte byLaneNo; //车道号(1~99)
public byte bySubHvtType;//0-保留,1-机动车(机动车子类型中支持车牌检索,省份检索),2-非机动车,3-行人
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_LICENSE_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sLicense; //车牌号码
public byte byRegion; // 区域索引值 0-保留,1-欧洲(Europe Region),2-俄语区域(Russian Region),3-欧洲&俄罗斯(EU&CIS), 4-中东(Middle East),0xff-所有
public byte byCountry; // 国家索引值,参照:COUNTRY_INDEX
public byte byArea; //地区
public byte byISO8601; //是否是8601的时间格式,即时差字段是否有效0-时差无效,年月日时分秒为设备本地时间 1-时差有效
public byte cStartTimeDifferenceH; //开始时间与UTC的时差(小时),-12 ... +14, 正数表示东时区
public byte cStartTimeDifferenceM; //开始时间与UTC的时差(分钟),-30, 0, 30, 45,正数表示东时区
public byte cStopTimeDifferenceH; //结束时间与UTC的时差(小时),-12 ... +14,正数表示东时区
public byte cStopTimeDifferenceM; //结束时间与UTC的时差(分钟),-30, 0, 30, 45,正数表示东时区
}
public const int MAX_RECORD_PICTURE_NUM = 50; //最大备份图片张数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_BACKUP_PICTURE_PARAM
{
public uint dwSize; // 结构体大小
public uint dwPicNum;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RECORD_PICTURE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_FIND_PICTURE[] struPicture;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = DESC_LEN_32, ArraySubType = UnmanagedType.I1)]
public byte[] byDiskDes;
public byte byWithPlayer;
public byte byContinue; /*是否继续备份 0不继续 1继续*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 34, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_COMPRESSION_LIMIT
{
public uint dwSize; //结构体大小
public uint dwChannel; //通道号
public byte byCompressType; //待获取的压缩参数类型1,主码流2,子码流3,事件
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 15, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
public NET_DVR_COMPRESSIONCFG_V30 struCurrentCfg; //当前压缩参数配置
}
public const int STEP_READY = 0; //准备升级
public const int STEP_RECV_DATA = 1; //接收升级包数据
public const int STEP_UPGRADE = 2; //升级系统
public const int STEP_BACKUP = 3; //备份系统
public const int STEP_SEARCH = 255; //搜索升级文件
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VIDEO_EFFECT
{
public uint dwBrightValue; //亮度[0,255]
public uint dwContrastValue; //对比度[0,255]
public uint dwSaturationValue; //饱和度[0,255]
public uint dwHueValue; //色调[0,255]
public uint dwSharpness; //锐度[0,255]
public uint dwDenoising; //去噪[0,255]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VIDEO_INPUT_EFFECT
{
public uint dwSize; //结构体大小
public ushort wEffectMode; //模式 0-标准 1-室内 2-弱光 3-室外 255-自定义
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 146, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public NET_DVR_VIDEO_EFFECT struVideoEffect; //视频效果参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 60, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VIDEOPARA_V40
{
public uint dwChannel; // 通道号
public uint dwVideoParamType; // 视频参数类型 0-亮度 1-对比度 2-饱和度 3-色度 4-锐度 5-去噪
public uint dwVideoParamValue; //对应的视频参数值,范围依据能力集
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DEFAULT_VIDEO_COND
{
public uint dwSize; // 结构体大小
public uint dwChannel; // 通道号
public uint dwVideoMode; // 模式
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ENCODE_JOINT_PARAM
{
public uint dwSize; // 结构体大小
public byte byJointed; // 0 没有关联 1 已经关联
public byte byDevType; // 被关联的设备类型 1 代表智能设备
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
public NET_DVR_IPADDR struIP; // 关联的被取流设备IP地址
public ushort wPort; // 关联的被取流设备端口号
public ushort wChannel; // 关联的被取流设备通道号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VCA_CHAN_WORKSTATUS
{
public byte byJointed; // 0-没有关联 1-已经关联
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_IPADDR struIP; // 关联的取流设备IP地址
public ushort wPort; // 关联的取流设备端口号
public ushort wChannel; // 关联的取流设备通道号
public byte byVcaChanStatus; // 0 - 未启用 1 - 启用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 19, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VCA_DEV_WORKSTATUS
{
public uint dwSize; // 结构体大小
public byte byDeviceStatus; // 设备的状态0 - 正常工作 1- 不正常工作
public byte byCpuLoad; // CPU使用率0-100 分别代表使用百分率
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_VCA_CHAN, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_VCA_CHAN_WORKSTATUS[] struVcaChanStatus;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.U4)]
public uint[] dwRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct UNION_VIDEOPLATFORM_V40
{
/*各个子窗口对应解码通道所对应的解码子系统的槽位号(对于视频综合平台中解码子系统有效)*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_WINDOWS, ArraySubType = UnmanagedType.I1)]
public byte[] byJoinDecoderId;
//显示窗口所解视频分辨率,1-D1,2-720P,3-1080P,设备端需要根据此//分辨率进行解码通道的分配,如1分屏配置成1080P,则设备会把4个解码通
//道都分配给此解码通道
public byte byDecResolution;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 143, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct UNION_NOTVIDEOPLATFORM_V40
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 160, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VGA_DISP_CHAN_CFG_V40
{
public uint dwSize;
public byte byAudio; /*音频是否开启*/
public byte byAudioWindowIdx; /*音频开启子窗口*/
public byte byVgaResolution; /*分辨率,从能力集获取*/
public byte byVedioFormat; /*1:NTSC,2:PAL,0-NULL*/
public uint dwWindowMode; /*画面模式,能力集获取*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_WINDOWS, ArraySubType = UnmanagedType.I1)]
public byte[] byJoinDecChan;/*各个子窗口关联的解码通道*/
public byte byEnlargeStatus; /*是否处于放大状态,0:不放大,1:放大*/
public byte byEnlargeSubWindowIndex;//放大的子窗口号
public byte byScale; /*显示模式,0---真实显示,1---缩放显示( 针对BNC )*/
/*区分共用体,0-视频综合平台内部解码器显示通道配置,1-其他解码器显示通道配置*/
public byte byUnionType;
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct struDiff
{
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 160, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
/*[FieldOffsetAttribute(0)]
public UNION_VIDEOPLATFORM_V40 struVideoPlatform;
[FieldOffsetAttribute(0)]
public UNION_NOTVIDEOPLATFORM_V40 struNotVideoPlatform;
* */
}
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 120, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_V6SUBSYSTEMPARAM
{
public byte bySerialTrans;//是否透传,0-否,1-是
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 35, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
public const int NET_DVR_V6PSUBSYSTEMARAM_GET = 1501;//获取V6子系统配置
public const int NET_DVR_V6PSUBSYSTEMARAM_SET = 1502;//设置V6子系统配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CORRECT_DEADPIXEL_PARAM
{
public uint dwSize;
public uint dwCommand; //命令:0-进入坏点模式,1-添加坏点,2-保存坏点,3-退出坏点
public uint dwDeadPixelX; //坏点X坐标
public uint dwDeadPixelY; //坏点Y坐标
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
public const int MAX_REDAREA_NUM = 6; //最大红绿灯区域个数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_REDAREACFG
{
public uint dwSize;
public uint dwCorrectEnable; //是否开启校正功能,0-关闭,1-开启
public uint dwCorrectLevel; //校正级别,1(校正度最低)-10(校正度最高),默认为5
public uint dwAreaNum; //校正区域个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_REDAREA_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_RECT[] struLaneRect; //校正区域
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HISTORICDATACFG
{
public uint dwSize;
public uint dwTotalNum; //历史数据个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
public const int INQUEST_MESSAGE_LEN = 44; //审讯重点标记信息长度
public const int INQUEST_MAX_ROOM_NUM = 2; //最大审讯室个数
public const int MAX_RESUME_SEGMENT = 2; //支持同时恢复的片段数目
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_INQUEST_ROOM
{
public byte byRoomIndex; //审讯室编号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 23, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_INQUEST_MESSAGE
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = INQUEST_MESSAGE_LEN)]
public string sMessage; //重点标记信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 46, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_INQUEST_SENSOR_DEVICE
{
public ushort wDeviceType; //数据采集设备型号:0-无 1-米乐 2-镭彩 3-优力 4-佳盟 5-永控、6-垅上、7-维纳斯达
public ushort wDeviceAddr; //数据采集设备地址
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 28, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_INQUEST_SENSOR_INFO
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = INQUEST_MAX_ROOM_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_INQUEST_SENSOR_DEVICE[] struSensorDevice;
public uint dwSupportPro; //支持协议类型,按位表示, 新版本走能力集,不再扩展此字段
//0x1:米乐 0x2:镭彩 0x4:优力
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 120, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_INQUEST_ROOM_INFO
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = NAME_LEN)]
public string szCDName; //光盘名称,单室双刻光盘名称是一样的
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct uCalcMode
{
[FieldOffsetAttribute(0)]
public byte byBitRate; // byCalcType为0时有效,(0-32、1-48、2-64、3-80、4-96、5-128、
//6-160、7-192、8-224、9-256、10-320、11-384、12-448、
//13-512、14-640、15-768、16-896前16个值保留)17-1024、18-1280、19-1536、
//20-1792、21-2048、22-3072、23-4096、24-8192
[FieldOffsetAttribute(0)]
public byte byInquestTime; // byCalcType为1时有效,0-1小时, 1-2小时,2-3小时,3-4小时, 4-6小时,5-8小时
//8-16小时, 9-20小时,10-22小时,11-24小时
}
public byte byCalcType; //刻录计算类型0-按码率 1-按时间
public byte byAutoDelRecord; // 是否自动删除录像,0-不删除,即结束时保存录像 1-删除
public byte byAlarmThreshold; // 声音报警阀值
public byte byInquestChannelResolution; //审讯通道分辨率,0:720P 1:1080P
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 11, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_INQUEST_SYSTEM_INFO
{
public uint dwRecordMode; //刻录模式:1 单室双刻模式 2 单室轮刻模式 3 双室双刻模式(修改需要重启设备)
public uint dwWorkMode; //工作模式:0 标准模式 1 通用模式(保留,目前只有标准模式)
public uint dwResolutionMode; //设备分辨率,0:标清 1:D1 2:720P 3:1080P(高清审讯机不用此字段)
public NET_DVR_INQUEST_SENSOR_INFO struSensorInfo; //温湿度传感器配置
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = INQUEST_MAX_ROOM_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_INQUEST_ROOM_INFO[] struInquestRoomInfo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_INQUEST_RESUME_SEGMENT
{
public NET_DVR_TIME struStartTime; //事件起始时间
public NET_DVR_TIME struStopTime; //事件终止时间
public byte byRoomIndex; //审讯室编号,从1开始
public byte byDriveIndex; //刻录机编号,从1开始
public ushort wSegmetSize; //本片断的大小, 单位M
public uint dwSegmentNo; //本片断在本次审讯中的序号,从1开始
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_INQUEST_RESUME_EVENT
{
public uint dwResumeNum; //需恢复的事件个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RESUME_SEGMENT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_INQUEST_RESUME_SEGMENT[] struResumeSegment;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 200, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_INQUEST_DEVICE_VERSION
{
public byte byMainVersion; /*基线主版本.
0 : 未知
1 : 8000审讯DVR
次版本: 1 : 8000HD-S
2 : 8100审讯DVR
次版本: 1 : 审讯81SNL
2 : 审讯81SH
3 : 审讯81SFH
3 : 8608高清审讯机NVR
次版本: 1 : DS-8608SN-SP
2 : DS-8608SN-ST
*/
public byte bySubVersion; //基线次版本
public byte byUpgradeVersion; //升级版本,未升级为0
public byte byCustomizeVersion; //定制版本,非定制为0
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 60, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DISK_RAID_INFO
{
public uint dwSize; //结构体大小
public byte byEnable; //磁盘Raid是否禁用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 35, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SYNCHRONOUS_IPC
{
public uint dwSize; //结构体大小
public byte byEnable; //是否启用:为前端IPC同步设备参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 7, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPC_PASSWD
{
public uint dwSize; //结构体大小
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = PASSWD_LEN)]
public string sOldPasswd; //IPC的旧密码,传给DVR让DVR验证
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = PASSWD_LEN)]
public string sNewPasswd; //IPC的新密码
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//通过获取DVR的网络状态:单位bps
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DEVICE_NET_USING_INFO
{
public uint dwSize; //结构体大小
public uint dwPreview; //预览
public uint dwPlayback; //回放
public uint dwIPCModule; //IPC接入
public uint dwNetDiskRW; //网盘读写
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] res;
}
//通过DVR设置前端IPC的IP地址
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IPC_NETCFG
{
public uint dwSize; //结构体大小
public NET_DVR_IPADDR struIP; //IPC的IP地址
public ushort wPort; //IPC的端口
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 126)]
public string res;
}
//按时间锁定
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_TIME_LOCK
{
public uint dwSize; //结构体大小
public NET_DVR_TIME strBeginTime;
public NET_DVR_TIME strEndTime;
public uint dwChannel; //通道号, 0xff表示所有通道
public uint dwRecordType; //录像类型: 0xffffffff-全部,0-定时录像,1-移动侦测,2-报警触发,3-报警触发或移动侦测,4-报警触发和移动侦测,5-命令触发,6-手动录像,7-智能录像(同文件查找)
public uint dwLockDuration; //锁定持续时间,单位秒,0xffffffff表示永久锁定
public NET_DVR_TIME_EX strUnlockTimePoint; //加锁时有效,当dwLockDuration不为永久锁定时,锁定持续的时间到此时间点就自动解锁
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LOCK_RETURN
{
public uint dwSize; //结构体大小
public NET_DVR_TIME strBeginTime;
public NET_DVR_TIME strEndTime;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//67DVS
//证书下载类型
public enum NET_SDK_UPLOAD_TYPE
{
UPGRADE_CERT_FILE = 0,
UPLOAD_CERT_FILE = 1,
TRIAL_CERT_FILE = 2,
CONFIGURATION_FILE = 3
}
public enum NET_SDK_DOWNLOAD_TYPE
{
NET_SDK_DOWNLOAD_CERT = 0, //下载证书
NET_SDK_DOWNLOAD_IPC_CFG_FILE = 1,//下载IPC配置文件
NET_SDK_DOWNLOAD_BASELINE_SCENE_PIC = 2, //下载基准场景图片
NET_SDK_DOWNLOAD_VQD_ALARM_PIC = 3, //下载VQD报警图片
NET_SDK_DOWNLOAD_CONFIGURATION_FILE = 4 //下载配置文件
}
//下载状态
public enum NET_SDK_DOWNLOAD_STATUS
{
NET_SDK_DOWNLOAD_STATUS_SUCCESS = 1, //下载成功
NET_SDK_DOWNLOAD_STATUS_PROCESSING, //正在下载
NET_SDK_DOWNLOAD_STATUS_FAILED, //下载失败
NET_SDK_DOWNLOAD_STATUS_UNKOWN_ERROR //未知错误
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_BONJOUR_CFG
{
public uint dwSize; // 结构体大小
public byte byEnableBonjour; // Bonjour使能 0 :开启 1:关闭
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] byFriendlyName; // 服务名
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SOCKS_CFG
{
public uint dwSize; // 结构体大小
public byte byEnableSocks; // 使能 0:关闭 1:开启
public byte byVersion; // SOCKS版本 4:SOCKS4 5:SOCKS5
public ushort wProxyPort; // 代理端口,默认1080
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] byProxyaddr; // 代理IP地址,可以是域名
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] byUserName; // 用户名 SOCKS才用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byPassword; // 密码SOCKS5才用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_LOCAL_ADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byLocalAddr; //不使用socks代理的网段,格式为"ip/netmask;ip/netmask;…"
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_QOS_CFG
{
public uint dwSize;
public byte byManageDscp; // 管理数据的DSCP值 [0-63]
public byte byAlarmDscp; // 报警数据的DSCP值 [0-63]
public byte byVideoDscp; // 视频数据的DSCP值 [0-63],byFlag为0时,表示音视频
public byte byAudioDscp; // 音频数据的DSCP值 [0-63],byFlag为1时有效
public byte byFlag; // 0:音视频合一,1:音视频分开
public byte byEnable;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 126, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_HTTPS_CFG
{
public uint dwSize;
public ushort wHttpsPort; // HTTPS端口
public byte byEnable; // 使能 0:关闭 1:开启
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 125, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//证书相关
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CERT_NAME
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_COUNTRY_NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byCountry; //国家代号 CN等
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] byState; //洲或省
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] byLocality; //地区
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] byOrganization; //组织
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] byUnit; //单位
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] byCommonName;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOMAIN_NAME, ArraySubType = UnmanagedType.I1)]
public byte[] byEmail;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CERT_PARAM
{
public uint dwSize;
public ushort wCertFunc; //证书种类,0-802.1x,1-HTTPS
public ushort wCertType; //证书类型,0-CA,1-Certificate,2-私钥文件
public byte byFileType; //证书文件类型,0-PEM,1-PFX
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 35, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
public const int UPLOAD_CERTIFICATE = 1; //上传证书
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CERT_INFO
{
public uint dwSize;
public NET_DVR_CERT_PARAM struCertParam; //证书参数
public uint dwValidDays; //有效天数,类型为自签名时有效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byPasswd; //私钥密码
public NET_DVR_CERT_NAME struCertName; // 证书名称
public NET_DVR_CERT_NAME struIssuerName; // 证书发行者名称(自签名证书信息获取时有效)
public NET_DVR_TIME_EX struBeginTime; //证书创建时间(自签名证书信息获取时有效)
public NET_DVR_TIME_EX struEndTime; //证书截止时间(自签名证书信息获取时有效)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] serialNumber; //证书标识码(自签名证书信息获取时有效)
public byte byVersion;
public byte byKeyAlgorithm; //加密类型 0-RSA 1-DSA
public byte byKeyLen; //加密长度 0-512 1-1024、 2-2048
public byte bySignatureAlgorithm; //签名算法类型(自签名证书信息获取时有效)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//channel record status
//***通道录像状态*****//
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CHANS_RECORD_STATUS
{
public byte byValid; //是否有效
public byte byRecord; /*(只读)录像类型, 按位表示:0: 不在录像;1:在录像 2-空闲
3-无连接 4-无输入视频 5-未加载 6-存档中
7-回传中 8-用户名或密码错 9-未验证
10-存档中和录像中 11-录像回传中和录像中*/
public ushort wChannelNO; //通道号
public uint dwRelatedHD; //关联磁盘
public byte byOffLineRecord; //断网录像功能 0-关闭 1-开启
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 7, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_IP_ALARM_GROUP_NUM
{
public uint dwSize;
public uint dwIPAlarmInGroup; //IP通道报警输入组数
public uint dwIPAlarmInNum; //IP通道报警输入个数
public uint dwIPAlarmOutGroup; //IP通道报警输出组数
public uint dwIPAlarmOutNum; //IP通道报警输出个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//****NVR end***//
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CHAN_GROUP_RECORD_STATUS
{
public uint dwSize; //结构体大小
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_CHANS_RECORD_STATUS[] struChanStatus; //一组64个
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_RECTCFG
{
public ushort wXCoordinate; /*矩形左上角起始点X坐标*/
public ushort wYCoordinate; /*矩形左上角Y坐标*/
public ushort wWidth; /*矩形宽度*/
public ushort wHeight; /*矩形高度*/
}
/*窗口信息*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_WINCFG
{
public uint dwSize;
public byte byVaild;
public byte byInputIdx; /*输入源索引*/
public byte byLayerIdx; /*图层,0为最底层*/
public byte byTransparency; //透明度,0~100
public NET_DVR_RECTCFG struWin;//目的窗口(相对显示墙)
public ushort wScreenHeight;//大屏高
public ushort wScreenWidth;//大屏宽
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALLWINCFG
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_LAYERNUMS, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_WINCFG[] struWinCfg;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCREENZOOM
{
public uint dwSize;
public uint dwScreenNum;//大屏号
public NET_DVR_POINT_FRAME struPointFrame;
public byte byLayer;//图层号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 11, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//2011-04-18
/*摄像机信息,最多9999个,从1开始 */
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_MATRIX_CAMERAINFO
{
public uint dwGlobalCamId; /* cam的全局编号*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sCamName; /*cam的名称*/
public uint dwMatrixId; /*cam对应矩阵的编号*/
public uint dwLocCamId; /*cam对应矩阵的内部编号*/
public byte byValid; /*是否有效,0-否,1-是*/
public byte byPtzCtrl; /* 是否可控,0-否,1-是*/
public byte byUseType; //*使用类型,0-不作为干线使用,1-BNC,2-SP3,3-V6光纤,4-其他光纤*/
public byte byUsedByTrunk;//当前使用状态,0-没有被使用,1-被干线使用
public byte byTrunkReq; /*摄像机分辨率,以D1为单位:1 - 1个D1,2- 2个D1,作为干线使用时,指的是干线的带宽*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_TIME struInstallTime;//安装时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPurpose;/*用途描述*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
/*监视器信息,最多2048个*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_MATRIX_MONITORINFO
{
public uint dwGloalMonId; /*mon 的统一编号*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sMonName;
public uint dwMatrixId; /*mon所在矩阵的编号*/
public uint dwLocalMonId; /*mon的内部编号*/
public byte byValid; /*是否有效,0-否,1-是*/
public byte byTrunkType; /*使用类型,0-不作为干线使用,1-BNC,2-SP3,3-V6光纤,4-其他光纤*/
public byte byUsedByTrunk;//当前使用状态,0-没有被使用,1-被干线使用
public byte byTrunkReq; /*分辨率, 以D1为单位:1- 1个D1,2- 2个D1,作为干线使用时,指的是干线的带宽*/
public NET_DVR_TIME struInstallTime;//安装时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPurpose;/*用途描述*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_MATRIX_DIGITALMATRIX
{
public NET_DVR_IPADDR struAddress; /*设备为数字设备时的IP信息*/
public ushort wPort;
public byte byNicNum; /*0 - eth0, 1 - eth1, 考虑双网口如何通信加入绑定的网口*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 69, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_MATRIX_ANALOGMATRIX
{
public byte bySerPortNum; /*连接的串口号*/
public byte byMatrixSerPortType;/* 矩阵接入网关的串口与模拟矩阵的键盘口(键盘协议)连接还是与矩阵通信口(矩阵协议)连接 ,0 --- 矩阵协议通讯口 1 --- 键盘通讯口*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_SINGLE_RS232 struRS232; //232串口参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 200, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIXLIST
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public uint dwMatrixNum;//设备返回的矩阵数量
public IntPtr pBuffer;//矩阵信息缓冲区
public uint dwBufLen;//所分配指针长度,输入参数
}
/*串口配置信息*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_MATRIX_UARTPARAM
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byPortName;
public ushort wUserId; /*用户编号,当连接设备为键盘时,绑定一个用户,用于权限管理*/
public byte byPortType; /*串口类型,三种0-RS232/1-RS485/2-RS422*/
public byte byFuncType; /*串口连接的设备的类型0-空闲,1-键盘,2-用作透明通道(485串口不可配置成透明通道),3-模拟矩阵*/
public byte byProtocolType; /*串口支持的协议类型, 当连接键盘设备时需要该信息,获取键盘支持协议的编号及描述符*/
public byte byBaudRate;
public byte byDataBits;
public byte byStopBits; /*停止位*/
public byte byParity; /*校验*/
public byte byFlowCtrl; /*流控,软件流控,无流控*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 22, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; /*预留*/
}
//最多256个用户,1~256
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_MATRIX_USERPARAM
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword;
public byte byRole;/*用户角色:0-管理员,1-操作员;只有一个系统管理员,255个操作员*/
public byte byLevel; /*统一级别,用于操作级别管理,1- 255*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 18, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//最多255个资源组
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_MATRIX_RESOURSEGROUPPARAM
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byGroupName;
public byte byGroupType;/*0-摄像机CAM组,1-监视器MON组*/
public byte byRes1;
public ushort wMemNum;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 512, ArraySubType = UnmanagedType.U4)]
public uint[] dwGlobalId;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//最多255个用户组
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_MATRIX_USERGROUPPARAM
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sGroupName;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 255, ArraySubType = UnmanagedType.U2)]
public ushort[] wUserMember; /*包含的用户成员*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 255, ArraySubType = UnmanagedType.U2)]
public ushort[] wResorceGroupMember; /*包含的资源组成员*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byPermission;//权限,数组0-ptz权限、切换权限、查询权限
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_MATRIX_TRUNKPARAM
{
public uint dwSize;
public uint dwTrunkId;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sTrunkName;
public uint dwSrcMonId;
public uint dwDstCamId;
public byte byTrunkType; /*使用类型 1-BNC,2-SP3光纤高清,3-SP3光纤D1, 4-V6光纤,5-其他光纤*/
public byte byAbility; /*表示光纤的带宽,可以传输几路*/
public byte bySubChan; /*针对光纤干线而言,表示子通道号*/
public byte byLevel; /* 干线级别 1-255*/
public ushort wReserveUserID; //预留的用户ID: 1~256 ,0表示释放预留
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 18, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_TRUNKLIST
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public uint dwTrunkNum;//设备返回的干线数量
public IntPtr pBuffer;//干线信息缓冲区
public uint dwBufLen;//所分配指针长度,输入参数
}
public const int MATRIX_PROTOCOL_NUM = 20; //支持的最大矩阵协议数
public const int KEYBOARD_PROTOCOL_NUM = 20; //支持的最大键盘协议数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PROTO_TYPE_EX
{
public ushort wType; /*ipc协议值*/
public ushort wCommunitionType; /*0:模拟 1:数字 2:兼容模拟、数字*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = DESC_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byDescribe; /*协议描述字段*/
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIXMANAGE_ABIILITY
{
public uint dwSize;
public uint dwMaxCameraNum;//最大Camera数量
public uint dwMaxMonitorNum;//最大监视器数量
public ushort wMaxMatrixNum;//最大矩阵数量
public ushort wMaxSerialNum;//串口数量
public ushort wMaxUser;//最大用户数
public ushort wMaxResourceArrayNum;//最大资源组数
public ushort wMaxUserArrayNum;//最大用户组数
public ushort wMaxTrunkNum;//最大干线数
public byte nStartUserNum;//起始用户号
public byte nStartUserGroupNum;//起始用户组号
public byte nStartResourceGroupNum;//起始资源组号
public byte nStartSerialNum;//起始串口号
public uint dwMatrixProtoNum; /*有效的矩阵协议数目,从0开始*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MATRIX_PROTOCOL_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_PROTO_TYPE_EX[] struMatrixProto;/*最大协议列表长度*/
public uint dwKeyBoardProtoNum; /*有效的键盘协议数目,从0开始*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MATRIX_PROTOCOL_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_PROTO_TYPE_EX[] struKeyBoardProto;/*最大协议列表长度*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//人脸抓拍规则(单条)
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_SINGLE_FACESNAPCFG
{
public byte byActive; //是否激活规则:0-否,1-是
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
public NET_VCA_SIZE_FILTER struSizeFilter; //尺寸过滤器
public NET_VCA_POLYGON struVcaPolygon; //人脸识别区域
}
//人脸抓拍规则参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_FACESNAPCFG
{
public uint dwSize;
public byte bySnapTime; //单个目标人脸的抓拍次数0-10
public byte bySnapInterval; //抓拍间隔,单位:帧
public byte bySnapThreshold; //抓拍阈值,0-100
public byte byGenerateRate; //目标生成速度,范围[1, 5]
public byte bySensitive; //目标检测灵敏度,范围[1, 5]
public byte byReferenceBright; //2012-3-27参考亮度[0,100]
public byte byMatchType; //2012-5-3比对报警模式,0-目标消失后报警,1-实时报警
public byte byMatchThreshold; //2012-5-3实时比对阈值,0~100
public NET_DVR_JPEGPARA struPictureParam; //图片规格结构
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RULE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_SINGLE_FACESNAPCFG[] struRule; //人脸抓拍规则
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 100, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//人体特征识别结果结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_HUMAN_FEATURE
{
public byte byAgeGroup; //年龄段,参见 HUMAN_AGE_GROUP_ENUM
public byte bySex; //性别, 0-表示“未知”(算法不支持),1 – 男 , 2 – 女, 0xff-算法支持,但是没有识别出来
public byte byEyeGlass; //是否戴眼镜 0-表示“未知”(算法不支持),1 – 不戴, 2 – 戴,0xff-算法支持,但是没有识别出来
//抓拍图片人脸年龄的使用方式,如byAge为15,byAgeDeviation为1,表示,实际人脸图片年龄的为14-16之间
public byte byAge;//年龄 0-表示“未知”(算法不支持),0xff-算法支持,但是没有识别出来
public byte byAgeDeviation;//年龄误差值
public byte byEthnic; //字段预留,暂不开放
public byte byMask; //是否戴口罩 0-表示“未知”(算法不支持),1 – 不戴, 2 –戴普通眼镜, 3 –戴墨镜,0xff-算法支持,但是没有识别出来
public byte bySmile; //是否微笑 0-表示“未知”(算法不支持),1 – 不微笑, 2 – 微笑, 0xff-算法支持,但是没有识别出来
public byte byFaceExpression; /*表情,参见FACE_EXPRESSION_GROUP_ENUM*/
public byte byBeard; //胡子, 0-不支持,1-没有胡子,2-有胡子,0xff-unknow表示未知,算法支持未检出
public byte byRace; //人种, 0-不支持,1-亚洲人,2-黑人,3-白人,0xff-unknow表示未知,算法支持未检出
public byte byHat; //帽子, 0-不支持,1-不戴帽子,2-戴帽子,0xff-unknow表示未知,算法支持未检出
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//人脸抓拍结果报警上传
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_FACESNAP_RESULT
{
public uint dwSize;
public uint dwRelativeTime;
public uint dwAbsTime;
public uint dwFacePicID;
public uint dwFaceScore;
public NET_VCA_TARGET_INFO struTargetInfo;
public NET_VCA_RECT struRect;
public NET_VCA_DEV_INFO struDevInfo;
public uint dwFacePicLen;
public uint dwBackgroundPicLen;
public byte bySmart; //IDS设备返回0(默认值),Smart Functiom Return 1
public byte byAlarmEndMark;//报警结束标记0-保留,1-结束标记(该字段结合人脸ID字段使用,表示该ID对应的下报警结束,主要提供给NVR使用,用于判断报警结束,提取识别图片数据中,清晰度最高的图片)
public byte byRepeatTimes; //重复报警次数,0-无意义
public byte byUploadEventDataType;//人脸图片数据长传方式:0-二进制数据,1-URL
public NET_VCA_HUMAN_FEATURE struFeature; //人体属性
public float fStayDuration; //停留画面中时间(单位: 秒)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] sStorageIP; //存储服务IP地址
public ushort wStoragePort; //存储服务端口号
public ushort wDevInfoIvmsChannelEx; //与NET_VCA_DEV_INFO里的byIvmsChannel含义相同,能表示更大的值。老客户端用byIvmsChannel能继续兼容,但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx。
public byte byFacePicQuality;
public byte byUIDLen; // 上传报警的标识长度
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; // 保留字节
public IntPtr pUIDBuffer; //标识指针
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 7, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; // 保留字节
public byte byBrokenNetHttp; //断网续传标志位,0-不是重传数据,1-重传数据
public IntPtr pBuffer1;//指向人脸子图的图片数据
public IntPtr pBuffer2;//背景图的图片数据(保留,通过查找背景图接口可以获取背景图)
}
//人脸侦测报警信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FACE_DETECTION
{
public uint dwSize;
public uint dwRelativeTime;
public uint dwAbsTime;
public uint dwBackgroundPicLen;
public NET_VCA_DEV_INFO struDevInfo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 30, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_RECT[] struFacePic; //人脸子图区域,归一化值,相对于大图(背景图)的分辨率
public byte byFacePicNum;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 255, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留
public IntPtr pBackgroundPicpBuffer;//背景图的图片数据
}
//虚焦侦测结果
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DEFOCUS_ALARM
{
public uint dwSize; /*结构长度*/
public NET_VCA_DEV_INFO struDevInfo;/*设备信息*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_AUDIOEXCEPTION_ALARM
{
public uint dwSize; /*结构长度*/
public byte byAlarmType;//报警类型,1-音频输入异常,2-音频输入突变
public byte byRes1;
public ushort wAudioDecibel;//声音强度(音频输入突变时用到)
public NET_VCA_DEV_INFO struDevInfo;/*设备信息*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_BUTTON_DOWN_EXCEPTION_ALARM
{
public uint dwSize; /*结构长度*/
public NET_VCA_DEV_INFO struDevInfo;/*设备信息*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_FD_IMAGE_CFG
{
public uint dwWidth; //灰度图像数据宽度
public uint dwHeight; //灰度图像高度
public uint dwImageLen; //灰度图像数据长度
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
public IntPtr pImage; //灰度图像数据
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_FD_PROCIMG_CFG
{
public uint dwSize; //结构大小
public byte byEnable; //是否激活规则;
public byte bySensitivity; //检测灵敏度,[0,5]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 22, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留字节
public NET_VCA_SIZE_FILTER struSizeFilter; //尺寸过滤器
public NET_VCA_POLYGON struPolygon; //多边形
public NET_VCA_FD_IMAGE_CFG struFDImage; //图片信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_SUB_PROCIMG
{
public uint dwImageLen; //图片数据长度
public uint dwFaceScore; //人脸评分,0-100
public NET_VCA_RECT struVcaRect; //人脸子图区域
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
public IntPtr pImage; //图片数据
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_FD_PROCIMG_RESULT
{
public uint dwSize; //结构大小
public uint dwImageId; //大图ID
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
public uint dwSubImageNum; //人脸子图张数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_TARGET_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_SUB_PROCIMG[] struProcImg; //单张子图信息
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_PICMODEL_RESULT
{
public uint dwImageLen; //图片数据长度
public uint dwModelLen; //模型数据长度
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
public IntPtr pImage; //人脸图片数据指针
public IntPtr pModel; //模型数据指针
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_REGISTER_PIC
{
public uint dwImageID; //大图ID
public uint dwFaceScore; //人脸评分,0-100
public NET_VCA_RECT struVcaRect; //人脸子图区域
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//籍贯参数结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_AREAINFOCFG
{
public ushort wNationalityID;//国籍
public ushort wProvinceID;//省
public ushort wCityID;//市
public ushort wCountyID;//县
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留
}
//人员信息结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_HUMAN_ATTRIBUTE
{
public byte bySex;//性别:0-男,1-女
public byte byCertificateType;//证件类型:0-身份证,1-警官证
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_HUMAN_BIRTHDATE_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byBirthDate;//出生年月,如:201106
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byName; //姓名
public NET_DVR_AREAINFOCFG struNativePlace;//籍贯参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byCertificateNumber; //证件号
public uint dwPersonInfoExtendLen;// 人员标签信息扩展长度
public IntPtr pPersonInfoExtend; //人员标签信息扩展信息
public byte byAgeGroup;//年龄段,详见HUMAN_AGE_GROUP_ENUM,如传入0xff表示未知
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 11, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;//保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_HUMANATTRIBUTE_COND
{
public byte bySex; //性别:0-不启用,1-男,2-女
public byte byCertificateType; //证件类型:0-不启用,1-身份证,2-警官证
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_HUMAN_BIRTHDATE_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byStartBirthDate; //起始出生年月,如:201106
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_HUMAN_BIRTHDATE_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byEndBirthDate; //截止出生年月,如201106
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byName; //姓名
public NET_DVR_AREAINFOCFG struNativePlace; //籍贯参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byCertificateNumber; //证件号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//黑名单信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_BLOCKLIST_INFO
{
public uint dwSize;//结构大小
public uint dwRegisterID;//名单注册ID号(只读)
public uint dwGroupNo;//分组号
public byte byType;
public byte byLevel;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;//保留
public NET_VCA_HUMAN_ATTRIBUTE struAttribute;//人员信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRemark;//备注信息
public uint dwFDDescriptionLen;//人脸库描述数据长度
public IntPtr pFDDescriptionBuffer;//人脸库描述数据指针
public uint dwFCAdditionInfoLen;//抓拍库附加信息长度
public IntPtr pFCAdditionInfoBuffer;//抓拍库附加信息数据指针(FCAdditionInfo中包含相机PTZ坐标)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;//保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_BLOCKLIST_PARA
{
public uint dwSize; //结构大小
public NET_VCA_BLOCKLIST_INFO struBlockkListInfo;
public uint dwRegisterPicNum; //黑名单图个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_HUMAN_PICTURE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_PICMODEL_RESULT[] struRegisterPic;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_BLOCKLIST_COND
{
public Int32 lChannel; //通道号
public uint dwGroupNo; //分组号
public byte byType; //黑白名单标志:0-全部,1-白名单,2-黑名单
public byte byLevel; //黑名单等级,0-全部,1-低,2-中,3-高
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public NET_VCA_HUMAN_ATTRIBUTE struAttribute; //人员信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_BLOCKLIST_PIC
{
public uint dwSize; //结构大小
public uint dwFacePicNum; //人脸图个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_HUMAN_PICTURE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_PICMODEL_RESULT[] struBlockListPic; //单张照片信息
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_FIND_PICTURECOND
{
public Int32 lChannel;//通道号
public NET_DVR_TIME struStartTime;//开始时间
public NET_DVR_TIME struStopTime;//结束时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
public const int MAX_FACE_PIC_LEN = 6144; //最大人脸图片数据长度
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_SUB_SNAPPIC_DATA
{
public uint dwFacePicID; //人脸图ID
public uint dwFacePicLen; //人脸图数据长度
public NET_DVR_TIME struSnapTime; //抓拍时间
public uint dwSimilarity; //相似度
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = MAX_FACE_PIC_LEN)]
public string sPicBuf; //图片数据
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_ADVANCE_FIND
{
public uint dwFacePicID; //人脸图片ID
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 36, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_NORMAL_FIND
{
public uint dwImageID; //大图ID
public uint dwFaceScore; //人脸评分
public NET_VCA_RECT struVcaRect; //人脸子图区域
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct NET_VCA_FIND_SNAPPIC_UNION
{
//联合体大小为44字节
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 44, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
/*[FieldOffsetAttribute(0)]
public NET_VCA_NORMAL_FIND struNormalFind; //普通检索
[FieldOffsetAttribute(0)]
public NET_VCA_ADVANCE_FIND struAdvanceFind; //高级检索
* */
}
public enum VCA_FIND_SNAPPIC_TYPE
{
VCA_NORMAL_FIND = 0x00000000, //普通检索
VCA_ADVANCE_FIND = 0x00000001 //高级检索
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_FIND_PICTURECOND_ADVANCE
{
public Int32 lChannel;//通道号
public NET_DVR_TIME struStartTime;//开始时间
public NET_DVR_TIME struStopTime;//结束时间
public byte byThreshold; //阈值,0-100
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 23, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
public VCA_FIND_SNAPPIC_TYPE dwFindType;//检索类型,详见VCA_FIND_SNAPPIC_TYPE
public NET_VCA_FIND_SNAPPIC_UNION uFindParam; //检索参数
}
//人脸抓拍信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_FACESNAP_INFO_ALARM
{
public uint dwRelativeTime; // 相对时标
public uint dwAbsTime; // 绝对时标
public uint dwSnapFacePicID; //抓拍人脸图ID
public uint dwSnapFacePicLen; //抓拍人脸子图的长度,为0表示没有图片,大于0表示有图片
public NET_VCA_DEV_INFO struDevInfo; //前端设备信息
public byte byFaceScore; //人脸评分,指人脸子图的质量的评分,0-100
public byte bySex;//性别,0-未知,1-男,2-女
public byte byGlasses;//是否带眼镜,0-未知,1-是,2-否
/*
* 识别人脸的年龄段范围[byAge-byAgeDeviation,byAge+byAgeDeviation]
*/
public byte byAge;//年龄
public byte byAgeDeviation;//年龄误差值
public byte byAgeGroup;//年龄段,详见HUMAN_AGE_GROUP_ENUM,若传入0xff表示未知
/*人脸子图图片质量评估等级,0-低等质量,1-中等质量,2-高等质量,
该质量评估算法仅针对人脸子图单张图片,具体是通过姿态、清晰度、遮挡情况、光照情况等可影响人脸识别性能的因素综合评估的结果*/
public byte byFacePicQuality;
public byte byEthnic; //字段预留,暂不开放
public uint dwUIDLen; // 上传报警的标识长度
public IntPtr pUIDBuffer; //标识指针
public float fStayDuration; //停留画面中时间(单位: 秒)
public IntPtr pBuffer1; //抓拍人脸子图的图片数据
}
//黑名单报警信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_BLOCKLIST_INFO_ALARM
{
public NET_VCA_BLOCKLIST_INFO struBlockListInfo;
public uint dwBlockListPicLen; //黑名单人脸子图的长度,为0表示没有图片,大于0表示有图片
public uint dwFDIDLen;// 人脸库ID长度
public IntPtr pFDID; //人脸库Id指针
public uint dwPIDLen;// 人脸库图片ID长度
public IntPtr pPID; //人脸库图片ID指针
public ushort wThresholdValue; //人脸库阈值[0,100]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留
public IntPtr pBuffer1;//指向图片的指针
}
//黑名单比对结果报警上传
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_FACESNAP_MATCH_ALARM
{
public uint dwSize; // 结构大小
public float fSimilarity; //相似度,[0.001,1]
public NET_VCA_FACESNAP_INFO_ALARM struSnapInfo; //抓拍信息
public NET_VCA_BLOCKLIST_INFO_ALARM struBlockListInfo; //黑名单信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] sStorageIP; //存储服务IP地址
public ushort wStoragePort; //存储服务端口号
public byte byMatchPicNum; //匹配图片的数量,0-保留(老设备这个值默认0,新设备这个值为0时表示后续没有匹配的图片信息)
public byte byPicTransType;//图片数据传输方式: 0-二进制;1-url
public uint dwSnapPicLen;//设备识别抓拍图片长度
public IntPtr pSnapPicBuffer;//设备识别抓拍图片指针
public NET_VCA_RECT struRegion;//目标边界框,设备识别抓拍图片中,人脸子图坐标
public uint dwModelDataLen;//建模数据长度
public IntPtr pModelDataBuffer;// 建模数据指针
public byte byModelingStatus;// 建模状态
public byte byLivenessDetectionStatus;//活体检测状态:0-保留,1-未知(检测失败),2-非真人人脸,3-真人人脸,4-未开启活体检测
public byte cTimeDifferenceH; /*与UTC的时差(小时),-12 ... +14, +表示东区,0xff无效*/
public byte cTimeDifferenceM; /*与UTC的时差(分钟),-30, 30, 45, +表示东区,0xff无效*/
public byte byMask; //抓拍图是否戴口罩,0-保留,1-未知,2-不戴口罩,3-戴口罩
public byte bySmile; //抓拍图是否微笑,0-保留,1-未知,2-不微笑,3-微笑
public byte byContrastStatus; //比对结果,0-保留,1-比对成功,2-比对失败
public byte byBrokenNetHttp; //断网续传标志位,0-不是重传数据,1-重传数据
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_BLOCKLIST_INFO_ALARM_LOG
{
public NET_VCA_BLOCKLIST_INFO struBlockListInfo;
public uint dwBlockListPicID;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_FACESNAP_INFO_ALARM_LOG
{
public uint dwRelativeTime; // 相对时标
public uint dwAbsTime; // 绝对时标
public uint dwSnapFacePicID; //抓拍人脸图ID
public NET_VCA_DEV_INFO struDevInfo; //前端设备信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_FACESNAP_MATCH_ALARM_LOG
{
public uint dwSize; // 结构大小
public float fSimilarity; //相似度,[0.001,1]
public NET_VCA_FACESNAP_INFO_ALARM_LOG struSnapInfoLog; //抓拍信息
public NET_VCA_BLOCKLIST_INFO_ALARM_LOG struBlockListInfoLog; //黑名单信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 60, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_FACEMATCH_PICCOND
{
public uint dwSize; // 结构大小
public uint dwSnapFaceID; //抓拍人脸子图ID
public uint dwBlockListID; //匹配的黑名单ID
public uint dwBlockListFaceID; //比对的黑名单人脸子图ID
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; // 保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_FACEMATCH_PICTURE
{
public uint dwSize; // 结构大小
public uint dwSnapFaceLen; //抓拍人脸子图长度
public uint dwBlockListFaceLen; //比对的黑名单人脸子图长度
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留字节
public IntPtr pSnapFace; //抓拍人脸子图的图片数据
public IntPtr pBlockListFace; //比对的黑名单人脸子图数据
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_BLOCKLIST_FASTREGISTER_PARA
{
public uint dwSize; //结构大小
public NET_VCA_BLOCKLIST_INFO struBlockListInfo; //黑名单基本参数
public uint dwImageLen; //图像数据长度
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 124, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
public IntPtr pImage; //图像数据
}
//单个分区配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_SINGLE_PATH
{
public byte byActive; // 是否可用,0-否,1-是
public byte byType; //0-存储抓拍,1-存储黑名单比对报警,2-存储抓拍和黑名单比对报警,0xff-无效
public byte bySaveAlarmPic; //是否用于保存断网的报警图片,0-否,1-是
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留
public uint dwDiskDriver; //盘符号,从0开始
public uint dwLeftSpace; //预留容量(单位为G)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//存储路径设置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_SAVE_PATH_CFG
{
public uint dwSize; //结构大小
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DISKNUM_V30, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_SINGLE_PATH[] struPathInfo; //单个分区
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DEV_ACCESS_CFG
{
public uint dwSize;
public NET_DVR_IPADDR struIP; //接入设备的IP地址
public ushort wDevicePort; //端口号
public byte byEnable; //是否启用,0-否,1-是
public byte byRes1; //保留
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName; //接入设备的登录帐号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword; //接入设备的登录密码
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 60, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
/********************************智能人脸识别 end****************************/
//分辨率
public const int NOT_AVALIABLE = 0;
public const int SVGA_60HZ = 52505660;
public const int SVGA_75HZ = 52505675;
public const int XGA_60HZ = 67207228;
public const int XGA_75HZ = 67207243;
public const int SXGA_60HZ = 84017212;
public const int SXGA2_60HZ = 84009020;
public const int _720P_60HZ = 83978300;
public const int _720P_50HZ = 83978290;
public const int _1080I_60HZ = 394402876;
public const int _1080I_50HZ = 394402866;
public const int _1080P_60HZ = 125967420;
public const int _1080P_50HZ = 125967410;
public const int _1080P_30HZ = 125967390;
public const int _1080P_25HZ = 125967385;
public const int _1080P_24HZ = 125967384;
public const int UXGA_60HZ = 105011260;
public const int UXGA_30HZ = 105011230;
public const int WSXGA_60HZ = 110234940;
public const int WUXGA_60HZ = 125982780;
public const int WUXGA_30HZ = 125982750;
public const int WXGA_60HZ = 89227324;
public const int SXGA_PLUS_60HZ = 91884860;
//显示通道画面分割模式
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DISPWINDOWMODE
{
public byte byDispChanType;//显示通道类型:0-VGA, 1-BNC, 2-HDMI, 3-DVI
public byte byDispChanSeq;//显示通道序号,从1开始,如果类型是VGA,则表示第几个VGA
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_WINDOWS_NUM, ArraySubType = UnmanagedType.I1)]
public byte[] byDispMode;
}
//显示通道信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DISPINFO
{
public byte byChanNums;//通道个数
public byte byStartChan;//起始通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_SUPPORT_RES, ArraySubType = UnmanagedType.U1)]
public uint[] dwSupportResolution;//支持的分辨率
}
//大屏拼接信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCREENINFO
{
public byte bySupportBigScreenNums;//最多大屏拼接数量
public byte byStartBigScreenNum;//大屏拼接起始号
public byte byMaxScreenX;//大屏拼接模式
public byte byMaxScreenY;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_ABILITY_V41
{
public uint dwSize;
public byte byDspNums;//DSP个数
public byte byDecChanNums;//解码通道数
public byte byStartChan;//起始解码通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_DISPINFO struVgaInfo;//VGA显示通道信息
public NET_DVR_DISPINFO struBncInfo;//BNC显示通道信息
public NET_DVR_DISPINFO struHdmiInfo;//HDMI显示通道信息
public NET_DVR_DISPINFO struDviInfo;//DVI显示通道信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DISPNUM_V41, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_DISPWINDOWMODE[] struDispMode;
public NET_DVR_SCREENINFO struBigScreenInfo;
public byte bySupportAutoReboot; //是否支持自动重启,0-不支持,1-支持
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 119, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
public const int MAX_WINDOWS = 16;//最大窗口数
public const int MAX_WINDOWS_V41 = 36;
public const int STARTDISPCHAN_VGA = 1;
public const int STARTDISPCHAN_BNC = 9;
public const int STARTDISPCHAN_HDMI = 25;
public const int STARTDISPCHAN_DVI = 29;
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct NET_DVR_VIDEO_PLATFORM
{
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 160, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
/*[FieldOffsetAttribute(0)]
public VideoPlatform struVideoPlatform;
[FieldOffsetAttribute(0)]
public NotVideoPlatform struNotVideoPlatform;
* */
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct VideoPlatform
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_WINDOWS_V41, ArraySubType = UnmanagedType.I1)]
public byte[] byJoinDecoderId;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_WINDOWS_V41, ArraySubType = UnmanagedType.I1)]
public byte[] byDecResolution;
public NET_DVR_RECTCFG struPosition; //显示通道在电视墙中位置
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 80, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NotVideoPlatform
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 160, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
/*显示通道配置结构体*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_VOUTCFG
{
public uint dwSize;
public byte byAudio; /*音频是否开启*/
public byte byAudioWindowIdx; /*音频开启子窗口*/
public byte byDispChanType; /*显示通道类型:0-BNC,1-VGA,2-HDMI,3-DVI,4-YPbPr(解码卡服务器DECODER_SERVER专用)*/
public byte byVedioFormat; /*1:NTSC,2:PAL,0-NULL*/
public uint dwResolution;//分辨率
public uint dwWindowMode; /*画面模式,能力集获取*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_WINDOWS_V41, ArraySubType = UnmanagedType.I1)]
public byte[] byJoinDecChan;/*各个子窗口关联的解码通道,设备支持解码资源自动分配时此参数不用填充*/
public byte byEnlargeStatus; /*是否处于放大状态,0:不放大,1:放大*/
public byte byEnlargeSubWindowIndex;//放大的子窗口号
public byte byScale; /*显示模式,0---真实显示,1---缩放显示( 针对BNC )*/
public byte byUnionType;/*区分共用体,0-视频综合平台内部解码器显示通道配置,1-其他解码器显示通道配置*/
public NET_DVR_VIDEO_PLATFORM struDiff;
public uint dwDispChanNum; //显示输出号,此参数在全部获取时有效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 76, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
/*解码器设备状态*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DISP_CHAN_STATUS_V41
{
public byte byDispStatus; /*显示状态:0:未显示,1:启动显示*/
public byte byBVGA; /*0-BNC,1-VGA, 2-HDMI,3-DVI,0xff-无效*/
public byte byVideoFormat; /*视频制式,1:NTSC,2:PAL,0-NON*/
public byte byWindowMode; /*画面模式*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_WINDOWS_V41, ArraySubType = UnmanagedType.I1)]
public byte[] byJoinDecChan; /*各个子画面关联的解码通道*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_WINDOWS_V41, ArraySubType = UnmanagedType.I1)]
public byte[] byFpsDisp; /*每个子画面的显示帧率*/
public byte byScreenMode; /*屏幕模式0-普通 1-大屏*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwDispChan; /*获取全部显示通道状态时有效,设置时可填0*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
/*解码器设备状态*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DECODER_WORK_STATUS_V41
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_MATRIX_CHAN_STATUS[] struDecChanStatus; /*解码通道状态*/
/*显示通道状态*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DISPNUM_V41, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_DISP_CHAN_STATUS_V41[] struDispChanStatus;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byAlarmInStatus; /*报警输入状态*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byAlarmOutStatus; /*报警输出状态*/
public byte byAudioInChanStatus; /*语音对讲状态*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 127, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
/*******************************文件回放-远程回放设置*******************************/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_DEC_REMOTE_PLAY_V41
{
public uint dwSize;
public NET_DVR_IPADDR struIP; /* DVR IP地址 */
public ushort wDVRPort; /* 端口号 */
public byte byChannel; /* 通道号 */
public byte byReserve;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName; /* 用户名 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword; /* 密码 */
public uint dwPlayMode; /* 0-按文件 1-按时间*/
public NET_DVR_TIME StartTime;
public NET_DVR_TIME StopTime;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 128)]
public string sFileName;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; /*保留*/
}
public const int MAX_BIGSCREENNUM_SCENE = 100;
//显示通道配置结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_RECTCFG_SCENE
{
public ushort wXCoordinate; /*矩形左上角起始点X坐标*/
public ushort wYCoordinate; /*矩形左上角Y坐标*/
public ushort wWidth; /*矩形宽度*/
public ushort wHeight; /*矩形高度*/
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCENEDISPCFG
{
public byte byEnable;//是否启用,0-不启用,1-启用
public byte bySoltNum;//槽位号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public byte byDispChanNum;
public byte byAudio; /*音频是否开启,0-否,1-是*/
public byte byAudioWindowIdx; /*音频开启子窗口*/
public byte byVedioFormat; /*1:NTSC,2:PAL,0-NULL*/
public byte byWindowMode; /*画面模式,从能力集获取*/
public byte byEnlargeStatus; /*是否处于放大状态,0:不放大,1:放大*/
public byte byEnlargeSubWindowIndex;//放大的子窗口号
public byte byScale; /*显示模式,0-真实显示,1-缩放显示( 针对BNC )*/
public uint dwResolution;//分辨率
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_WINDOWS_V41, ArraySubType = UnmanagedType.I1)]
public byte[] byJoinDecChan;/*各个子窗口关联的解码通道*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_WINDOWS_V41, ArraySubType = UnmanagedType.I1)]
public byte[] byJoinDecoderId;/*槽位号*/
//显示窗口所解视频分辨率,1-D1,2-720P,3-1080P,设备端需要根据此//分辨率进行解码通道的分配,如1分屏配置成1080P,则设备会把4个解码通道都分配给此解码通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_WINDOWS_V41, ArraySubType = UnmanagedType.I1)]
public byte[] byDecResolution;
public byte byRow;//大屏所在的行的序号
public byte byColumn;//大屏所在的列的序号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public NET_DVR_RECTCFG struDisp; //电视墙显示位置
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DEV_CHAN_INFO_SCENE
{
public NET_DVR_IPADDR struIP; /* DVR IP地址 */
public ushort wDVRPort; /* 端口号 */
public byte byChannel; /* 通道号,对于9000等设备的IPC接入,通道号从33开始 */
public byte byTransProtocol; /* 传输协议类型0-TCP,1-UDP ,2-MCAST,3-RTP*/
public byte byTransMode; /* 传输码流模式 0-主码流 1-子码流*/
public byte byFactoryType; /*前端设备厂家类型*/
public byte byDeviceType; //设备类型,1-IPC,2- ENCODER
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName; /* 监控主机登陆帐号 */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword; /* 监控主机密码 */
}
/*流媒体服务器基本配置*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_STREAM_MEDIA_SERVER_CFG_SCENE
{
public byte byValid; /*是否启用流媒体服务器取流,0表示无效*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_IPADDR struDevIP; /*流媒体服务器地址*/
public ushort wDevPort; /*流媒体服务器端口*/
public byte byTransmitType; /*传输协议类型0-TCP,1-UDP */
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PU_STREAM_CFG_SCENE
{
public NET_DVR_STREAM_MEDIA_SERVER_CFG_SCENE streamMediaServerCfg;
public NET_DVR_DEV_CHAN_INFO_SCENE struDevChanInfo;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CYC_SUR_CHAN_ELE_SCENE
{
public byte byEnable; /* 是否启用 0-否 1-启用*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public NET_DVR_STREAM_MEDIA_SERVER_CFG_SCENE struStreamMediaSvrCfg;
public NET_DVR_DEV_CHAN_INFO_SCENE struDecChanInfo; /*轮巡解码通道信息*/
}
//轮巡解码结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_LOOP_DECINFO_SCENE
{
public ushort wPoolTime; /*轮询间隔*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CYCLE_CHAN, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_CYC_SUR_CHAN_ELE_SCENE[] struChanArray;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_BIGSCREENCFG_SCENE
{
public byte byAllValid; /*漫游使能标志 */
public byte byAssociateBaseMap;//关联的底图序号,0代表不关联
public byte byEnableSpartan;//大屏畅显使能,1-开,0-关
public byte byRes;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_LAYERNUMS, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_WINCFG[] struWinCfg;
public NET_DVR_BIGSCREENCFG struBigScreen;
public void Init()
{
struBigScreen = new NET_DVR_BIGSCREENCFG();
struWinCfg = new NET_DVR_WINCFG[MAX_LAYERNUMS];
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_SCENECFG
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sSceneName;
public byte byBigScreenNums;//大屏的个数,最大值通过能力集获取
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public ushort wDecChanNums;//场景中解码通道的个数
public ushort wDispChanNums;//场景中显示通道的个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public IntPtr pBigScreenBuffer;//大屏配置缓冲区, byBigScreenNums×sizeof(NET_DVR_BIGSCREENCFG_SCENE)
public IntPtr pDecChanBuffer;//解码通道配置缓冲区, wDecChanNums×sizeof(NET_DVR_DECODECHANCFG_SCENE)
public IntPtr pDispChanBuffer;//显示通道配置缓冲区, wDispChanNums×sizeof(NET_DVR_SCENEDISPCFG)
public void Init()
{
sSceneName = new byte[NAME_LEN];
byRes1 = new byte[3];
byRes1 = new byte[12];
}
}
public const int NET_DVR_GET_ALLWINCFG = 1503; //窗口参数获取
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_BIGSCREENASSOCIATECFG
{
public uint dwSize;
public byte byEnableBaseMap;//使能底图显示
public byte byAssociateBaseMap;//关联的底图序号,0代表不关联
public byte byEnableSpartan;//大屏畅显使能,1-开,0-关
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 21, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
/*******************************窗口设置*******************************/
public const int MAX_WIN_COUNT = 224; //支持的最大开窗数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCREEN_WINCFG
{
public uint dwSize;
public byte byVaild;
public byte byInputType; //见CAM_MDOE
public ushort wInputIdx; /*输入源索引*/
public uint dwLayerIdx; /*图层,0为最底层*/
public NET_DVR_RECTCFG struWin; //目的窗口(相对显示墙)
public byte byWndIndex; //窗口号
public byte byCBD; //0-无,1-带背景,2-不带背景
public byte bySubWnd; //0不是,1是
public byte byRes1;
public uint dwDeviceIndex;//设备序号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_WINLIST
{
public uint dwSize;
public ushort wScreenSeq; //设备序号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 10, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public uint dwWinNum; //设备返回的窗口数量
public IntPtr pBuffer; //窗口信息缓冲区,最大为224*sizeof(NET_DVR_WINCFG)
public uint dwBufLen; //所分配指针长度
}
public const int MAX_LAYOUT_COUNT = 16; //最大布局数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LAYOUTCFG
{
public uint dwSize;
public byte byValid; //布局是否有效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byLayoutName; //布局名称
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_WIN_COUNT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCREEN_WINCFG[] struWinCfg; //布局内窗口参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LAYOUT_LIST
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_LAYOUT_COUNT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_LAYOUTCFG[] struLayoutInfo; //所有布局
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
public const int MAX_CAM_COUNT = 224;
public enum NET_DVR_CAM_MODE
{
NET_DVR_UNKNOW = 0,//无效
NET_DVR_CAM_BNC,
NET_DVR_CAM_VGA,
NET_DVR_CAM_DVI,
NET_DVR_CAM_HDMI,
NET_DVR_CAM_IP,
NET_DVR_CAM_RGB,
NET_DVR_CAM_DECODER,
NET_DVR_CAM_MATRIX,
NET_DVR_CAM_YPBPR,
NET_DVR_CAM_USB,
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_INPUTSTREAMCFG
{
public uint dwSize;
public byte byValid;
public byte byCamMode; //信号输入源类型,见NET_DVR_CAM_MODE
public ushort wInputNo; //信号源序号0-224
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sCamName; //信号输入源名称
public NET_DVR_VIDEOEFFECT struVideoEffect; //视频参数
public NET_DVR_PU_STREAM_CFG struPuStream; //ip输入时使用
public ushort wBoardNum; //信号源所在的板卡号
public ushort wInputIdxOnBoard; //信号源在板卡上的位置
public ushort wResolutionX; //分辨率
public ushort wResolutionY;
public byte byVideoFormat; //视频制式,0-无,1-NTSC,2-PAL
public byte byNetSignalResolution; //; 1-CIF 2-4CIF 3-720P 4-1080P 5-500wp 。网络信号源的分辨率,在添加网络信号源时传给设备,设备根据这个分辨率来分配解码资源。
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sGroupName; //网络信号源分组 组名
public byte byJointMatrix; // 关联矩阵 ,0-不关联 1-关联
public byte byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_INPUTSTREAM_LIST
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CAM_COUNT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_INPUTSTREAMCFG[] struInputStreamInfo; //所有信号源
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
/*******************************输出参数配置*******************************/
/*输出通道管理*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_OUTPUTPARAM
{
public uint dwSize;
public byte byMonMode; /*输出连接模式,1-BNC,2-VGA,3-DVI,4-HDMI*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwResolution; /*分辨率,根据能力集获取所支持的进行设置*/
public NET_DVR_VIDEOEFFECT struVideoEffect; /*输出通道视频参数配置*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_OUTPUTCFG
{
public uint dwSize;
public byte byScreenLayX; //大屏布局-横坐标
public byte byScreenLayY; //大屏布局-纵坐标
public ushort wOutputChanNum; //输出通道个数,0表示设备支持的最大输出通道个数,最大个数从能力集获取,其他值表示实际输出通道个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_OUTPUTPARAM struOutputParam; /*输出通道视频参数配置*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] sWallName; //电视墙名称
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
/*******************************能力集*******************************/
public const int SCREEN_PROTOCOL_NUM = 20; //支持的最大大屏控制器协议数
//多屏服务器能力集
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCREENSERVER_ABILITY
{
public uint dwSize; /*结构长度*/
public byte byIsSupportScreenNum; /*所支持大屏控制器的数目*/
public byte bySerialNums; //串口个数
public byte byMaxInputNums;
public byte byMaxLayoutNums;
public byte byMaxWinNums;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 19, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public byte byMaxScreenLayX;//大屏布局-最大横坐标大屏数
public byte byMaxScreenLayY;//大屏布局-最大纵坐标大屏数
public ushort wMatrixProtoNum; /*有效的大屏协议数目*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SCREEN_PROTOCOL_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_PROTO_TYPE[] struScreenProto;/*最大协议列表*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//多屏控制器能力集
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCREENCONTROL_ABILITY
{
public uint dwSize; /*结构长度*/
public byte byLayoutNum; /* 布局个数*/
public byte byWinNum; /*屏幕窗口个数*/
public byte byOsdNum; /*OSD个数*/
public byte byLogoNum; /*Logo个数*/
public byte byInputStreamNum; //输入源个数 ---设备支持最大输入通道个数(包括本地输入源和网络输入源)
public byte byOutputChanNum; //输出通道个数---设备支持最大输出通道个数
public byte byCamGroupNum; /*分组个数*/
public byte byPlanNum; /*预案个数*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public byte byIsSupportPlayBack; /*是否支持回放*/
public byte byMatrixInputNum; //支持输入矩阵最大个数
public byte byMatrixOutputNum; //支持输出矩阵最大个数
public NET_DVR_DISPINFO struVgaInfo;//VGA输出信息
public NET_DVR_DISPINFO struBncInfo;//BNC输出信息
public NET_DVR_DISPINFO struHdmiInfo;//HDMI输出信息
public NET_DVR_DISPINFO struDviInfo;//DVI输出信息
public byte byMaxUserNums;//支持用户数
public byte byPicSpan; //底图跨度,一张底图最多可覆盖的屏幕数
public ushort wDVCSDevNum; //分布式大屏控制器最大设备数
public ushort wNetSignalNum; //最大网络输入源个数
public ushort wBaseCoordinateX;//基准坐标
public ushort wBaseCoordinateY;
public byte byExternalMatrixNum; //最大外接矩阵个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 49, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
/*******************************输入信号状态*******************************/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ANALOGINPUTSTATUS
{
public uint dwLostFrame; /*视频输入丢帧数*/
public byte byHaveSignal; /*是否有视频信号输入*/
public byte byVideoFormat; /*视频制式,1:NTSC,2:PAL,0:无*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 46, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct NET_DVR_INPUTSTATUS_UNION
{
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 52, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
/*[FieldOffsetAttribute(0)]
public NET_DVR_MATRIX_CHAN_STATUS struIpInputStatus;
[FieldOffsetAttribute(0)]
public NET_DVR_ANALOGINPUTSTATUS struAnalogInputStatus;
* */
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_INPUTSTATUS
{
public ushort wInputNo; /*信号源序号*/
public byte byInputType; //见NET_DVR_CAM_MODE
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 9, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_INPUTSTATUS_UNION struStatusUnion;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCREENINPUTSTATUS
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public uint dwNums; //设备返回的输入源状态的数量
public IntPtr pBuffer; //缓冲区
public uint dwBufLen; //所分配指针长度,输入参数
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCREENALARMCFG
{
public uint dwSize;
public byte byAlarmType; //报警类型,1-子板拔出,2-子板插入,3-子系统状态异常,4-子系统恢复恢复 5-输入源异常 6-温度报警 7-FPGA版本不匹配 8-预案开始 9-预案结束 10-解码板断网 11-解码板IP地址冲突,12-风扇异常
public byte byBoardType; // 1-输入板 2-输出板 ,3-主板,4-背板,报警类型为1,2,3,6的时候使用
public byte bySubException; //输入异常时具体子异常 1- 分辨率正常改变 2-输入端口类型改变3-分辨率错误4-分辨率改变导致解码资源不足,关闭该输入源对应窗口。5-分辨率改变,导致已开窗的缩放比例不在1/8到8倍范围。6-分辨率恢复正常,7-分辨率改变导致输出板数据量超限,设备关闭窗口
public byte byRes1;
public ushort wStartInputNum; // 异常输入源(异常起点)
public ushort wEndInputNum; // 异常输入源(异常终点)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MATRIX_CFG
{
public byte byValid; //判断是否是模拟矩阵(是否有效)
public byte byCommandProtocol; //模拟矩阵的指令(4种)
public byte byScreenType; //保留
public byte byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byScreenToMatrix; //模拟矩阵的输出与屏幕的对应关系
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DIGITALSCREEN
{
public NET_DVR_IPADDR struAddress;/*设备为数字设备时的IP信息*/
public ushort wPort; //通道号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 26, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ANALOGSCREEN
{
public byte byDevSerPortNum; /*连接设备的串口号*/
public byte byScreenSerPort; /*连接大屏的串口号*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 130, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public NET_DVR_MATRIX_CFG struMatrixCfg;
}
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct NET_DVR_SCREEN_UNION
{
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 172, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
/*[FieldOffsetAttribute(0)]
public NET_DVR_DIGITALSCREEN struDigitalScreen;
[FieldOffsetAttribute(0)]
public NET_DVR_ANALOGSCREEN struAnalogScreen;
* */
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCREEN_SCREENINFO
{
public uint dwSize;
public byte byValid; //是否有效
public byte nLinkMode; //连接方式,0-串口,1-网口
public byte byDeviceType; //设备型号,能力集获取
public byte byScreenLayX; //大屏布局-横坐标
public byte byScreenLayY; //大屏布局-纵坐标
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName; /*登录用户名*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPassword; /*登录密码*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sDevName; /*设备名称*/
public NET_DVR_SCREEN_UNION struScreenUnion;
public byte byInputNum; // 输入源个数
public byte byOutputNum; // 输出源个数
public byte byCBDNum; //CBD个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 29, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
/*******************************底图上传*******************************/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_BASEMAP_CFG
{
public byte byScreenIndex; //屏幕的序号
public byte byMapNum; /*被分割成了多少块*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] res;
public ushort wSourWidth; /* 原图片的宽度 */
public ushort wSourHeight; /* 原图片的高度 */
}
/*******************************OSD*******************************/
public const int MAX_OSDCHAR_NUM = 256;
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_OSDCFG
{
public uint dwSize;
public byte byValid; /*是否有效 0无效 1有效*/
public byte byDispMode; //显示模式,1-透明,2-半透明,3-覆盖三种模式
public byte byFontColorY; /*字体颜色Y,0-255*/
public byte byFontColorU; /*字体颜色U,0-255*/
public byte byFontColorV; /*字体颜色V,0-255*/
public byte byBackColorY; /*背景颜色Y,0-255*/
public byte byBackColorU; /*背景颜色U,0-255*/
public byte byBackColorV; /*背景颜色V,0-255*/
public ushort wXCoordinate; /*OSD在屏幕左上角位置x*/
public ushort wYCoordinate; /*OSD在屏幕左上角位置y*/
public ushort wWidth; /*OSD宽度*/
public ushort wHeight; /*OSD高度*/
public uint dwCharCnt; /*字符的个数*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_OSDCHAR_NUM, ArraySubType = UnmanagedType.U2)]
public ushort[] wOSDChar; /*OSD字符内容*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
/*******************************获取串口信息*******************************/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SERIAL_CONTROL
{
public uint dwSize;
public byte bySerialNum; // 串口个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] bySerial;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
/*******************************屏幕控制*******************************/
//屏幕输入源控制
public enum INPUT_INTERFACE_TYPE
{
INTERFACE_VGA = 0,
INTERFACE_SVIDEO, // 2046NL不支持,2046NH支持
INTERFACE_YPBPR,
INTERFACE_DVI,
INTERFACE_BNC,
INTERFACE_DVI_LOOP,//(环通) 2046NH不支持,2046NL支持
INTERFACE_BNC_LOOP, //(环通) 2046NH不支持,2046NL.支持
INTERFACE_HDMI,
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_INPUT_INTERFACE_CTRL
{
public byte byInputSourceType; //见INPUT_INTERFACE_TYPE
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 15, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//显示单元颜色控制
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DISPLAY_COLOR_CTRL
{
public byte byColorType; //1-亮度 2-对比度 3-饱和度 4-清晰度
public char byScale; //-1 、0、+1三个值
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 14, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//显示单元位置控制
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DISPLAY_POSITION_CTRL
{
public byte byPositionType; //1-水平位置 2-垂直位置,
public char byScale; //-1 、0、+1三个值
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 14, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct NET_DVR_SCREEN_CONTROL_PARAM
{
/*[FieldOffsetAttribute(0)]
public NET_DVR_INPUT_INTERFACE_CTRL struInputCtrl;
[FieldOffsetAttribute(0)]
public NET_DVR_DISPLAY_COLOR_CTRL struDisplayCtrl;
[FieldOffsetAttribute(0)]
public NET_DVR_DISPLAY_POSITION_CTRL struPositionCtrl;
[FieldOffsetAttribute(0)]
* */
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCREEN_CONTROL
{
public uint dwSize;
public uint dwCommand; /* 控制方法 1-开 2-关 3-屏幕输入源选择 4-显示单元颜色控制 5-显示单元位置控制*/
public byte byProtocol; //串口协议类型,1:LCD-S1,2:LCD-S2
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_SCREEN_CONTROL_PARAM struControlParam;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 52, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
/*******************************屏幕控制V41*******************************/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SCREEN_CONTROL_V41
{
public uint dwSize;
public byte bySerialNo; //串口号
public byte byBeginAddress; //左上角屏幕号,从1开始
public byte byEndAddress; //右下角屏幕号,从1开始
public byte byProtocol; // 串口协议类型 1-LCD-S1 , 2-LCD-S2 , 3-LCD-L1 , 4-LCD-DLP, 5-LCD-S3 , 6-LCD-H1
public uint dwCommand; /* 控制方法 1-开 2-关 3-屏幕输入源选择 4-显示单元颜色控制 5-显示单元位置控制*/
public NET_DVR_SCREEN_CONTROL_PARAM struControlParam;
public byte byWallNo; // 电视墙号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 51, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
/*******************************预案管理*******************************/
public const int MAX_PLAN_ACTION_NUM = 32; //预案动作个数
public const int DAYS_A_WEEK = 7; //一周7天
public const int MAX_PLAN_COUNT = 16; //预案个数
public enum NET_DVR_PLAN_OPERATE_TYPE
{
NET_DVR_SWITCH_LAYOUT = 1, // 布局切换 默认
NET_DVR_SCREEN_POWER_OFF, // 关闭大屏幕显示
NET_DVR_SCREEN_POWER_ON, // 打开大屏幕显示
}
/*预案项信息*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PLAN_INFO
{
public byte byValid; // 该项是否有效
public byte byType; // 见定义NET_DVR_PLAN_OPERATE_TYPE
public ushort wLayoutNo; // 布局号
public byte byScreenStyle; //屏幕型号,开关机所用,1是低亮,2是高亮
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwDelayTime; // 一个项的运行时间, 单位秒
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CYCLE_TIME
{
public byte byValid;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public NET_DVR_TIME_EX struTime;
}
/*预案管理*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PLAN_CFG
{
public uint dwSize;
public byte byValid; // 该预案是否有效
public byte byWorkMode; // 预案工作模式 1表示手动,2自动,3预案循环
public byte byWallNo; //电视墙号,从1开始
public byte byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byPlanName; //预案名称
public NET_DVR_TIME_EX struTime; // 工作模式为自动时使用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = DAYS_A_WEEK, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_CYCLE_TIME[] struTimeCycle; /*循环时间,周期为一个星期,年、月、日三个参数不使用。如:struTimeCycle[0]中的byValid的值是1,表示星期天执行该预案。星期取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推*/
public uint dwWorkCount; // 预案内容执行次数,0为一直循环播放,其他值表示次数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_PLAN_ACTION_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_PLAN_INFO[] strPlanEntry; // 预案执行的内容
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
/*******************************获取设备状态*******************************/
/*预案列表*/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PLAN_LIST
{
public uint dwSize;
public uint dwPlanNums; //设备输入信号源数量
public IntPtr pBuffer; //指向dwInputSignalNums个NET_DVR_PLAN_CFG结构大小的缓冲区
public byte byWallNo; //墙号,从1开始
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwBufLen; //所分配缓冲区长度,输入参数(大于等于dwInputSignalNums个NET_DVR_PLAN_CFG结构大小)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
/*******************************预案控制*******************************/
//该结构体可作为通用控制结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CONTROL_PARAM
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sDeviceID; //被控设备的设备ID
public ushort wChan; //被控通道
public byte byIndex; //控制索引,根据命令确定具体表示什么索引
public byte byRes1;
public uint dwControlParam;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
/*******************************获取设备状态*******************************/
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DEVICE_RUN_STATUS
{
public uint dwSize;
public uint dwMemoryTotal; //内存总量 单位Kbyte
public uint dwMemoryUsage; //内存使用量 单位Kbyte
public byte byCPUUsage; //CPU使用率 0-100
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 127, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//91系列HD-SDI高清DVR 相机信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ACCESS_CAMERA_INFO
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string sCameraInfo; // 前端相机信息
public byte byInterfaceType; // 前端接入接口类型,1:VGA, 2:HDMI, 3:YPbPr 4:SDI 5:FC
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwChannel;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_AUDIO_INPUT_PARAM
{
public byte byAudioInputType; //音频输入类型,0-mic in,1-line in
public byte byVolume; //volume,[0-100]
public byte byEnableNoiseFilter; //是否开启声音过滤-关,-开
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I1)]
public byte[] byres;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CAMERA_DEHAZE_CFG
{
public uint dwSize;
public byte byDehazeMode; //0-不启用,1-自动模式,2-开
public byte byLevel; //等级,0-100
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_INPUT_SIGNAL_LIST
{
public uint dwSize;
public uint dwInputSignalNums; //设备输入信号源数量
public IntPtr pBuffer; //指向dwInputSignalNums个NET_DVR_INPUTSTREAMCFG结构大小的缓冲区
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwBufLen; //所分配缓冲区长度,输入参数(大于等于dwInputSignalNums个NET_DVR_INPUTSTREAMCFG结构大小)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//安全拔盘状态
public const int PULL_DISK_SUCCESS = 1; // 安全拔盘成功
public const int PULL_DISK_FAIL = 2; // 安全拔盘失败
public const int PULL_DISK_PROCESSING = 3; // 正在停止阵列
public const int PULL_DISK_NO_ARRAY = 4; // 阵列不存在
public const int PULL_DISK_NOT_SUPPORT = 5; // 不支持安全拔盘
//扫描阵列状态
public const int SCAN_RAID_SUC = 1; // 扫描阵列成功
public const int SCAN_RAID_FAIL = 2; // 扫描阵列失败
public const int SCAN_RAID_PROCESSING = 3; // 正在扫描阵列
public const int SCAN_RAID_NOT_SUPPORT = 4; // 不支持阵列扫描
//设置前端相机类型状态
public const int SET_CAMERA_TYPE_SUCCESS = 1; // 成功
public const int SET_CAMERA_TYPE_FAIL = 2; // 失败
public const int SET_CAMERA_TYPE_PROCESSING = 3; // 正在处理
//9000 2.2
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_RECORD_TIME_SPAN_INQUIRY
{
public uint dwSize; //结构体大小
public byte byType; //0 正常音视频录像, 1图片通道录像, 2ANR通道录像, 3抽帧通道录像
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 63, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_RECORD_TIME_SPAN
{
public uint dwSize; //结构体大小
public NET_DVR_TIME strBeginTime; //开始时间
public NET_DVR_TIME strEndTime; //结束时间
public byte byType; //0 正常音视频录像, 1图片通道录像, 2ANR通道录像, 3抽帧通道录像
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 35, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DRAWFRAME_DISK_QUOTA_CFG
{
public uint dwSize; //结构体大小
public byte byPicQuota; //图片百分比 [0%, 30%]
public byte byRecordQuota; //普通录像百分比 [20%, 40%]
public byte byDrawFrameRecordQuota; //抽帧录像百分比 [30%, 80%]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 61, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留字节
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_MANUAL_RECORD_PARA
{
public NET_DVR_STREAM_INFO struStreamInfo;
public uint lRecordType;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//端口映射配置结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_NAT_PORT
{
public ushort wEnable;
public ushort wExtPort;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//端口映射配置结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_NAT_CFG
{
public uint dwSize;
public ushort wEnableUpnp;
public ushort wEnableNat;
public NET_DVR_IPADDR struIpAddr;//夏时制停止时间
public NET_DVR_NAT_PORT struHttpPort;//夏时制停止时间
public NET_DVR_NAT_PORT struCmdPort;//夏时制停止时间
public NET_DVR_NAT_PORT struRtspPort;//夏时制停止时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byFriendName;
public byte byNatType;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_NAT_PORT struHttpsPort;//夏时制停止时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 76, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//Upnp端口映射状态结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_UPNP_PORT_STATE
{
public uint dwEnabled;//该端口是否被使能映射
public ushort wInternalPort;//映射前的端口
public ushort wExternalPort;//映射后的端口
public uint dwStatus;//端口映射状态:0- 未生效;1- 未生效:映射源端口与目的端口需一致;2- 未生效:映射端口号已被使用;3- 生效
public NET_DVR_IPADDR struNatExternalIp;//映射后的外部地址
public NET_DVR_IPADDR struNatInternalIp;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留
}
//Upnp端口映射状态结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_UPNP_NAT_STATE
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_UPNP_PORT_STATE[] strUpnpPort;//端口映射状态::数组0- web server端口,数组1- 管理端口,数组2- rtsp端
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 200, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PLAYCOND
{
public uint dwChannel;
public NET_DVR_TIME struStartTime;
public NET_DVR_TIME struStopTime;
public byte byDrawFrame; //0:不抽帧,1:抽帧
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 63, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
//录像回放结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VOD_PARA
{
public uint dwSize; //结构体大小
public NET_DVR_STREAM_INFO struIDInfo; //流ID信息
public NET_DVR_TIME struBeginTime;//回放开始时间
public NET_DVR_TIME struEndTime;//回放结束时间
public IntPtr hWnd;//回放窗口
public byte byDrawFrame;//是否抽帧:0- 不抽帧,1- 抽帧
public byte byVolumeType;//0-普通录像卷,1-存档卷,适用于CVR设备,普通卷用于通道录像,存档卷用于备份录像
public byte byVolumeNum;//存档卷号
public byte byRes1;//保留
public uint dwFileIndex;//存档卷上的录像文件索引,搜索存档卷录像时返回的值
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ATMFINDINFO
{
public byte byTransactionType; //交易类型 0-全部,1-查询, 2-取款, 3-存款, 4-修改密码,5-转账, 6-无卡查询 7-无卡存款, 8-吞钞 9-吞卡 10-自定义
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
public uint dwTransationAmount; //交易金额 ;
}
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct NET_DVR_SPECIAL_FINDINFO_UNION
{
[FieldOffsetAttribute(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byLenth;
/* [FieldOffsetAttribute(0)]
public NET_DVR_ATMFINDINFO struATMFindInfo; //ATM查询
* */
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FILECOND_V40
{
public Int32 lChannel;
public uint dwFileType;
public uint dwIsLocked;
public uint dwUseCardNo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = CARDNUM_LEN_OUT, ArraySubType = UnmanagedType.I1)]
public byte[] sCardNumber;
public NET_DVR_TIME struStartTime;
public NET_DVR_TIME struStopTime;
public byte byDrawFrame; //0:不抽帧,1:抽帧
public byte byFindType; //0:查询普通卷,1:查询存档卷
public byte byQuickSearch; //0:普通查询,1:快速(日历)查询
public byte bySpecialFindInfoType; //专有查询条件类型 0-无效, 1-带ATM查询条件
public uint dwVolumeNum; //存档卷号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = GUID_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byWorkingDeviceGUID; //工作机GUID,通过获取N+1得到
public NET_DVR_SPECIAL_FINDINFO_UNION uSpecialFindInfo; //专有查询条件
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//事件搜索条件
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SEARCH_EVENT_PARAM_V40
{
public ushort wMajorType; //0-移动侦测,1-报警输入, 2-智能事件 5-pos录像 7-门禁事件
public ushort wMinorType; //搜索次类型- 根据主类型变化,0xffff表示全部
public NET_DVR_TIME struStartTime; //搜索的开始时间,停止时间: 同时为(0, 0) 表示从最早的时间开始,到最后,最前面的4000个事件
public NET_DVR_TIME struEndTime; //
public byte byLockType; // 0xff-全部,0-未锁,1-锁定
public byte byQuickSearch; // 是否启用快速查询,0-不启用,1-启用(快速查询不会返回文件大小,仅对设备数据库进行查询,避免频繁唤醒硬盘)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 130, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;// 保留
public UNION_EVENT_PARAM uSeniorParam;
public void Init()
{
byRes = new byte[130];
uSeniorParam.Init();
}
}
public const int SEARCH_EVENT_INFO_LEN_V40 = 800;
[StructLayout(LayoutKind.Explicit)]
public struct UNION_EVENT_PARAM
{
[FieldOffset(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SEARCH_EVENT_INFO_LEN_V40, ArraySubType = UnmanagedType.I1)]
public byte[] byLen;
public void Init()
{
byLen = new byte[SEARCH_EVENT_INFO_LEN_V40];
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct struMotionParam
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.U2)]
public ushort[] wMotDetChanNo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 672, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public void Init()
{
wMotDetChanNo = new ushort[MAX_CHANNUM_V30];
byRes = new byte[672];
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct struStreamIDParam
{
public NET_DVR_STREAM_INFO struIDInfo;
public uint dwCmdType;
public byte byBackupVolumeNum;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byArchiveLabel;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 656, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public void Init()
{
byRes1 = new byte[3];
byArchiveLabel = new byte[64];
byRes = new byte[656];
struIDInfo.Init();
}
}
//查找返回结果
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SEARCH_EVENT_RET_V40
{
public ushort wMajorType; //主类型
public ushort wMinorType; //次类型
public NET_DVR_TIME struStartTime; //事件开始的时间
public NET_DVR_TIME struEndTime; //事件停止的时间,脉冲事件时和开始时间一样
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V40, ArraySubType = UnmanagedType.U2)]
public ushort[] wChan; //触发的通道号,0xffff表示后续无效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 36, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public UNION_EVENT_RET uSeniorRet;
}
[StructLayout(LayoutKind.Explicit)]
public struct UNION_EVENT_RET
{
[FieldOffset(0)]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 800, ArraySubType = UnmanagedType.I1)]
public byte[] byLen;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct struMotionRet
{
public uint dwMotDetNo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 796, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
public const int NET_SDK_MAX_TAPE_INDEX_LEN = 32; //磁带编号最大长度
public const int NET_SDK_MAX_FILE_LEN = 256; //文件名最大长度
//流id录像查询结果
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct struStreamIDRet
{
public uint dwRecordType; //录像类型 0-定时录像 1-移动侦测 2-报警录像 3-报警|移动侦测 4-报警&移动侦测 5-命令触发 6-手动录像 7-震动报警 8-环境触发 9-智能报警 10-回传录像
public uint dwRecordLength; //录像大小
public byte byLockFlag; // 锁定标志 0:没锁定 1:锁定
public byte byDrawFrameType; // 0:非抽帧录像 1:抽帧录像
public byte byPosition;// 文件所在存储位置:0-阵列上,1-带库机位上,可以直接下载,2-磁带库内,需要把磁盘切换到机位上,3-不在磁带库中,需要把磁盘插到磁带库中
public byte byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byFileName; //文件名
public uint dwFileIndex; // 存档卷上的文件索引
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NET_SDK_MAX_TAPE_INDEX_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byTapeIndex; //文件所在磁带编号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NET_SDK_MAX_FILE_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byFileNameEx; //文件名扩展
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 464, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_AES_KEY_INFO
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] sAESKey; /*码流加密密钥*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; /*保留字节*/
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_POE_CFG
{
public NET_DVR_IPADDR struIP; //IP地址
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
}
public const int MAX_PRO_PATH = 256; //最大协议路径长度
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CUSTOM_PROTOCAL
{
public uint dwSize; //结构体大小
public uint dwEnabled; //是否启用该协议0 不启用 1 启用
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = DESC_LEN)]
public string sProtocalName; //自定义协议名称, 16位
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //保留,用于协议名称扩展
public uint dwEnableSubStream; //子码流是否启用0 不启用 1 启用
public byte byMainProType; //主码流协议类型 1 RTSP
public byte byMainTransType; //主码流传输类型 0:Auto 1:udp 2:rtp over rtsp
public ushort wMainPort; //主码流端口
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = MAX_PRO_PATH)]
public string sMainPath; //主码流路径
public byte bySubProType; //子码流协议类型 1 RTSP
public byte bySubTransType; //子码流传输类型 0:Auto 1:udp 2:rtp over rtsp
public ushort wSubPort; //子码流端口
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = MAX_PRO_PATH)]
public string sSubPath; //子码流路径
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 200, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2; //保留
}
//预览V40接口
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PREVIEWINFO
{
public Int32 lChannel;//通道号
public uint dwStreamType; // 码流类型,0-主码流,1-子码流,2-码流3,3-码流4 等以此类推
public uint dwLinkMode;// 0:TCP方式,1:UDP方式,2:多播方式,3 - RTP方式,4-RTP/RTSP,5-RSTP/HTTP
public IntPtr hPlayWnd;//播放窗口的句柄,为NULL表示不播放图象
public bool bBlocked; //0-非阻塞取流, 1-阻塞取流, 如果阻塞SDK内部connect失败将会有5s的超时才能够返回,不适合于轮询取流操作.
public bool bPassbackRecord; //0-不启用录像回传,1启用录像回传
public byte byPreviewMode;//预览模式,0-正常预览,1-延迟预览
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = STREAM_ID_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byStreamID;//流ID,lChannel为0xffffffff时启用此参数
public byte byProtoType; //应用层取流协议,0-私有协议,1-RTSP协议
public byte byRes1;
public byte byVideoCodingType; //码流数据编解码类型 0-通用编码数据 1-热成像探测器产生的原始数据(温度数据的加密信息,通过去加密运算,将原始数据算出真实的温度值)
public uint dwDisplayBufNum; //播放库播放缓冲区最大缓冲帧数,范围1-50,置0时默认为1
public byte byNPQMode; //NPQ是直连模式,还是过流媒体 0-直连 1-过流媒体
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 215, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
///抓拍机
///
public const int MAX_OVERLAP_ITEM_NUM = 50; //最大字符叠加种数
public const int NET_ITS_GET_OVERLAP_CFG = 5072;//获取字符叠加参数配置(相机或ITS终端)
public const int NET_ITS_SET_OVERLAP_CFG = 5073;//设置字符叠加参数配置(相机或ITS终端)
//字符叠加配置条件参数结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_ITS_OVERLAPCFG_COND
{
public uint dwSize;
public uint dwChannel;//通道号
public uint dwConfigMode;//配置模式:0- 终端,1- 前端(直连前端或终端接前端)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留
}
//单条字符叠加信息结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_ITS_OVERLAP_SINGLE_ITEM_PARAM
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;//保留
public byte byItemType;//类型
public byte byChangeLineNum;//叠加项后的换行数,取值范围:[0,10],默认:0
public byte bySpaceNum;//叠加项后的空格数,取值范围:[0-255],默认:0
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 15, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留
}
//字符串参数配置结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_ITS_OVERLAP_ITEM_PARAM
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_OVERLAP_ITEM_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_ITS_OVERLAP_SINGLE_ITEM_PARAM[] struSingleItem;//字符串内容信息
public uint dwLinePercent;
public uint dwItemsStlye;
public ushort wStartPosTop;
public ushort wStartPosLeft;
public ushort wCharStyle;
public ushort wCharSize;
public ushort wCharInterval;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;//保留
public uint dwForeClorRGB;//前景色的RGB值,bit0~bit7: B,bit8~bit15: G,bit16~bit23: R,默认:x00FFFFFF-白
public uint dwBackClorRGB;//背景色的RGB值,只对图片外叠加有效,bit0~bit7: B,bit8~bit15: G,bit16~bit23: R,默认:x00000000-黑
public byte byColorAdapt;//颜色是否自适应:0-否,1-是
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 31, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留
}
//字符叠加内容信息结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_ITS_OVERLAP_INFO_PARAM
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
public byte[] bySite;//
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRoadNum;//
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byInstrumentNum;//
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byDirection;//
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byDirectionDesc;//
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byLaneDes;//
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;//这里保留音频的压缩参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 44, ArraySubType = UnmanagedType.I1)]
public byte[] byMonitoringSite1;//
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byMonitoringSite2;//这里保留音频的压缩参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//这里保留音频的压缩参数
}
//字符叠加配置条件参数结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_ITS_OVERLAP_CFG
{
public uint dwSize;
public byte byEnable;//是否启用:0- 不启用,1- 启用
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;//这里保留音频的压缩参数
public NET_ITS_OVERLAP_ITEM_PARAM struOverLapItem;//字符串参数
public NET_ITS_OVERLAP_INFO_PARAM struOverLapInfo;//字符串内容信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//这里保留音频的压缩参数
}
//报警布防参数结构体
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_SETUPALARM_PARAM
{
public uint dwSize;
public byte byLevel;//布防优先级:0- 一等级(高),1- 二等级(中),2- 三等级(低,保留)
public byte byAlarmInfoType;//上传报警信息类型(智能交通摄像机支持):0- 老报警信息(NET_DVR_PLATE_RESULT),1- 新报警信息(NET_ITS_PLATE_RESULT)
public byte byRetAlarmTypeV40;
public byte byRetDevInfoVersion;
public byte byRetVQDAlarmType;
public byte byFaceAlarmDetection;
public byte bySupport;
public byte byBrokenNetHttp;
public ushort wTaskNo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//这里保留音频的压缩参数
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_ITS_GATE_VEHICLE
{
public uint dwSize;
public uint dwMatchNo;
public byte byGroupNum;
public byte byPicNo;
public byte bySecondCam;
public byte byRes;
public ushort wLaneid;
public byte byCamLaneId;
public byte byRes1;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public byte[] byAlarmReason;
public ushort wBackList;
public ushort wSpeedLimit;
public uint dwChanIndex;
public NET_DVR_PLATE_INFO struPlateInfo;
public NET_DVR_VEHICLE_INFO struVehicleInfo;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
public byte[] byMonitoringSiteID;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
public byte[] byDeviceID;
public byte byDir;
public byte byDetectType;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] byRes2;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
public byte[] byCardNo;
public uint dwPicNum;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.Struct)]
public NET_ITS_PICTURE_INFO[] struPicInfo;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public byte[] bySwipeTime;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 224)]
public byte[] byRes3;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_ITS_PICTURE_INFO
{
public uint dwDataLen;
public byte byType;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public byte[] byRes1;
public uint dwRedLightTime;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public byte[] byAbsTime;
public NET_VCA_RECT struPlateRect;
public NET_VCA_RECT struPlateRecgRect;
public IntPtr pBuffer;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_ITS_PLATE_RESULT
{
public uint dwSize; //结构长度
public uint dwMatchNo; //匹配序号,由(车辆序号,数据类型,车道号)组成匹配码
public byte byGroupNum; //图片组数量(一辆过车相机多次抓拍的数量,代表一组图片的总数,用于延时匹配数据)
public byte byPicNo; //连拍的图片序号(接收到图片组数量后,表示接收完成;接收超时不足图片组数量时,根据需要保留或删除)
public byte bySecondCam; //是否第二相机抓拍(如远近景抓拍的远景相机,或前后抓拍的后相机,特殊项目中会用到)
public byte byFeaturePicNo; //闯红灯电警,取第几张图作为特写图,0xff-表示不取
public byte byDriveChan; //触发车道号
public byte byVehicleType; //车辆类型,参考VTR_RESULT
public byte byDetSceneID;//检测场景号[1,4], IPC默认是0
//车辆属性,按位表示,0- 无附加属性(普通车),bit1- 黄标车(类似年检的标志),bit2- 危险品车辆,值:0- 否,1- 是
//该节点已不再使用,使用下面的byYellowLabelCar和byDangerousVehicles判断是否黄标车和危险品车
public byte byVehicleAttribute;
public ushort wIllegalType; //违章类型采用国标定义
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byIllegalSubType; //违章子类型
public byte byPostPicNo; //违章时取第几张图片作为卡口图,0xff-表示不取
//通道号(有效,报警通道号和所在设备上传报警通道号一致,在后端和所接入的 通道号一致)
public byte byChanIndex;
public ushort wSpeedLimit; //限速上限(超速时有效)
public byte byChanIndexEx; //byChanIndexEx*256+byChanIndex表示真实通道号。
public byte byRes2;
public NET_DVR_PLATE_INFO struPlateInfo; //车牌信息结构
public NET_DVR_VEHICLE_INFO struVehicleInfo; //车辆信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 48, ArraySubType = UnmanagedType.I1)]
public byte[] byMonitoringSiteID; //监测点编号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 48, ArraySubType = UnmanagedType.I1)]
public byte[] byDeviceID; //设备编号
public byte byDir; //监测方向,1-上行(反向),2-下行(正向),3-双向,4-由东向西,5-由南向北,6-由西向东,7-由北向南,8-其它
public byte byDetectType; //检测方式,1-地感触发,2-视频触发,3-多帧识别,4-雷达触发
//关联车道方向类型,参考ITC_RELA_LANE_DIRECTION_TYPE
//该参数为车道方向参数,与关联车道号对应,确保车道唯一性。
public byte byRelaLaneDirectionType;
public byte byCarDirectionType; //车辆具体行驶的方向,0表示从上往下,1表示从下往上(根据实际车辆的行驶方向来的区分)
//当wIllegalType参数为空时,使用该参数。若wIllegalType参数为有值时,以wIllegalType参数为准,该参数无效。
public uint dwCustomIllegalType; //违章类型定义(用户自定义)
/*为0~数字格式时,为老的违章类型,wIllegalType、dwCustomIllegalType参数生效,赋值国标违法代码。
* 为1~字符格式时,pIllegalInfoBuf参数生效。老的违章类型,wIllegalType、dwCustomIllegalType参数依然赋值国标违法代码*/
public IntPtr pIllegalInfoBuf; //违法代码字符信息结构体指针;指向NET_ITS_ILLEGAL_INFO
public byte byIllegalFromatType; //违章信息格式类型; 0~数字格式, 1~字符格式
public byte byPendant;// 0-表示未知,1-车窗有悬挂物,2-车窗无悬挂物
public byte byDataAnalysis; //0-数据未分析, 1-数据已分析
public byte byYellowLabelCar; //0-表示未知, 1-非黄标车,2-黄标车
public byte byDangerousVehicles; //0-表示未知, 1-非危险品车,2-危险品车
//以下字段包含Pilot字符均为主驾驶,含Copilot字符均为副驾驶
public byte byPilotSafebelt;//0-表示未知,1-系安全带,2-不系安全带
public byte byCopilotSafebelt;//0-表示未知,1-系安全带,2-不系安全带
public byte byPilotSunVisor;//0-表示未知,1-不打开遮阳板,2-打开遮阳板
public byte byCopilotSunVisor;//0-表示未知, 1-不打开遮阳板,2-打开遮阳板
public byte byPilotCall;// 0-表示未知, 1-不打电话,2-打电话
//0-开闸,1-未开闸 (专用于历史数据中相机根据黑白名单匹配后,是否开闸成功的标志)
public byte byBarrierGateCtrlType;
public byte byAlarmDataType;//0-实时数据,1-历史数据
public NET_DVR_TIME_V30 struSnapFirstPicTime;//端点时间(ms)(抓拍第一张图片的时间)
public uint dwIllegalTime;//违法持续时间(ms) = 抓拍最后一张图片的时间 - 抓拍第一张图片的时间
public uint dwPicNum; //图片数量(与picGroupNum不同,代表本条信息附带的图片数量,图片信息由struVehicleInfoEx定义
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.Struct)]
public NET_ITS_PICTURE_INFO[] struPicInfo; //图片信息,单张回调,最多6张图,由序号区分
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_ITS_PARK_VEHICLE
{
public uint dwSize;
public byte byGroupNum;
public byte byPicNo;
public byte byLocationNum;
public byte byParkError;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = MAX_PARKNO_LEN)]
public string byParkingNo;
public byte byLocationStatus;
public byte bylogicalLaneNum;
public ushort wUpLoadType;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwChanIndex;
public NET_DVR_PLATE_INFO struPlateInfo;
public NET_DVR_VEHICLE_INFO struVehicleInfo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ID_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byMonitoringSiteID;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ID_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byDeviceID;
public uint dwPicNum;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.Struct)]
public NET_ITS_PICTURE_INFO[] struPicInfo;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 256, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DIAGNOSIS_UPLOAD
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = STREAM_ID_LEN)]
public string sStreamID; // 流ID,长度小于32个字节
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 64)]
public string sMonitorIP; // 监控点ip
public uint dwChanIndex; // 监控点通道号
public uint dwWidth; // 图像宽度
public uint dwHeight; // 图像高度
public NET_DVR_TIME struCheckTime; // 检测时间(合并日期和时间字段),格式:2012-08-06 13:00:00
public byte byResult; // 0-未检测 1-正常 2-异常 3-登录失败 4-取流异常
public byte bySignalResult; // 视频丢失检测结果 0-未检测 1-正常 2-异常
public byte byBlurResult; // 图像模糊检测结果,0-未检测 1-正常 2-异常
public byte byLumaResult; // 图像过亮检测结果,0-未检测 1-正常 2-异常
public byte byChromaResult; // 偏色检测结果,0-未检测 1-正常 2-异常
public byte bySnowResult; // 噪声干扰检测结果,0-未检测 1-正常 2-异常
public byte byStreakResult; // 条纹干扰检测结果,0-未检测 1-正常 2-异常
public byte byFreezeResult; // 画面冻结检测结果,0-未检测 1-正常 2-异常
public byte byPTZResult; // 云台检测结果,0-未检测 1-正常 2-异常
public byte byContrastResult; //对比度异常检测结果,0-未检测,1-正常,2-异常
public byte byMonoResult; //黑白图像检测结果,0-未检测,1-正常,2-异常
public byte byShakeResult; //视频抖动检测结果,0-未检测,1-正常,2-异常
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 256)]
public string sSNapShotURL;
public byte byFlashResult; //视频剧变检测结果,0-未检测,1-正常,2-异常
public byte byCoverResult; //视频遮挡检测结果,0-未检测,1-正常,2-异常
public byte bySceneResult; //场景变更检测结果,0-未检测,1-正常,2-异常
public byte byDarkResult; //图像过暗检测结果,0-未检测,1-正常,2-异常
public byte byStreamType; //码流类型,0-无效,1-未知,2-国标类型,3-非国标类型
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 59, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
public const int CID_CODE_LEN = 4;
public const int ACCOUNTNUM_LEN = 6;
public const int ACCOUNTNUM_LEN_32 = 32;
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CID_ALARM
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = CID_CODE_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sCIDCode; //CID事件号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sCIDDescribe; //CID事件名
public NET_DVR_TIME_EX struTriggerTime; //触发报警的时间点
public NET_DVR_TIME_EX struUploadTime; //上传报警的时间点
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = ACCOUNTNUM_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sCenterAccount; //中心帐号
public byte byReportType; //见定义NET_DVR_ALARMHOST_REPORT_TYPE
public byte byUserType; //用户类型,0-网络用户 1-键盘用户,2-手机用户,3-系统用户
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sUserName; //网络用户用户名
public ushort wKeyUserNo; //键盘用户号 0xFFFF表示无效
public byte byKeypadNo; //键盘号 0xFF表示无效
public byte bySubSysNo; //子系统号 0xFF表示无效
public ushort wDefenceNo; //防区号 0xFFFF表示无效
public byte byVideoChanNo; //视频通道号 0xFF表示无效
public byte byDiskNo; //硬盘号 0xFF表示无效
public ushort wModuleAddr; //模块地址 0xFFFF表示无效
public byte byCenterType; //0-无效, 1-中心账号(长度6),2-扩展的中心账号(长度9)
public byte byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = ACCOUNTNUM_LEN_32, ArraySubType = UnmanagedType.I1)]
public byte[] sCenterAccountV40; //中心账号V40,使用此字段时sCenterAccount无效
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 28, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_PTZ_INFO
{
public float fPan;
public float fTilt;
public float fZoom;
public uint dwFocus;// 聚焦参数,聚焦范围:归一化0-100000
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//火点检测报警
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_FIREDETECTION_ALARM
{
public uint dwSize; //结构大小
public uint dwRelativeTime; //相对时标
public uint dwAbsTime; //绝对时标
public NET_VCA_DEV_INFO struDevInfo; //前端设备信息
public ushort wPanPos;
public ushort wTiltPos;
public ushort wZoomPos;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public uint dwPicDataLen;//报警抓拍图片长度
public IntPtr pBuffer; //数据指针
public NET_VCA_RECT struRect;//火点框
public NET_VCA_POINT struPoint;//火点框内最高温度点坐标
public ushort wFireMaxTemperature;//火点最高温度[300℃~4000℃]
public ushort wTargetDistance;//目标距离[100m ~ 10000m]
public byte byStrategyType;//策略类型;0~任意报警,1~协同报警,2~多系统报警,3~指定火点报警,4~指定烟雾报警
public byte byAlarmSubType;//报警子类型。0~火点检测报警,1~烟雾检测报警,2~烟火报警
/*是否启用PTZ坐标扩展,
0~不启用,PTZ坐标值以wPanPos、wTiltPos、wZoomPos为准。
1~启用,PTZ坐标值以struPtzPosEx为准。但是新老PTZ都需返回。struPtzPosEx的值需转化为wPanPos、wTiltPos、wZoomPos值。
*/
public byte byPTZPosExEnable;
public byte byRes2;
public NET_PTZ_INFO struPtzPosEx;// ptz坐标扩展(支持高精度PTZ值,精确到小数点后三位)
public uint dwVisiblePicLen;//可见光图片长度
public IntPtr pVisiblePicBuf; //可见光图片数据指针
// pSmokeBuf参数当byAlarmSubType报警子类型为1(烟雾检测报警)、2(烟火报警)时生效。
public IntPtr pSmokeBuf; //烟雾检测报警数据指针,指向一个NET_DVR_SMOKEDETECTION_ALARM结构体
public ushort wDevInfoIvmsChannelEx; //与NET_VCA_DEV_INFO里的byIvmsChannel含义相同,能表示更大的值。老客户端用byIvmsChannel能继续兼容,但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx。
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 58, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ACS_EVENT_INFO
{
public uint dwSize;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = ACS_CARD_NO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byCardNo; //卡号,为0无效
public byte byCardType; //卡类型,1-普通卡,2-残疾人卡,3-黑名单卡,4-巡更卡,5-胁迫卡,6-超级卡,7-来宾卡,为0无效
public byte byAllowListNo;
public byte byReportChannel; //报告上传通道,1-布防上传,2-中心组1上传,3-中心组2上传,为0无效
public byte byCardReaderKind; //读卡器属于哪一类,0-无效,1-IC读卡器,2-身份证读卡器,3-二维码读卡器,4-指纹头
public uint dwCardReaderNo; //读卡器编号,为0无效
public uint dwDoorNo; //门编号(楼层编号),为0无效
public uint dwVerifyNo; //多重卡认证序号,为0无效
public uint dwAlarmInNo; //报警输入号,为0无效
public uint dwAlarmOutNo; //报警输出号,为0无效
public uint dwCaseSensorNo; //事件触发器编号
public uint dwRs485No; //RS485通道号,为0无效
public uint dwMultiCardGroupNo; //群组编号
public ushort wAccessChannel; //人员通道号
public byte byDeviceNo; //设备编号,为0无效
public byte byDistractControlNo;//分控器编号,为0无效
public uint dwEmployeeNo; //工号,为0无效
public ushort wLocalControllerID; //就地控制器编号,0-门禁主机,1-64代表就地控制器
public byte byInternetAccess; //网口ID:(1-上行网口1,2-上行网口2,3-下行网口1)
public byte byType; //防区类型,0:即时防区,1-24小时防区,2-延时防区 ,3-内部防区,4-钥匙防区 5-火警防区 6-周界防区 7-24小时无声防区 8-24小时辅助防区,9-24小时震动防区,10-门禁紧急开门防区,11-门禁紧急关门防区 0xff-无
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MACADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byMACAddr; //物理地址,为0无效
public byte bySwipeCardType;//刷卡类型,0-无效,1-二维码
public byte byRes2;
public uint dwSerialNo; //事件流水号,为0无效
public byte byChannelControllerID; //通道控制器ID,为0无效,1-主通道控制器,2-从通道控制器
public byte byChannelControllerLampID; //通道控制器灯板ID,为0无效(有效范围1-255)
public byte byChannelControllerIRAdaptorID; //通道控制器红外转接板ID,为0无效(有效范围1-255)
public byte byChannelControllerIREmitterID; //通道控制器红外对射ID,为0无效(有效范围1-255)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ACS_ALARM_INFO
{
public uint dwSize;
public uint dwMajor; //报警主类型,参考宏定义
public uint dwMinor; //报警次类型,参考宏定义
public NET_DVR_TIME struTime; //时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NAMELEN, ArraySubType = UnmanagedType.I1)]
public byte[] sNetUser;//网络操作的用户名
public NET_DVR_IPADDR struRemoteHostAddr;//远程主机地址
public NET_DVR_ACS_EVENT_INFO struAcsEventInfo; //详细参数
public uint dwPicDataLen; //图片数据大小,不为0是表示后面带数据
public IntPtr pPicData;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_DATE
{
public ushort wYear; //年
public byte byMonth; //月
public byte byDay; //日
}
//身份证信息
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ID_CARD_INFO
{
public uint dwSize; //结构长度
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ID_NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byName; //姓名
public NET_DVR_DATE struBirth; //出生日期
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ID_ADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byAddr; //住址
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ID_NUM_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byIDNum; //身份证号码
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_ID_ISSUING_AUTHORITY_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byIssuingAuthority; //签发机关
public NET_DVR_DATE struStartDate; //有效开始日期
public NET_DVR_DATE struEndDate; //有效截止日期
public byte byTermOfValidity; //是否长期有效, 0-否,1-是(有效截止日期无效)
public byte bySex; //性别,1-男,2-女
public byte byNation; //民族,1-"汉",2-"蒙古",3-"回",4-"藏",5-"维吾尔",6-"苗",7-"彝",8-"壮",9-"布依",10-"朝鲜",
//11-"满",12-"侗",13-"瑶",14-"白",15-"土家",16-"哈尼",17-"哈萨克",18-"傣",19-"黎",20-"傈僳",
//21-"佤",22-"畲",23-"高山",24-"拉祜",25-"水",26-"东乡",27-"纳西",28-"景颇",29-"柯尔克孜",30-"土",
//31-"达斡尔",32-"仫佬",33-"羌",34-"布朗",35-"撒拉",36-"毛南",37-"仡佬",38-"锡伯",39-"阿昌",40-"普米",
//41-"塔吉克",42-"怒",43-"乌孜别克",44-"俄罗斯",45-"鄂温克",46-"德昂",47-"保安",48-"裕固",49-"京",50-"塔塔尔",
//51-"独龙",52-"鄂伦春",53-"赫哲",54-"门巴",55-"珞巴",56-"基诺"
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 101, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//身份证信息报警
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ID_CARD_INFO_ALARM
{
public uint dwSize; //结构长度
public NET_DVR_ID_CARD_INFO struIDCardCfg;//身份证信息
public uint dwMajor; //报警主类型,参考宏定义
public uint dwMinor; //报警次类型,参考宏定义
public NET_DVR_TIME_V30 struSwipeTime; //时间
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NAMELEN, ArraySubType = UnmanagedType.I1)]
public byte[] byNetUser;//网络操作的用户名
public NET_DVR_IPADDR struRemoteHostAddr;//远程主机地址
public uint dwCardReaderNo; //读卡器编号,为0无效
public uint dwDoorNo; //门编号,为0无效
public uint dwPicDataLen; //图片数据大小,不为0是表示后面带数据
public IntPtr pPicData;
public byte byCardType; //卡类型,1-普通卡,2-残疾人卡,3-黑名单卡,4-巡更卡,5-胁迫卡,6-超级卡,7-来宾卡,8-解除卡,为0无效
public byte byDeviceNo; // 设备编号,为0时无效(有效范围1-255)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public uint dwFingerPrintDataLen; // 指纹数据大小,不为0是表示后面带数据
public IntPtr pFingerPrintData;
public uint dwCapturePicDataLen; // 抓拍图片数据大小,不为0是表示后面带数据
public IntPtr pCapturePicData;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 188, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_VALID_PERIOD_CFG
{
public byte byEnable; //使能有效期,0-不使能,1使能
public byte byBeginTimeFlag; //是否限制起始时间的标志,0-不限制,1-限制
public byte byEnableTimeFlag; //是否限制终止时间的标志,0-不限制,1-限制
public byte byTimeDurationNo; //有效期索引,从0开始(时间段通过SDK设置给锁,后续在制卡时,只需要传递有效期索引即可,以减少数据量)
public NET_DVR_TIME_EX struBeginTime; //有效期起始时间
public NET_DVR_TIME_EX struEndTime; //有效期结束时间
public byte byTimeType; //时间类型:0-设备本地时间(默认),1-UTC时间(对于struBeginTime,struEndTime字段有效)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 31, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CARD_CFG_V50
{
public uint dwSize;
public uint dwModifyParamType;
// 需要修改的卡参数,设置卡参数时有效,按位表示,每位代表一种参数,1为需要修改,0为不修改
// #define CARD_PARAM_CARD_VALID 0x00000001 //卡是否有效参数
// #define CARD_PARAM_VALID 0x00000002 //有效期参数
// #define CARD_PARAM_CARD_TYPE 0x00000004 //卡类型参数
// #define CARD_PARAM_DOOR_RIGHT 0x00000008 //门权限参数
// #define CARD_PARAM_LEADER_CARD 0x00000010 //首卡参数
// #define CARD_PARAM_SWIPE_NUM 0x00000020 //最大刷卡次数参数
// #define CARD_PARAM_GROUP 0x00000040 //所属群组参数
// #define CARD_PARAM_PASSWORD 0x00000080 //卡密码参数
// #define CARD_PARAM_RIGHT_PLAN 0x00000100 //卡权限计划参数
// #define CARD_PARAM_SWIPED_NUM 0x00000200 //已刷卡次数
// #define CARD_PARAM_EMPLOYEE_NO 0x00000400 //工号
// #define CARD_PARAM_NAME 0x00000800 //姓名
// #define CARD_PARAM_DEPARTMENT_NO 0x00001000 //部门编号
// #define CARD_SCHEDULE_PLAN_NO 0x00002000 //排班计划编号
// #define CARD_SCHEDULE_PLAN_TYPE 0x00004000 //排班计划类型
// #define CARD_ROOM_NUMBER 0x00008000 //房间号
// #define CARD_SIM_NO 0x00010000 //SIM卡号(手机号)
// #define CARD_FLOOR_NUMBER 0x00020000 //楼层号
// #define CARD_USER_TYPE 0x00040000 //用户类型
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = ACS_CARD_NO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byCardNo; //卡号
public byte byCardValid; //卡是否有效,0-无效,1-有效(用于删除卡,设置时置为0进行删除,获取时此字段始终为1)
public byte byCardType; //卡类型,1-普通卡,2-残疾人卡,3-黑名单卡,4-巡更卡,5-胁迫卡,6-超级卡,7-来宾卡,8-解除卡,9-员工卡,10-应急卡,11-应急管理卡(用于授权临时卡权限,本身不能开门),默认普通卡
public byte byLeaderCard; //是否为首卡,1-是,0-否
public byte byUserType; // 0 – 普通用户1 - 管理员用户;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOOR_NUM_256, ArraySubType = UnmanagedType.I1)]
public byte[] byDoorRight; //门权限(楼层权限、锁权限),按位表示,1为有权限,0为无权限,从低位到高位表示对门(锁)1-N是否有权限
public NET_DVR_VALID_PERIOD_CFG struValid; //有效期参数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_GROUP_NUM_128, ArraySubType = UnmanagedType.I1)]
public byte[] byBelongGroup; //所属群组,按字节表示,1-属于,0-不属于
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = CARD_PASSWORD_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byCardPassword; //卡密码
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOOR_NUM_256 * MAX_CARD_RIGHT_PLAN_NUM, ArraySubType = UnmanagedType.U2)]
public ushort[] wCardRightPlan; //卡权限计划,取值为计划模板编号,同个门(锁)不同计划模板采用权限或的方式处理
public uint dwMaxSwipeTime; //最大刷卡次数,0为无次数限制(开锁次数)
public uint dwSwipeTime; //已刷卡次数
public ushort wRoomNumber; //房间号
public ushort wFloorNumber; //层号
public uint dwEmployeeNo; //工号(用户ID)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byName; //姓名
public ushort wDepartmentNo; //部门编号
public ushort wSchedulePlanNo; //排班计划编号
public byte bySchedulePlanType; //排班计划类型:0-无意义、1-个人、2-部门
public byte byRightType; //下发权限类型:0-普通发卡权限、1-二维码权限、2-蓝牙权限(可视对讲设备二维码权限配置项:房间号、卡号(虚拟卡号)、最大刷卡次数(开锁次数)、有效期参数;蓝牙权限:卡号(萤石APP账号)、其他参数配置与普通发卡权限一致)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
public uint dwLockID; //锁ID
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_LOCK_CODE_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byLockCode; //锁代码
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOOR_CODE_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byRoomCode; //房间代码
//按位表示,0-无权限,1-有权限
//第0位表示:弱电报警
//第1位表示:开门提示音
//第2位表示:限制客卡
//第3位表示:通道
//第4位表示:反锁开门
//第5位表示:巡更功能
public uint dwCardRight; //卡权限
public uint dwPlanTemplate; //计划模板(每天)各时间段是否启用,按位表示,0--不启用,1-启用
public uint dwCardUserId; //持卡人ID
public byte byCardModelType; //0-空,1- MIFARE S50,2- MIFARE S70,3- FM1208 CPU卡,4- FM1216 CPU卡,5-国密CPU卡,6-身份证,7- NFC
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 51, ArraySubType = UnmanagedType.I1)]
public byte[] byRes3;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] bySIMNum; //SIM卡号(手机号)
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CHECK_FACE_PICTURE_COND
{
public uint dwSize;
public uint dwPictureNum; //图片数量
public byte byCheckTemplate; //0-校验图片是否合法(默认),1-校验图片和建模数据是否匹配
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 127, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LOCAL_GENERAL_CFG
{
public byte byExceptionCbDirectly; //0-通过线程池异常回调,1-直接异常回调给上层
public byte byNotSplitRecordFile; //回放和预览中保存到本地录像文件不切片 0-默认切片,1-不切片
public byte byResumeUpgradeEnable; //断网续传升级使能,0-关闭(默认),1-开启
public byte byAlarmJsonPictureSeparate; //控制JSON透传报警数据和图片是否分离,0-不分离,1-分离(分离后走COMM_ISAPI_ALARM回调返回)
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes; //保留
public Int64 i64FileSize; //单位:Byte
public uint dwResumeUpgradeTimeout; //断网续传重连超时时间,单位毫秒
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 236, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1; //预留
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LOCAL_CHECK_DEV
{
public uint dwCheckOnlineTimeout; //巡检时间间隔,单位ms 最小值为30s,最大值120s。为0时,表示用默认值(120s)
public uint dwCheckOnlineNetFailMax; //由于网络原因失败的最大累加次数;超过该值SDK才回调用户异常,为0时,表示使用默认值1
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 256, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARM_ISAPI_INFO
{
public IntPtr pAlarmData; // 报警数据
public uint dwAlarmDataLen; // 报警数据长度
public byte byDataType; // 0-invalid,1-xml,2-json
public byte byPicturesNumber; // 图片数量
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public IntPtr pPicPackData; // 图片变长部分
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
}
public const int MAX_FILE_PATH_LEN = 256; //文件路径长度
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARM_ISAPI_PICDATA
{
public uint dwPicLen;
public byte byPicType; //图片格式: 1- jpg
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_FILE_PATH_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] szFilename;
public IntPtr pPicData;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_EXTERNAL_DEVICE_STATE_UNION
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 512, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_ALARMHOST_EXTERNAL_DEVICE_STATE
{
public uint dwSize;
public byte byDevType; //1-UPS,2-开关电源,3-气体检测系统,4-温湿度传感器,5-空调,6-电量表,7-变电器状态, 8-水位传感器、9-扬尘噪声传感器、10-环境采集仪、11-风速传感器状态、12-通用扩展输出模块状态、13-浸水传感器状态、14-太阳能控制器状态、15-SF6报警主机状态、16-称重仪状态、17-气象采集系统状态、18-水质检测仪状态、19-燃气监测系统状态、20-消防主机状态
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
public NET_DVR_EXTERNAL_DEVICE_STATE_UNION struDevState;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byRes2;
}
//设备区域设置
public const int REGIONTYPE = 0;//代表区域
public const int MATRIXTYPE = 11;//矩阵节点
public const int DEVICETYPE = 2;//代表设备
public const int CHANNELTYPE = 3;//代表通道
public const int USERTYPE = 5;//代表用户
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LOG_MATRIX
{
public NET_DVR_TIME strLogTime;
public uint dwMajorType;
public uint dwMinorType;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NAMELEN, ArraySubType = UnmanagedType.I1)]
public byte[] sPanelUser;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_NAMELEN, ArraySubType = UnmanagedType.I1)]
public byte[] sNetUser;
public NET_DVR_IPADDR struRemoteHostAddr;
public uint dwParaType;
public uint dwChannel;
public uint dwDiskNumber;
public uint dwAlarmInPort;
public uint dwAlarmOutPort;
public uint dwInfoLen;
public byte byDevSequence;//槽位号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MACADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byMacAddr;//MAC地址
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SERIALNO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sSerialNumber;//序列号
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = LOG_INFO_LEN - SERIALNO_LEN - MACADDR_LEN - 1)]
public string sInfo;
}
//视频综合平台软件
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct tagVEDIOPLATLOG
{
public byte bySearchCondition;//搜索条件,0-按槽位号搜索,1-按序列号搜索 2-按MAC地址进行搜索
public byte byDevSequence;//槽位号,0-79:对应子系统的槽位号;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SERIALNO_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] sSerialNumber;//序列号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MACADDR_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byMacAddr;//MAC地址
}
//参数关键字
public enum IVS_PARAM_KEY
{
OBJECT_DETECT_SENSITIVE = 1,//目标检测灵敏度
BACKGROUND_UPDATE_RATE = 2,//背景更新速度
SCENE_CHANGE_RATIO = 3,//场景变化检测最小值
SUPPRESS_LAMP = 4,//是否抑制车头灯
MIN_OBJECT_SIZE = 5,//能检测出的最小目标大小
OBJECT_GENERATE_RATE = 6,//目标生成速度
MISSING_OBJECT_HOLD = 7,//目标消失后继续跟踪时间
MAX_MISSING_DISTANCE = 8,//目标消失后继续跟踪距离
OBJECT_MERGE_SPEED = 9,//多个目标交错时,目标的融合速度
REPEATED_MOTION_SUPPRESS = 10,//重复运动抑制
ILLUMINATION_CHANGE = 11,//光影变化抑制开关
TRACK_OUTPUT_MODE = 12,//轨迹输出模式:0-输出目标的中心,1-输出目标的底部中心
ENTER_CHANGE_HOLD = 13,//检测区域变化阈值
RESUME_DEFAULT_PARAM = 255,//恢复默认关键字参数
}
//标定参数配置结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LF_CALIBRATION_PARAM
{
public byte byPointNum;//有效标定点个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CALIB_PT, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_CB_POINT[] struCBPoint;//标定点组
}
//LF双摄像机配置结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LF_CFG
{
public uint dwSize;//结构长度
public byte byEnable;//标定使能
public byte byFollowChan;// 被控制的从通道
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
public NET_DVR_LF_CALIBRATION_PARAM struCalParam;//标定点组
}
//L/F手动控制结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LF_MANUAL_CTRL_INFO
{
public NET_VCA_POINT struCtrlPoint;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//L/F目标跟踪结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LF_TRACK_TARGET_INFO
{
public uint dwTargetID;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LF_TRACK_MODE
{
public uint dwSize;//结构长度
public byte byTrackMode;//跟踪模式
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留,置0
[StructLayoutAttribute(LayoutKind.Explicit)]
public struct uModeParam
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.U4)]
[FieldOffsetAttribute(0)]
public uint[] dwULen;
/*[FieldOffsetAttribute(0)]
public NET_DVR_LF_MANUAL_CTRL_INFO struManualCtrl;//手动跟踪结构
[FieldOffsetAttribute(0)]
public NET_DVR_LF_TRACK_TARGET_INFO struTargetTrack;//目标跟踪结构
* */
}
}
// Long config callback type
public enum NET_SDK_CALLBACK_TYPE
{
NET_SDK_CALLBACK_TYPE_STATUS = 0, //回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS, //回调进度值
NET_SDK_CALLBACK_TYPE_DATA //回调数据内容
}
// Long config status value
public enum NET_SDK_CALLBACK_STATUS_NORMAL
{
NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功
NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中
NET_SDK_CALLBACK_STATUS_FAILED, //失败
NET_SDK_CALLBACK_STATUS_EXCEPTION, //异常
NET_SDK_CALLBACK_STATUS_LANGUAGE_MISMATCH, //语言不匹配
NET_SDK_CALLBACK_STATUS_DEV_TYPE_MISMATCH, //设备类型不匹配
NET_DVR_CALLBACK_STATUS_SEND_WAIT //发送等待
}
/********************************接口参数结构(end)*********************************/
#region 接口函数
/********************************SDK接口函数声明*********************************/
/*********************************************************
Function: NET_DVR_Init
Desc: 初始化SDK,调用其他SDK函数的前提。
Input:
Output:
Return: TRUE表示成功,FALSE表示失败。
**********************************************************/
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_Init();
/*********************************************************
Function: NET_DVR_Cleanup
Desc: 释放SDK资源,在结束之前最后调用
Input:
Output:
Return: TRUE表示成功,FALSE表示失败
**********************************************************/
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_Cleanup();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetDVRMessage(uint nMessage, IntPtr hWnd);
/*********************************************************
Function: EXCEPYIONCALLBACK
Desc: (回调函数)
Input:
Output:
Return:
**********************************************************/
public delegate void EXCEPYIONCALLBACK(uint dwType, int lUserID, int lHandle, IntPtr pUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetExceptionCallBack_V30(uint nMessage, IntPtr hWnd, EXCEPYIONCALLBACK fExceptionCallBack, IntPtr pUser);
/*********************************************************
Function: MESSCALLBACK
Desc: (回调函数)
Input:
Output:
Return:
**********************************************************/
public delegate int MESSCALLBACK(int lCommand, string sDVRIP, string pBuf, uint dwBufLen);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetDVRMessCallBack(MESSCALLBACK fMessCallBack);
/*********************************************************
Function: MESSCALLBACKEX
Desc: (回调函数)
Input:
Output:
Return:
**********************************************************/
public delegate int MESSCALLBACKEX(int iCommand, int iUserID, string pBuf, uint dwBufLen);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetDVRMessCallBack_EX(MESSCALLBACKEX fMessCallBack_EX);
/*********************************************************
Function: MESSCALLBACKNEW
Desc: (回调函数)
Input:
Output:
Return:
**********************************************************/
public delegate int MESSCALLBACKNEW(int lCommand, string sDVRIP, string pBuf, uint dwBufLen, ushort dwLinkDVRPort);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetDVRMessCallBack_NEW(MESSCALLBACKNEW fMessCallBack_NEW);
/*********************************************************
Function: MESSAGECALLBACK
Desc: (回调函数)
Input:
Output:
Return:
**********************************************************/
public delegate int MESSAGECALLBACK(int lCommand, System.IntPtr sDVRIP, System.IntPtr pBuf, uint dwBufLen, uint dwUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetDVRMessageCallBack(MESSAGECALLBACK fMessageCallBack, uint dwUser);
/*********************************************************
Function: MSGCallBack
Desc: (回调函数)
Input:
Output:
Return:
**********************************************************/
public delegate void MSGCallBack(int lCommand, ref NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetDVRMessageCallBack_V30(MSGCallBack fMessageCallBack, IntPtr pUser);
public delegate bool MSGCallBack_V31(int lCommand, ref NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetDVRMessageCallBack_V31(MSGCallBack_V31 fMessageCallBack, IntPtr pUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetSDKLocalCfg(int enumType, IntPtr lpInBuff);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetSDKLocalCfg(int enumType, IntPtr lpOutBuff);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetConnectTime(uint dwWaitTime, uint dwTryTimes);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetReconnect(uint dwInterval, int bEnableRecon);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetLocalIP(byte[] strIP, ref uint pValidNum, ref Boolean pEnableBind);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetValidIP(uint dwIPIndex, Boolean bEnableBind);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern uint NET_DVR_GetSDKVersion();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern uint NET_DVR_GetSDKBuildVersion();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern Int32 NET_DVR_IsSupport();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_StartListen(string sLocalIP, ushort wLocalPort);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_StopListen();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_StartListen_V30(String sLocalIP, ushort wLocalPort, MSGCallBack DataCallback, IntPtr pUserData);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_StopListen_V30(Int32 lListenHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern Int32 NET_DVR_Login(string sDVRIP, ushort wDVRPort, string sUserName, string sPassword, ref NET_DVR_DEVICEINFO lpDeviceInfo);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_Logout(int iUserID);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern uint NET_DVR_GetLastError();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern IntPtr NET_DVR_GetErrorMsg(ref int pErrorNo);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetShowMode(uint dwShowType, uint colorKey);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetDVRIPByResolveSvr(string sServerIP, ushort wServerPort, string sDVRName, ushort wDVRNameLen, string sDVRSerialNumber, ushort wDVRSerialLen, IntPtr pGetIP);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetDVRIPByResolveSvr_EX(string sServerIP, ushort wServerPort, byte[] sDVRName, ushort wDVRNameLen, byte[] sDVRSerialNumber, ushort wDVRSerialLen, byte[] sGetIP, ref uint dwPort);
//预览相关接口
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern Int32 NET_DVR_RealPlay(int iUserID, ref NET_DVR_CLIENTINFO lpClientInfo);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern Int32 NET_SDK_RealPlay(int iUserLogID, ref NET_DVR_CLIENTINFO lpDVRClientInfo);
/*********************************************************
Function: REALDATACALLBACK
Desc: 预览回调
Input: lRealHandle 当前的预览句柄
dwDataType 数据类型
pBuffer 存放数据的缓冲区指针
dwBufSize 缓冲区大小
pUser 用户数据
Output:
Return: void
**********************************************************/
public delegate void REALDATACALLBACK(Int32 lRealHandle, UInt32 dwDataType, IntPtr pBuffer, UInt32 dwBufSize, IntPtr pUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
/*********************************************************
Function: NET_DVR_RealPlay_V30
Desc: 实时预览。
Input: lUserID [in] NET_DVR_Login()或NET_DVR_Login_V30()的返回值
lpClientInfo [in] 预览参数
cbRealDataCallBack [in] 码流数据回调函数
pUser [in] 用户数据
bBlocked [in] 请求码流过程是否阻塞:0-否;1-是
Output:
Return: 1表示失败,其他值作为NET_DVR_StopRealPlay等函数的句柄参数
**********************************************************/
public static extern int NET_DVR_RealPlay_V30(int iUserID, ref NET_DVR_CLIENTINFO lpClientInfo, REALDATACALLBACK fRealDataCallBack_V30, IntPtr pUser, UInt32 bBlocked);
/*********************************************************
Function: NET_DVR_RealPlay_V40
Desc: 实时预览扩展接口。
Input: lUserID [in] NET_DVR_Login()或NET_DVR_Login_V30()的返回值
lpPreviewInfo [in] 预览参数
fRealDataCallBack_V30 [in] 码流数据回调函数
pUser [in] 用户数据
Output:
Return: 1表示失败,其他值作为NET_DVR_StopRealPlay等函数的句柄参数
**********************************************************/
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_RealPlay_V40(int iUserID, ref NET_DVR_PREVIEWINFO lpPreviewInfo, REALDATACALLBACK fRealDataCallBack_V30, IntPtr pUser);
// [DllImport(@".\NetSDK\HCNetSDK.dll")]
// public static extern int NET_DVR_GetRealPlayerIndex(int lRealHandle);
/*********************************************************
Function: NET_DVR_StopRealPlay
Desc: 停止预览。
Input: lRealHandle [in] 预览句柄,NET_DVR_RealPlay或者NET_DVR_RealPlay_V30的返回值
Output:
Return:
**********************************************************/
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_StopRealPlay(int iRealHandle);
/*********************************************************
Function: DRAWFUN
Desc: (回调函数)
Input:
Output:
Return:
**********************************************************/
public delegate void DRAWFUN(int lRealHandle, IntPtr hDc, uint dwUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_RigisterDrawFun(int lRealHandle, DRAWFUN fDrawFun, uint dwUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetPlayerBufNumber(Int32 lRealHandle, uint dwBufNum);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_ThrowBFrame(Int32 lRealHandle, uint dwNum);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetAudioMode(uint dwMode);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_OpenSound(Int32 lRealHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_CloseSound();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_OpenSoundShare(Int32 lRealHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_CloseSoundShare(Int32 lRealHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_Volume(Int32 lRealHandle, ushort wVolume);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SaveRealData(Int32 lRealHandle, string sFileName);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_StopSaveRealData(Int32 lRealHandle);
/*********************************************************
Function: REALDATACALLBACK
Desc: (回调函数)
Input:
Output:
Return:
**********************************************************/
public delegate void SETREALDATACALLBACK(int lRealHandle, uint dwDataType, IntPtr pBuffer, uint dwBufSize, uint dwUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetRealDataCallBack(int lRealHandle, SETREALDATACALLBACK fRealDataCallBack, uint dwUser);
/*********************************************************
Function: STDDATACALLBACK
Desc: (回调函数)
Input:
Output:
Return:
**********************************************************/
public delegate void STDDATACALLBACK(int lRealHandle, uint dwDataType, ref byte pBuffer, uint dwBufSize, uint dwUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetStandardDataCallBack(int lRealHandle, STDDATACALLBACK fStdDataCallBack, uint dwUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_CapturePicture(Int32 lRealHandle, string sPicFileName);
//动态生成I帧
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MakeKeyFrame(Int32 lUserID, Int32 lChannel);//主码流
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MakeKeyFrameSub(Int32 lUserID, Int32 lChannel);//子码流
//云台控制相关接口
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetPTZCtrl(Int32 lRealHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetPTZCtrl_Other(Int32 lUserID, int lChannel);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZControl(Int32 lRealHandle, uint dwPTZCommand, uint dwStop);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZControl_Other(Int32 lUserID, Int32 lChannel, uint dwPTZCommand, uint dwStop);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_TransPTZ(Int32 lRealHandle, string pPTZCodeBuf, uint dwBufSize);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_TransPTZ_Other(int lUserID, int lChannel, string pPTZCodeBuf, uint dwBufSize);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZPreset(int lRealHandle, uint dwPTZPresetCmd, uint dwPresetIndex);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZPreset_Other(int lUserID, int lChannel, uint dwPTZPresetCmd, uint dwPresetIndex);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_TransPTZ_EX(int lRealHandle, string pPTZCodeBuf, uint dwBufSize);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZControl_EX(int lRealHandle, uint dwPTZCommand, uint dwStop);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZPreset_EX(int lRealHandle, uint dwPTZPresetCmd, uint dwPresetIndex);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZCruise(int lRealHandle, uint dwPTZCruiseCmd, byte byCruiseRoute, byte byCruisePoint, ushort wInput);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZCruise_Other(int lUserID, int lChannel, uint dwPTZCruiseCmd, byte byCruiseRoute, byte byCruisePoint, ushort wInput);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZCruise_EX(int lRealHandle, uint dwPTZCruiseCmd, byte byCruiseRoute, byte byCruisePoint, ushort wInput);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZTrack(int lRealHandle, uint dwPTZTrackCmd);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZTrack_Other(int lUserID, int lChannel, uint dwPTZTrackCmd);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZTrack_EX(int lRealHandle, uint dwPTZTrackCmd);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZControlWithSpeed(int lRealHandle, uint dwPTZCommand, uint dwStop, uint dwSpeed);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZControlWithSpeed_Other(int lUserID, int lChannel, uint dwPTZCommand, uint dwStop, uint dwSpeed);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZControlWithSpeed_EX(int lRealHandle, uint dwPTZCommand, uint dwStop, uint dwSpeed);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetPTZCruise(int lUserID, int lChannel, int lCruiseRoute, ref NET_DVR_CRUISE_RET lpCruiseRet);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZMltTrack(int lRealHandle, uint dwPTZTrackCmd, uint dwTrackIndex);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZMltTrack_Other(int lUserID, int lChannel, uint dwPTZTrackCmd, uint dwTrackIndex);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZMltTrack_EX(int lRealHandle, uint dwPTZTrackCmd, uint dwTrackIndex);
//文件查找与回放
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindFile(int lUserID, int lChannel, uint dwFileType, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindNextFile(int lFindHandle, ref NET_DVR_FIND_DATA lpFindData);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_FindClose(int lFindHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindNextFile_V30(int lFindHandle, ref NET_DVR_FINDDATA_V30 lpFindData);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindNextFile_V40(int lFindHandle, ref NET_DVR_FINDDATA_V40 lpFindData);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindFile_V30(int lUserID, ref NET_DVR_FILECOND pFindCond);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindFile_V40(int lUserID, ref NET_DVR_FILECOND_V40 pFindCond);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindFileByEvent_V40(int lUserID, ref NET_DVR_SEARCH_EVENT_PARAM_V40 lpSearchEventParam);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindNextEvent_V40(int lSearchHandle, ref NET_DVR_SEARCH_EVENT_RET_V40 lpSearchEventRet);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_FindClose_V30(int lFindHandle);
//2007-04-16增加查询结果带卡号的文件查找
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindNextFile_Card(int lFindHandle, ref NET_DVR_FINDDATA_CARD lpFindData);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindFile_Card(int lUserID, int lChannel, uint dwFileType, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_LockFileByName(int lUserID, string sLockFileName);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_UnlockFileByName(int lUserID, string sUnlockFileName);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_PlayBackByName(int lUserID, string sPlayBackFileName, IntPtr hWnd);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_PlayBackByTime(int lUserID, int lChannel, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime, System.IntPtr hWnd);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_PlayBackByTime_V40(int lUserID, ref NET_DVR_VOD_PARA pVodPara);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PlayBackControl(int lPlayHandle, uint dwControlCode, uint dwInValue, ref uint LPOutValue);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PlayBackControl_V40(int lPlayHandle, uint dwControlCode, IntPtr lpInBuffer, uint dwInValue, IntPtr lpOutBuffer, ref uint LPOutValue);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_StopPlayBack(int lPlayHandle);
/*********************************************************
Function: PLAYDATACALLBACK
Desc: (回调函数)
Input:
Output:
Return:
**********************************************************/
public delegate void PLAYDATACALLBACK(int lPlayHandle, uint dwDataType, IntPtr pBuffer, uint dwBufSize, uint dwUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetPlayDataCallBack(int lPlayHandle, PLAYDATACALLBACK fPlayDataCallBack, uint dwUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PlayBackSaveData(int lPlayHandle, string sFileName);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_StopPlayBackSave(int lPlayHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetPlayBackOsdTime(int lPlayHandle, ref NET_DVR_TIME lpOsdTime);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PlayBackCaptureFile(int lPlayHandle, string sFileName);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_GetFileByName(int lUserID, string sDVRFileName, string sSavedFileName);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_GetFileByTime(int lUserID, int lChannel, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime, string sSavedFileName);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_GetFileByTime_V40(int lUserID, string sSavedFileName, ref NET_DVR_PLAYCOND pDownloadCond);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_StopGetFile(int lFileHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_GetDownloadPos(int lFileHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_GetPlayBackPos(int lPlayHandle);
//升级
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_Upgrade(int lUserID, string sFileName);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_GetUpgradeState(int lUpgradeHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_GetUpgradeProgress(int lUpgradeHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_CloseUpgradeHandle(int lUpgradeHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetNetworkEnvironment(uint dwEnvironmentLevel);
//远程格式化硬盘
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FormatDisk(int lUserID, int lDiskNumber);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetFormatProgress(int lFormatHandle, ref int pCurrentFormatDisk, ref int pCurrentDiskPos, ref int pFormatStatic);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_CloseFormatHandle(int lFormatHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetIPCProtoList(int lUserID, ref NET_DVR_IPC_PROTO_LIST lpProtoList);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetIPCProtoList_V41(int lUserID, ref NET_DVR_IPC_PROTO_LIST_V41 lpProtoList);
//报警
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_SetupAlarmChan(int lUserID);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_CloseAlarmChan(int lAlarmHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_SetupAlarmChan_V30(int lUserID);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_SetupAlarmChan_V41(int lUserID, ref NET_DVR_SETUPALARM_PARAM lpSetupParam);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_CloseAlarmChan_V30(int lAlarmHandle);
//语音对讲
/*********************************************************
Function: VOICEDATACALLBACK
Desc: (回调函数)
Input:
Output:
Return:
**********************************************************/
public delegate void VOICEDATACALLBACK(int lVoiceComHandle, string pRecvDataBuffer, uint dwBufSize, byte byAudioFlag, uint dwUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_StartVoiceCom(int lUserID, VOICEDATACALLBACK fVoiceDataCallBack, uint dwUser);
/*********************************************************
Function: VOICEDATACALLBACKV30
Desc: (回调函数)
Input:
Output:
Return:
**********************************************************/
public delegate void VOICEDATACALLBACKV30(int lVoiceComHandle, IntPtr pRecvDataBuffer, uint dwBufSize, byte byAudioFlag, System.IntPtr pUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_StartVoiceCom_V30(int lUserID, uint dwVoiceChan, bool bNeedCBNoEncData, VOICEDATACALLBACKV30 fVoiceDataCallBack, IntPtr pUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetVoiceComClientVolume(int lVoiceComHandle, ushort wVolume);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_StopVoiceCom(int lVoiceComHandle);
//语音转发
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_StartVoiceCom_MR(int lUserID, VOICEDATACALLBACK fVoiceDataCallBack, uint dwUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_StartVoiceCom_MR_V30(int lUserID, uint dwVoiceChan, VOICEDATACALLBACKV30 fVoiceDataCallBack, IntPtr pUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_VoiceComSendData(int lVoiceComHandle, string pSendBuf, uint dwBufSize);
//语音广播
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_ClientAudioStart();
/*********************************************************
Function: VOICEAUDIOSTART
Desc: (回调函数)
Input:
Output:
Return:
**********************************************************/
public delegate void VOICEAUDIOSTART(string pRecvDataBuffer, uint dwBufSize, IntPtr pUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_ClientAudioStart_V30(VOICEAUDIOSTART fVoiceAudioStart, IntPtr pUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_ClientAudioStop();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_AddDVR(int lUserID);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_AddDVR_V30(int lUserID, uint dwVoiceChan);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_DelDVR(int lUserID);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_DelDVR_V30(int lVoiceHandle);
//透明通道设置
/*********************************************************
Function: SERIALDATACALLBACK
Desc: (回调函数)
Input:
Output:
Return:
**********************************************************/
public delegate void SERIALDATACALLBACK(int lSerialHandle, string pRecvDataBuffer, uint dwBufSize, uint dwUser);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SerialStart(int lUserID, int lSerialPort, SERIALDATACALLBACK fSerialDataCallBack, uint dwUser);
//485作为透明通道时,需要指明通道号,因为不同通道号485的设置可以不同(比如波特率)
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SerialSend(int lSerialHandle, int lChannel, string pSendBuf, uint dwBufSize);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SerialStop(int lSerialHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SendTo232Port(int lUserID, string pSendBuf, uint dwBufSize);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SendToSerialPort(int lUserID, uint dwSerialPort, uint dwSerialIndex, string pSendBuf, uint dwBufSize);
//解码 nBitrate = 16000
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern System.IntPtr NET_DVR_InitG722Decoder(int nBitrate);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern void NET_DVR_ReleaseG722Decoder(IntPtr pDecHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_DecodeG722Frame(IntPtr pDecHandle, ref byte pInBuffer, ref byte pOutBuffer);
//编码
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern IntPtr NET_DVR_InitG722Encoder();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_EncodeG722Frame(IntPtr pEncodeHandle, ref byte pInBuffer, ref byte pOutBuffer);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern void NET_DVR_ReleaseG722Encoder(IntPtr pEncodeHandle);
//远程控制本地显示
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_ClickKey(int lUserID, int lKeyIndex);
//远程控制设备端手动录像
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_StartDVRRecord(int lUserID, int lChannel, int lRecordType);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_StopDVRRecord(int lUserID, int lChannel);
//解码卡
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_InitDevice_Card(ref int pDeviceTotalChan);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_ReleaseDevice_Card();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_InitDDraw_Card(IntPtr hParent, uint colorKey);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_ReleaseDDraw_Card();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_RealPlay_Card(int lUserID, ref NET_DVR_CARDINFO lpCardInfo, int lChannelNum);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_ResetPara_Card(int lRealHandle, ref NET_DVR_DISPLAY_PARA lpDisplayPara);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_RefreshSurface_Card();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_ClearSurface_Card();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_RestoreSurface_Card();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_OpenSound_Card(int lRealHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_CloseSound_Card(int lRealHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetVolume_Card(int lRealHandle, ushort wVolume);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_AudioPreview_Card(int lRealHandle, int bEnable);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_GetCardLastError_Card();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern System.IntPtr NET_DVR_GetChanHandle_Card(int lRealHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_CapturePicture_Card(int lRealHandle, string sPicFileName);
//获取解码卡序列号此接口无效,改用GetBoardDetail接口获得(2005-12-08支持)
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetSerialNum_Card(int lChannelNum, ref uint pDeviceSerialNo);
//日志
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindDVRLog(int lUserID, int lSelectMode, uint dwMajorType, uint dwMinorType, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindNextLog(int lLogHandle, ref NET_DVR_LOG lpLogData);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_FindLogClose(int lLogHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindDVRLog_V30(int lUserID, int lSelectMode, uint dwMajorType, uint dwMinorType, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime, bool bOnlySmart);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindNextLog_V30(int lLogHandle, ref NET_DVR_LOG_V30 lpLogData);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_FindLogClose_V30(int lLogHandle);
//截止2004年8月5日,共113个接口
//ATM DVR
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindFileByCard(int lUserID, int lChannel, uint dwFileType, int nFindType, ref byte sCardNumber, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime);
//2005-09-15
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_CaptureJPEGPicture(int lUserID, int lChannel, ref NET_DVR_JPEGPARA lpJpegPara, string sPicFileName);
//JPEG抓图到内存
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_CaptureJPEGPicture_NEW(int lUserID, int lChannel, ref NET_DVR_JPEGPARA lpJpegPara, byte[] sJpegPicBuffer, uint dwPicSize, ref uint lpSizeReturned);
//2006-02-16
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_GetRealPlayerIndex(int lRealHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_GetPlayBackPlayerIndex(int lPlayHandle);
//2006-08-28 704-640 缩放配置
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetScaleCFG(int lUserID, uint dwScale);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetScaleCFG(int lUserID, ref uint lpOutScale);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetScaleCFG_V30(int lUserID, ref NET_DVR_SCALECFG pScalecfg);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetScaleCFG_V30(int lUserID, ref NET_DVR_SCALECFG pScalecfg);
//2006-08-28 ATM机端口设置
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetATMPortCFG(int lUserID, ushort wATMPort);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetATMPortCFG(int lUserID, ref ushort LPOutATMPort);
//2006-11-10 支持显卡辅助输出
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_InitDDrawDevice();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_ReleaseDDrawDevice();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_GetDDrawDeviceTotalNums();
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetDDrawDevice(int lPlayPort, uint nDeviceNum);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZSelZoomIn(int lRealHandle, ref NET_DVR_POINT_FRAME pStruPointFrame);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_PTZSelZoomIn_EX(int lUserID, int lChannel, ref NET_DVR_POINT_FRAME pStruPointFrame);
//解码设备DS-6001D/DS-6001F
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_StartDecode(int lUserID, int lChannel, ref NET_DVR_DECODERINFO lpDecoderinfo);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_StopDecode(int lUserID, int lChannel);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetDecoderState(int lUserID, int lChannel, ref NET_DVR_DECODERSTATE lpDecoderState);
//2005-08-01
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetDecInfo(int lUserID, int lChannel, ref NET_DVR_DECCFG lpDecoderinfo);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetDecInfo(int lUserID, int lChannel, ref NET_DVR_DECCFG lpDecoderinfo);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetDecTransPort(int lUserID, ref NET_DVR_PORTCFG lpTransPort);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetDecTransPort(int lUserID, ref NET_DVR_PORTCFG lpTransPort);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_DecPlayBackCtrl(int lUserID, int lChannel, uint dwControlCode, uint dwInValue, ref uint LPOutValue, ref NET_DVR_PLAYREMOTEFILE lpRemoteFileInfo);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_StartDecSpecialCon(int lUserID, int lChannel, ref NET_DVR_DECCHANINFO lpDecChanInfo);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_StopDecSpecialCon(int lUserID, int lChannel, ref NET_DVR_DECCHANINFO lpDecChanInfo);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_DecCtrlDec(int lUserID, int lChannel, uint dwControlCode);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_DecCtrlScreen(int lUserID, int lChannel, uint dwControl);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetDecCurLinkStatus(int lUserID, int lChannel, ref NET_DVR_DECSTATUS lpDecStatus);
//多路解码器
//2007-11-30 V211支持以下接口 //11
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixStartDynamic(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_DYNAMIC_DEC lpDynamicInfo);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixStopDynamic(int lUserID, uint dwDecChanNum);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixGetDecChanInfo(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_DEC_CHAN_INFO lpInter);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixSetLoopDecChanInfo(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_LOOP_DECINFO lpInter);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixGetLoopDecChanInfo(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_LOOP_DECINFO lpInter);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixSetLoopDecChanEnable(int lUserID, uint dwDecChanNum, uint dwEnable);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixGetLoopDecChanEnable(int lUserID, uint dwDecChanNum, ref uint lpdwEnable);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixGetLoopDecEnable(int lUserID, ref uint lpdwEnable);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixSetDecChanEnable(int lUserID, uint dwDecChanNum, uint dwEnable);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixGetDecChanEnable(int lUserID, uint dwDecChanNum, ref uint lpdwEnable);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixGetDecChanStatus(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_DEC_CHAN_STATUS lpInter);
//2007-12-22 增加支持接口 //18
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixSetTranInfo(int lUserID, ref NET_DVR_MATRIX_TRAN_CHAN_CONFIG lpTranInfo);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixGetTranInfo(int lUserID, ref NET_DVR_MATRIX_TRAN_CHAN_CONFIG lpTranInfo);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixSetRemotePlay(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_DEC_REMOTE_PLAY lpInter);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixSetRemotePlayControl(int lUserID, uint dwDecChanNum, uint dwControlCode, uint dwInValue, ref uint LPOutValue);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixGetRemotePlayStatus(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS lpOuter);
//2009-4-13 新增
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixStartDynamic_V30(int lUserID, uint dwDecChanNum, ref NET_DVR_PU_STREAM_CFG lpDynamicInfo);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixSetLoopDecChanInfo_V30(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_LOOP_DECINFO_V30 lpInter);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixGetLoopDecChanInfo_V30(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_LOOP_DECINFO_V30 lpInter);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixGetDecChanInfo_V30(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_DEC_CHAN_INFO_V30 lpInter);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixSetTranInfo_V30(int lUserID, ref NET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30 lpTranInfo);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixGetTranInfo_V30(int lUserID, ref NET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30 lpTranInfo);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixGetDisplayCfg(int lUserID, uint dwDispChanNum, ref NET_DVR_VGA_DISP_CHAN_CFG lpDisplayCfg);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixSetDisplayCfg(int lUserID, uint dwDispChanNum, ref NET_DVR_VGA_DISP_CHAN_CFG lpDisplayCfg);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_MatrixStartPassiveDecode(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_PASSIVEMODE lpPassiveMode);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixSendData(int lPassiveHandle, System.IntPtr pSendBuf, uint dwBufSize);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixStopPassiveDecode(int lPassiveHandle);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_UploadLogo(int lUserID, uint dwDispChanNum, ref NET_DVR_DISP_LOGOCFG lpDispLogoCfg, System.IntPtr sLogoBuffer);
public const int NET_DVR_SHOWLOGO = 1;/*显示LOGO*/
public const int NET_DVR_HIDELOGO = 2;/*隐藏LOGO*/
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_LogoSwitch(int lUserID, uint dwDecChan, uint dwLogoSwitch);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixGetDeviceStatus(int lUserID, ref NET_DVR_DECODER_WORK_STATUS lpDecoderCfg);
/*显示通道命令码定义*/
//上海世博 定制
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_RigisterPlayBackDrawFun(int lRealHandle, DRAWFUN fDrawFun, uint dwUser);
public const int DISP_CMD_ENLARGE_WINDOW = 1; /*显示通道放大某个窗口*/
public const int DISP_CMD_RENEW_WINDOW = 2; /*显示通道窗口还原*/
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixDiaplayControl(int lUserID, uint dwDispChanNum, uint dwDispChanCmd, uint dwCmdParam);
//end
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_RefreshPlay(int lPlayHandle);
//恢复默认值
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_RestoreConfig(int lUserID);
//保存参数
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SaveConfig(int lUserID);
//重启
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_RebootDVR(int lUserID);
//关闭DVR
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_ShutDownDVR(int lUserID);
//参数配置 begin
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetDVRConfig(int lUserID, uint dwCommand, int lChannel, IntPtr lpOutBuffer, uint dwOutBufferSize, ref uint lpBytesReturned);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetDVRConfig(int lUserID, uint dwCommand, int lChannel, System.IntPtr lpInBuffer, uint dwInBufferSize);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetDVRWorkState_V30(int lUserID, IntPtr pWorkState);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetDVRWorkState(int lUserID, ref NET_DVR_WORKSTATE lpWorkState);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetVideoEffect(int lUserID, int lChannel, uint dwBrightValue, uint dwContrastValue, uint dwSaturationValue, uint dwHueValue);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetVideoEffect(int lUserID, int lChannel, ref uint pBrightValue, ref uint pContrastValue, ref uint pSaturationValue, ref uint pHueValue);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_ClientGetframeformat(int lUserID, ref NET_DVR_FRAMEFORMAT lpFrameFormat);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_ClientSetframeformat(int lUserID, ref NET_DVR_FRAMEFORMAT lpFrameFormat);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetAtmProtocol(int lUserID, ref NET_DVR_ATM_PROTOCOL lpAtmProtocol);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetAlarmOut_V30(int lUserID, IntPtr lpAlarmOutState);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetAlarmOut(int lUserID, ref NET_DVR_ALARMOUTSTATUS lpAlarmOutState);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetAlarmOut(int lUserID, int lAlarmOutPort, int lAlarmOutStatic);
//获取UPNP端口映射状态
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetUpnpNatState(int lUserID, ref NET_DVR_UPNP_NAT_STATE lpState);
//视频参数调节
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_ClientSetVideoEffect(int lRealHandle, uint dwBrightValue, uint dwContrastValue, uint dwSaturationValue, uint dwHueValue);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_ClientGetVideoEffect(int lRealHandle, ref uint pBrightValue, ref uint pContrastValue, ref uint pSaturationValue, ref uint pHueValue);
//配置文件
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetConfigFile(int lUserID, string sFileName);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetConfigFile(int lUserID, string sFileName);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetConfigFile_V30(int lUserID, string sOutBuffer, uint dwOutSize, ref uint pReturnSize);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetConfigFile_EX(int lUserID, string sOutBuffer, uint dwOutSize);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetConfigFile_EX(int lUserID, string sInBuffer, uint dwInSize);
//启用日志文件写入接口
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetLogToFile(int bLogEnable, string strLogDir, bool bAutoDel);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetSDKState(ref NET_DVR_SDKSTATE pSDKState);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetSDKAbility(ref NET_DVR_SDKABL pSDKAbl);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetPTZProtocol(int lUserID, ref NET_DVR_PTZCFG pPtzcfg);
//前面板锁定
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_LockPanel(int lUserID);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_UnLockPanel(int lUserID);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetRtspConfig(int lUserID, uint dwCommand, ref NET_DVR_RTSPCFG lpInBuffer, uint dwInBufferSize);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetRtspConfig(int lUserID, uint dwCommand, ref NET_DVR_RTSPCFG lpOutBuffer, uint dwOutBufferSize);
//视频综合平台
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixGetSceneCfg(int lUserID, uint dwSceneNum, ref NET_DVR_MATRIX_SCENECFG lpSceneCfg);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_MatrixSetSceneCfg(int lUserID, uint dwSceneNum, ref NET_DVR_MATRIX_SCENECFG lpSceneCfg);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetRealHeight(int lUserID, int lChannel, ref NET_VCA_LINE lpLine, ref Single lpHeight);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetRealLength(int lUserID, int lChannel, ref NET_VCA_LINE lpLine, ref Single lpLength);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SaveRealData_V30(int lRealHandle, uint dwTransType, string sFileName);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_EncodeG711Frame(uint iType, ref byte pInBuffer, ref byte pOutBuffer);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_DecodeG711Frame(uint iType, ref byte pInBuffer, ref byte pOutBuffer);
//2009-7-22 end
//邮件服务测试 9000_1.1
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_EmailTest(int lUserID);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindFileByEvent(int lUserID, ref NET_DVR_SEARCH_EVENT_PARAM lpSearchEventParam);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindNextEvent(int lSearchHandle, ref NET_DVR_SEARCH_EVENT_RET lpSearchEventRet);
/*********************************************************
Function: NET_DVR_Login_V30
Desc:
Input: sDVRIP [in] 设备IP地址
wServerPort [in] 设备端口号
sUserName [in] 登录的用户名
sPassword [in] 用户密码
Output: lpDeviceInfo [out] 设备信息
Return: -1表示失败,其他值表示返回的用户ID值
**********************************************************/
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern Int32 NET_DVR_Login_V30(string sDVRIP, Int32 wDVRPort, string sUserName, string sPassword, ref NET_DVR_DEVICEINFO_V30 lpDeviceInfo);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_Login_V40(ref NET_DVR_USER_LOGIN_INFO pLoginInfo, ref NET_DVR_DEVICEINFO_V40 lpDeviceInfo);
/*********************************************************
Function: NET_DVR_Logout_V30
Desc: 用户注册设备。
Input: lUserID [in] 用户ID号
Output:
Return: TRUE表示成功,FALSE表示失败
**********************************************************/
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_Logout_V30(Int32 lUserID);
[DllImportAttribute(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindNextLog_MATRIX(int iLogHandle, ref NET_DVR_LOG_MATRIX lpLogData);
[DllImportAttribute(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_FindDVRLog_Matrix(int iUserID, int lSelectMode, uint dwMajorType, uint dwMinorType, ref tagVEDIOPLATLOG lpVedioPlatLog, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime);
[DllImportAttribute(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_STDXMLConfig(int iUserID, ref NET_DVR_XML_CONFIG_INPUT lpInputParam, ref NET_DVR_XML_CONFIG_OUTPUT lpOutputParam);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetDeviceConfig(int lUserID, uint dwCommand, uint dwCount, IntPtr lpInBuffer, uint dwInBufferSize, IntPtr lpStatusList, IntPtr lpOutBuffer, uint dwOutBufferSize);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetDeviceConfig(int lUserID, uint dwCommand, uint dwCount, IntPtr lpInBuffer, uint dwInBufferSize, IntPtr lpStatusList, IntPtr lpInParamBuffer, uint dwInParamBufferSize);
[DllImportAttribute(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetSTDConfig(int iUserID, uint dwCommand, ref NET_DVR_STD_CONFIG lpConfigParam);
[DllImportAttribute(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetSTDConfig(int iUserID, uint dwCommand, ref NET_DVR_STD_CONFIG lpConfigParam);
public delegate void RemoteConfigCallback(uint dwType, IntPtr lpBuffer, uint dwBufLen, IntPtr pUserData);
[DllImportAttribute(@".\NetSDK\HCNetSDK.dll")]
public static extern int NET_DVR_StartRemoteConfig(int lUserID, int dwCommand, IntPtr lpInBuffer, Int32 dwInBufferLen, RemoteConfigCallback cbStateCallback, IntPtr pUserData);
[DllImportAttribute(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SendRemoteConfig(int lHandle, int dwDataType, IntPtr pSendBuf, int dwBufSize);
[DllImportAttribute(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_StopRemoteConfig(int lHandle);
/*********************************************************
Function: NET_DVR_GetDeviceAbility
Desc:
Input:
Output:
Return: TRUE表示成功,FALSE表示失败。
**********************************************************/
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetDeviceAbility(int lUserID, uint dwAbilityType, IntPtr pInBuf, uint dwInLength, IntPtr pOutBuf, uint dwOutLength);
//设置/获取参数关键字
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetBehaviorParamKey(int lUserID, int lChannel, uint dwParameterKey, int nValue);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetBehaviorParamKey(int lUserID, int lChannel, uint dwParameterKey, ref int pValue);
//获取/设置行为分析目标叠加接口
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetVCADrawMode(int lUserID, int lChannel, ref NET_VCA_DRAW_MODE lpDrawMode);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetVCADrawMode(int lUserID, int lChannel, ref NET_VCA_DRAW_MODE lpDrawMode);
//双摄像机跟踪模式设置接口
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetLFTrackMode(int lUserID, int lChannel, ref NET_DVR_LF_TRACK_MODE lpTrackMode);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetLFTrackMode(int lUserID, int lChannel, ref NET_DVR_LF_TRACK_MODE lpTrackMode);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetCCDCfg(int lUserID, int lChannel, ref NET_DVR_CCD_CFG lpCCDCfg);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_SetCCDCfg(int lUserID, int lChannel, ref NET_DVR_CCD_CFG lpCCDCfg);
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_DVR_GetParamSetMode(int lUserID, ref uint dwParamSetMode);
#endregion
#region 消息事件
[DllImport("User32.dll", EntryPoint = "PostMessage")]
public static extern int PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
#endregion
//识别场景
public enum VCA_RECOGNIZE_SCENE
{
VCA_LOW_SPEED_SCENE = 0,//低速通过场景(收费站、小区门口、停车场)
VCA_HIGH_SPEED_SCENE = 1,//高速通过场景(卡口、高速公路、移动稽查)
VCA_MOBILE_CAMERA_SCENE = 2,//移动摄像机应用)
}
//识别结果标志
public enum VCA_RECOGNIZE_RESULT
{
VCA_RECOGNIZE_FAILURE = 0,//识别失败
VCA_IMAGE_RECOGNIZE_SUCCESS,//图像识别成功
VCA_VIDEO_RECOGNIZE_SUCCESS_OF_BEST_LICENSE,//视频识别更优结果
VCA_VIDEO_RECOGNIZE_SUCCESS_OF_NEW_LICENSE,//视频识别到新的车牌
VCA_VIDEO_RECOGNIZE_FINISH_OF_CUR_LICENSE,//视频识别车牌结束
}
//视频识别触发类型
public enum VCA_TRIGGER_TYPE
{
INTER_TRIGGER = 0,// 模块内部触发识别
EXTER_TRIGGER = 1,// 外部物理信号触发:线圈、雷达、手动触发信号;
}
public const int MAX_CHINESE_CHAR_NUM = 64; // 最大汉字类别数量
//车牌可动态修改参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_PLATE_PARAM
{
public NET_VCA_RECT struSearchRect;//搜索区域(归一化)
public NET_VCA_RECT struInvalidateRect;//无效区域,在搜索区域内部 (归一化)
public ushort wMinPlateWidth;//车牌最小宽度
public ushort wTriggerDuration;//触发持续帧数
public byte byTriggerType;//触发模式, VCA_TRIGGER_TYPE
public byte bySensitivity;//灵敏度
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留,置0
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
public byte[] byCharPriority;// 汉字优先级
}
/*wMinPlateWidth:该参数默认配置为80像素;该参数的配置对于车牌海康威视车牌识别说明文档
识别有影响,如果设置过大,那么如果场景中出现小车牌就会漏识别;如果场景中车牌宽度普遍较大,可以把该参数设置稍大,便于减少对虚假车牌的处理。在标清情况下建议设置为80, 在高清情况下建议设置为120
wTriggerDuration - 外部触发信号持续帧数量,其含义是从触发信号开始识别的帧数量。该值在低速场景建议设置为50~100;高速场景建议设置为15~25;移动识别时如果也有外部触发,设置为15~25;具体可以根据现场情况进行配置
*/
//车牌识别参数子结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_PLATEINFO
{
public VCA_RECOGNIZE_SCENE eRecogniseScene;//识别场景(低速和高速)
public NET_VCA_PLATE_PARAM struModifyParam;//车牌可动态修改参数
}
//车牌识别配置参数
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_PLATECFG
{
public uint dwSize;
public byte byPicProType;//报警时图片处理方式 0-不处理 1-上传
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;//保留,设置为0
public NET_DVR_JPEGPARA struPictureParam;//图片规格结构
public NET_VCA_PLATEINFO struPlateInfo;//车牌信息
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT_2, ArraySubType = UnmanagedType.Struct)]
public NET_DVR_SCHEDTIME[] struAlarmTime;//布防时间
public NET_DVR_HANDLEEXCEPTION_V30 struHandleType;//处理方式
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_CHANNUM_V30, ArraySubType = UnmanagedType.I1)]
public byte[] byRelRecordChan;//报警触发的录象通道,为1表示触发该通道
}
//车牌识别结果子结构
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct NET_VCA_PLATE_INFO
{
public VCA_RECOGNIZE_RESULT eResultFlag;//识别结果标志
public VCA_PLATE_TYPE ePlateType;//车牌类型
public VCA_PLATE_COLOR ePlateColor;//车牌颜色
public NET_VCA_RECT struPlateRect;//车牌位置
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.U4)]
public uint[] dwRes;//保留,设置为0
public uint dwLicenseLen;//车牌长度
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = MAX_LICENSE_LEN)]
public string sLicense;//车牌号码
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = MAX_LICENSE_LEN)]
public string sBelieve;//各个识别字符的置信度,如检测到车牌"浙A12345", 置信度为10,20,30,40,50,60,70,则表示"浙"字正确的可能性只有10%,"A"字的正确的可能性是20%
}
//车牌检测结果
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_PLATE_RESULT
{
public uint dwSize;//结构长度
public uint dwRelativeTime;//相对时标
public uint dwAbsTime;//绝对时标
public byte byPlateNum;//车牌个数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I1)]
public byte[] byRes1;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_PLATE_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_PLATE_INFO[] struPlateInfo;//车牌信息结构
public uint dwPicDataLen;//返回图片的长度 为0表示没有图片,大于0表示该结构后面紧跟图片数据
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.U4)]
public uint[] dwRes2;//保留,设置为0 图片的高宽
public System.IntPtr pImage;//指向图片的指针
}
//重启智能库
[DllImport(@".\NetSDK\HCNetSDK.dll")]
public static extern bool NET_VCA_RestartLib(int lUserID, int lChannel);
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_LINE_SEGMENT
{
public NET_VCA_POINT struStartPoint;//表示高度线时,表示头部点
public NET_VCA_POINT struEndPoint;//表示高度线时,表示脚部点
public float fValue;//高度值,单位米
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//标定线链表
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_VCA_LINE_SEG_LIST
{
public uint dwSize;//结构长度
public byte bySegNum;//标定线条数
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = System.Runtime.InteropServices.UnmanagedType.I1)]
public byte[] byRes;//保留,置0
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_SEGMENT_NUM, ArraySubType = UnmanagedType.Struct)]
public NET_VCA_LINE_SEGMENT[] struSeg;
}
//2009-8-18 抓拍机
public const int PLATE_INFO_LEN = 1024;
public const int PLATE_NUM_LEN = 16;
public const int FILE_NAME_LEN = 256;
//liscense plate result
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_PLATE_RET
{
public uint dwSize;//结构长度
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PLATE_NUM_LEN, ArraySubType = UnmanagedType.I1)]
public byte[] byPlateNum;//车牌号
public byte byVehicleType;// 车类型
public byte byTrafficLight;//0-绿灯;1-红灯
public byte byPlateColor;//车牌颜色
public byte byDriveChan;//触发车道号
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1)]
public byte[] byTimeInfo;/*时间信息*///plate_172.6.113.64_20090724155526948_197170484
//目前是17位,精确到ms:20090724155526948
public byte byCarSpeed;/*单位km/h*/
public byte byCarSpeedH;/*cm/s高8位*/
public byte byCarSpeedL;/*cm/s低8位*/
public byte byRes;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PLATE_INFO_LEN - 36, ArraySubType = UnmanagedType.I1)]
public byte[] byInfo;
public uint dwPicLen;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_CCD_CFG
{
public uint dwSize;//结构长度
public byte byBlc;/*背光补偿0-off; 1-on*/
public byte byBlcMode;/*blc类型0-自定义1-上;2-下;3-左;4-右;5-中;注:此项在blc为 on 时才起效*/
public byte byAwb;/*自动白平衡0-自动1; 1-自动2; 2-自动控制*/
public byte byAgc;/*自动增益0-关; 1-低; 2-中; 3-高*/
public byte byDayNight;/*日夜转换;0 彩色;1黑白;2自动*/
public byte byMirror;/*镜像0-关;1-左右;2-上下;3-中心*/
public byte byShutter;/*快门0-自动; 1-1/25; 2-1/50; 3-1/100; 4-1/250;5-1/500; 6-1/1k ;7-1/2k; 8-1/4k; 9-1/10k; 10-1/100k;*/
public byte byIrCutTime;/*IRCUT切换时间,5, 10, 15, 20, 25*/
public byte byLensType;/*镜头类型0-电子光圈; 1-自动光圈*/
public byte byEnVideoTrig;/*视频触发使能:1-支持;0-不支持。视频触发模式下视频快门速度按照byShutter速度,抓拍图片的快门速度按照byCapShutter速度,抓拍完成后会自动调节回视频模式*/
public byte byCapShutter;/*抓拍时的快门速度,1-1/25; 2-1/50; 3-1/100; 4-1/250;5-1/500; 6-1/1k ;7-1/2k; 8-1/4k; 9-1/10k; 10-1/100k; 11-1/150; 12-1/200*/
public byte byEnRecognise;/*1-支持识别;0-不支持识别*/
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct tagCAMERAPARAMCFG
{
public uint dwSize;
public uint dwPowerLineFrequencyMode;/*0-50HZ; 1-60HZ*/
public uint dwWhiteBalanceMode;/*0手动白平衡; 1自动白平衡1(范围小); 2 自动白平衡2(范围宽,2200K-15000K);3自动控制3*/
public uint dwWhiteBalanceModeRGain;/*手动白平衡时有效,手动白平衡 R增益*/
public uint dwWhiteBalanceModeBGain;/*手动白平衡时有效,手动白平衡 B增益*/
public uint dwExposureMode;/*0 手动曝光 1自动曝光*/
public uint dwExposureSet;/* 0-USERSET, 1-自动x2,2-自动4,3-自动81/25, 4-1/50, 5-1/100, 6-1/250, 7-1/500, 8-1/750, 9-1/1000, 10-1/2000, 11-1/4000,12-1/10,000; 13-1/100,000*/
public uint dwExposureUserSet;/* 自动自定义曝光时间*/
public uint dwExposureTarget;/*手动曝光时间 范围(Manumal有效,微秒)*/
public uint dwIrisMode;/*0 自动光圈 1手动光圈*/
public uint dwGainLevel;/*增益:0-100*/
public uint dwBrightnessLevel;/*0-100*/
public uint dwContrastLevel;/*0-100*/
public uint dwSharpnessLevel;/*0-100*/
public uint dwSaturationLevel;/*0-100*/
public uint dwHueLevel;/*0-100,(保留)*/
public uint dwGammaCorrectionEnabled;/*0 dsibale 1 enable*/
public uint dwGammaCorrectionLevel;/*0-100*/
public uint dwWDREnabled;/*宽动态:0 dsibale 1 enable*/
public uint dwWDRLevel1;/*0-F*/
public uint dwWDRLevel2;/*0-F*/
public uint dwWDRContrastLevel;/*0-100*/
public uint dwDayNightFilterType;/*日夜切换:0 day,1 night,2 auto */
public uint dwSwitchScheduleEnabled;/*0 dsibale 1 enable,(保留)*/
//模式1(保留)
public uint dwBeginTime; /*0-100*/
public uint dwEndTime;/*0-100*/
//模式2
public uint dwDayToNightFilterLevel;//0-7
public uint dwNightToDayFilterLevel;//0-7
public uint dwDayNightFilterTime;//(60秒)
public uint dwBacklightMode;/*背光补偿:0 USERSET 1 UP、2 DOWN、3 LEFT、4 RIGHT、5MIDDLE*/
public uint dwPositionX1;//(X坐标1)
public uint dwPositionY1;//(Y坐标1)
public uint dwPositionX2;//(X坐标2)
public uint dwPositionY2;//(Y坐标2)
public uint dwBacklightLevel;/*0x0-0xF*/
public uint dwDigitalNoiseRemoveEnable; /*数字去噪:0 dsibale 1 enable*/
public uint dwDigitalNoiseRemoveLevel;/*0x0-0xF*/
public uint dwMirror; /* 镜像:0 Left;1 Right,;2 Up;3Down */
public uint dwDigitalZoom;/*数字缩放:0 dsibale 1 enable*/
public uint dwDeadPixelDetect;/*坏点检测,0 dsibale 1 enable*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.U4)]
public uint[] dwRes;
}
public const int NET_DVR_GET_CCDPARAMCFG = 1067; //IPC获取CCD参数配置
public const int NET_DVR_SET_CCDPARAMCFG = 1068; //IPC设置CCD参数配置
//图像增强仪
//图像增强去燥区域配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct tagIMAGEREGION
{
public uint dwSize;//总的结构长度
public ushort wImageRegionTopLeftX;/* 图像增强去燥的左上x坐标 */
public ushort wImageRegionTopLeftY;/* 图像增强去燥的左上y坐标 */
public ushort wImageRegionWidth;/* 图像增强去燥区域的宽 */
public ushort wImageRegionHeight;/*图像增强去燥区域的高*/
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
//图像增强、去噪级别及稳定性使能配置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct tagIMAGESUBPARAM
{
public NET_DVR_SCHEDTIME struImageStatusTime;//图像状态时间段
public byte byImageEnhancementLevel;//图像增强的级别,0-7,0表示关闭
public byte byImageDenoiseLevel;//图像去噪的级别,0-7,0表示关闭
public byte byImageStableEnable;//图像稳定性使能,0表示关闭,1表示打开
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 9, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
public const int NET_DVR_GET_IMAGEREGION = 1062; //图像增强仪图像增强去燥区域获取
public const int NET_DVR_SET_IMAGEREGION = 1063; //图像增强仪图像增强去燥区域获取
public const int NET_DVR_GET_IMAGEPARAM = 1064; // 图像增强仪图像参数(去噪、增强级别,稳定性使能)获取
public const int NET_DVR_SET_IMAGEPARAM = 1065; // 图像增强仪图像参数(去噪、增强级别,稳定性使能)设置
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct tagIMAGEPARAM
{
public uint dwSize;
//图像增强时间段参数配置,周日开始
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DAYS * MAX_TIMESEGMENT, ArraySubType = UnmanagedType.Struct)]
public tagIMAGESUBPARAM[] struImageParamSched;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
public byte[] byRes;
}
#region 取流模块相关结构与接口
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct PLAY_INFO
{
public int iUserID; //注册用户ID
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 20)]
public string strDeviceIP;
public int iDevicePort;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string strDevAdmin;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
public string strDevPsd;
public int iChannel; //播放通道号(从0开始)
public int iLinkMode; //最高位(31)为0表示主码流,为1表示子码流,0-30位表示码流连接方式: 0:TCP方式,1:UDP方式,2:多播方式,3 - RTP方式,4-音视频分开(TCP)
public bool bUseMedia; //是否启用流媒体
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 20)]
public string strMediaIP; //流媒体IP地址
public int iMediaPort; //流媒体端口号
}
[DllImport("GetStream.dll")]
public static extern bool CLIENT_SDK_Init();
[DllImport("GetStream.dll")]
public static extern bool CLIENT_SDK_UnInit();
[DllImport("GetStream.dll")]
public static extern int CLIENT_SDK_GetStream(PLAY_INFO lpPlayInfo); //
[DllImport("GetStream.dll")]
public static extern bool CLIENT_SetRealDataCallBack(int iRealHandle, SETREALDATACALLBACK fRealDataCallBack, uint lUser); //
[DllImport("GetStream.dll")]
public static extern bool CLIENT_SDK_StopStream(int iRealHandle);
[DllImport("GetStream.dll")]
public static extern bool CLIENT_SDK_GetVideoEffect(int iRealHandle, ref int iBrightValue, ref int iContrastValue, ref int iSaturationValue, ref int iHueValue);
[DllImport("GetStream.dll")]
public static extern bool CLIENT_SDK_SetVideoEffect(int iRealHandle, int iBrightValue, int iContrastValue, int iSaturationValue, int iHueValue);
[DllImport("GetStream.dll")]
public static extern bool CLIENT_SDK_MakeKeyFrame(int iRealHandle);
#endregion
#region VOD点播放库
public const int WM_NETERROR = 0x0400 + 102; //网络异常消息
public const int WM_STREAMEND = 0x0400 + 103; //文件播放结束
public const int FILE_HEAD = 0; //文件头
public const int VIDEO_I_FRAME = 1; //视频I帧
public const int VIDEO_B_FRAME = 2; //视频B帧
public const int VIDEO_P_FRAME = 3; //视频P帧
public const int VIDEO_BP_FRAME = 4; //视频BP帧
public const int VIDEO_BBP_FRAME = 5; //视频B帧B帧P帧
public const int AUDIO_PACKET = 10; //音频包
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct BLOCKTIME
{
public ushort wYear;
public byte bMonth;
public byte bDay;
public byte bHour;
public byte bMinute;
public byte bSecond;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct VODSEARCHPARAM
{
public IntPtr sessionHandle; //[in]VOD客户端句柄
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 50)]
public string dvrIP; // [in]DVR的网络地址
public uint dvrPort; // [in]DVR的端口地址
public uint channelNum; // [in]DVR的通道号
public BLOCKTIME startTime; // [in]查询的开始时间
public BLOCKTIME stopTime; // [in]查询的结束时间
public bool bUseIPServer; // [in]是否使用IPServer
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 128)]
public string SerialNumber; // [in]设备的序列号
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct SECTIONLIST
{
public BLOCKTIME startTime;
public BLOCKTIME stopTime;
public byte byRecType;
public IntPtr pNext;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct VODOPENPARAM
{
public IntPtr sessionHandle; //[in]VOD客户端句柄
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 50)]
public string dvrIP; // [in]DVR的网络地址
public uint dvrPort; // [in]DVR的端口地址
public uint channelNum; // [in]DVR的通道号
public BLOCKTIME startTime; // [in]查询的开始时间
public BLOCKTIME stopTime; // [in]查询的结束时间
public uint uiUser;
public bool bUseIPServer; // [in]是否使用IPServer
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 128)]
public string SerialNumber; // [in]设备的序列号
public VodStreamFrameData streamFrameData;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct CONNPARAM
{
public uint uiUser;
public ErrorCallback errorCB;
}
// 异常回调函数
public delegate void ErrorCallback(System.IntPtr hSession, uint dwUser, int lErrorType);
//帧数据回调函数
public delegate void VodStreamFrameData(System.IntPtr hStream, uint dwUser, int lFrameType, System.IntPtr pBuffer, uint dwSize);
//模块初始化
[DllImport("PdCssVodClient.dll")]
public static extern bool VODServerConnect(string strServerIp, uint uiServerPort, ref IntPtr hSession, ref CONNPARAM struConn, IntPtr hWnd);
//模块销毁
[DllImport("PdCssVodClient.dll")]
public static extern bool VODServerDisconnect(IntPtr hSession);
[DllImport("PdCssVodClient.dll")]
public static extern bool VODStreamSearch(IntPtr pSearchParam, ref IntPtr pSecList);
[DllImport("PdCssVodClient.dll")]
public static extern bool VODDeleteSectionList(IntPtr pSecList);
// 根据ID、时间段打开流获取流句柄
[DllImport("PdCssVodClient.dll")]
public static extern bool VODOpenStream(IntPtr pOpenParam, ref IntPtr phStream);
[DllImport("PdCssVodClient.dll")]
public static extern bool VODCloseStream(IntPtr hStream);
//根据ID、时间段打开批量下载
[DllImport("PdCssVodClient.dll")]
public static extern bool VODOpenDownloadStream(ref VODOPENPARAM struVodParam, ref IntPtr phStream);
[DllImport("PdCssVodClient.dll")]
public static extern bool VODCloseDownloadStream(IntPtr hStream);
// 开始流解析,发送数据帧
[DllImport("PdCssVodClient.dll")]
public static extern bool VODStartStreamData(IntPtr phStream);
[DllImport("PdCssVodClient.dll")]
public static extern bool VODPauseStreamData(IntPtr hStream, bool bPause);
[DllImport("PdCssVodClient.dll")]
public static extern bool VODStopStreamData(IntPtr hStream);
// 根据时间定位
[DllImport("PdCssVodClient.dll")]
public static extern bool VODSeekStreamData(IntPtr hStream, IntPtr pStartTime);
// 根据时间定位
[DllImport("PdCssVodClient.dll")]
public static extern bool VODSetStreamSpeed(IntPtr hStream, int iSpeed);
// 根据时间定位
[DllImport("PdCssVodClient.dll")]
public static extern bool VODGetStreamCurrentTime(IntPtr hStream, ref BLOCKTIME pCurrentTime);
#endregion
#region 帧分析库
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct PACKET_INFO
{
public int nPacketType; // packet type
// 0: file head
// 1: video I frame
// 2: video B frame
// 3: video P frame
// 10: audio frame
// 11: private frame only for PS
// [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)]
public IntPtr pPacketBuffer;
public uint dwPacketSize;
public int nYear;
public int nMonth;
public int nDay;
public int nHour;
public int nMinute;
public int nSecond;
public uint dwTimeStamp;
}
/******************************************************************************
* function:get a empty port number
* parameters:
* return: 0 - 499 : empty port number
* -1 : server is full
* comment:
******************************************************************************/
[DllImport("AnalyzeData.dll")]
public static extern int AnalyzeDataGetSafeHandle();
/******************************************************************************
* function:open standard stream data for analyzing
* parameters:lHandle - working port number
* pHeader - pointer to file header or info header
* return:TRUE or FALSE
* comment:
******************************************************************************/
[DllImport("AnalyzeData.dll")]
public static extern bool AnalyzeDataOpenStreamEx(int iHandle, byte[] pFileHead);
/******************************************************************************
* function:close analyzing
* parameters:lHandle - working port number
* return:
* comment:
******************************************************************************/
[DllImport("AnalyzeData.dll")]
public static extern bool AnalyzeDataClose(int iHandle);
/******************************************************************************
* function:input stream data
* parameters:lHandle - working port number
* pBuffer - data pointer
* dwBuffersize - data size
* return:TRUE or FALSE
* comment:
******************************************************************************/
[DllImport("AnalyzeData.dll")]
public static extern bool AnalyzeDataInputData(int iHandle, IntPtr pBuffer, uint uiSize); //byte []
/******************************************************************************
* function:get analyzed packet
* parameters:lHandle - working port number
* pPacketInfo - returned structure
* return:-1 : error
* 0 : succeed
* 1 : failed
* 2 : file end (only in file mode)
* comment:
******************************************************************************/
[DllImport("AnalyzeData.dll")]
public static extern int AnalyzeDataGetPacket(int iHandle, ref PACKET_INFO pPacketInfo); //要把pPacketInfo转换成PACKET_INFO结构
/******************************************************************************
* function:get remain data from input buffer
* parameters:lHandle - working port number
* pBuf - pointer to the mem which stored remain data
* dwSize - size of remain data
* return: TRUE or FALSE
* comment:
******************************************************************************/
[DllImport("AnalyzeData.dll")]
public static extern bool AnalyzeDataGetTail(int iHandle, ref IntPtr pBuffer, ref uint uiSize);
[DllImport("AnalyzeData.dll")]
public static extern uint AnalyzeDataGetLastError(int iHandle);
#endregion
#region 录像库
public const int DATASTREAM_HEAD = 0; //数据头
public const int DATASTREAM_BITBLOCK = 1; //字节数据
public const int DATASTREAM_KEYFRAME = 2; //关键帧数据
public const int DATASTREAM_NORMALFRAME = 3; //非关键帧数据
public const int MESSAGEVALUE_DISKFULL = 0x01;
public const int MESSAGEVALUE_SWITCHDISK = 0x02;
public const int MESSAGEVALUE_CREATEFILE = 0x03;
public const int MESSAGEVALUE_DELETEFILE = 0x04;
public const int MESSAGEVALUE_SWITCHFILE = 0x05;
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct STOREINFO
{
public int iMaxChannels;
public int iDiskGroup;
public int iStreamType;
public bool bAnalyze;
public bool bCycWrite;
public uint uiFileSize;
public CALLBACKFUN_MESSAGE funCallback;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct CREATEFILE_INFO
{
public int iHandle;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 128)]
public string strCameraid;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 128)]
public string strFileName;
public BLOCKTIME tFileCreateTime;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct CLOSEFILE_INFO
{
public int iHandle;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 128)]
public string strCameraid;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 128)]
public string strFileName;
public BLOCKTIME tFileSwitchTime;
}
public delegate int CALLBACKFUN_MESSAGE(int iMessageType, System.IntPtr pBuf, int iBufLen);
[DllImport("RecordDLL.dll")]
public static extern int Initialize(STOREINFO struStoreInfo);
[DllImport("RecordDLL.dll")]
public static extern int Release();
[DllImport("RecordDLL.dll")]
public static extern int OpenChannelRecord(string strCameraid, IntPtr pHead, uint dwHeadLength);
[DllImport("RecordDLL.dll")]
public static extern bool CloseChannelRecord(int iRecordHandle);
[DllImport("RecordDLL.dll")]
public static extern int GetData(int iHandle, int iDataType, IntPtr pBuf, uint uiSize);
#endregion
}
}