DeviceDriverInterface_C.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #pragma once
  2. #define EXPORT_CLASS_C extern "C" _declspec(dllexport)
  3. const int driver_handle_error = -1;
  4. const int driver_cmd_ok = 0;
  5. const int driver_cmd_error_serial_open = 1;
  6. const int driver_cmd_error_pcie_open = 2;
  7. const int driver_cmd_error_serial_send_error = 3;
  8. const int driver_cmd_error_rf_freq = 4;
  9. const int driver_cmd_error_rf_band = 5;
  10. const int driver_cmd_error_rf_mgc = 6;
  11. const int driver_cmd_error_ad_para_error = 7;
  12. const int driver_cmd_error_file_open = 8;
  13. const int driver_cmd_error_ad_dds = 9;
  14. const int driver_cmd_error_ad_clock = 10;
  15. const int driver_cmd_error_ad_data = 11;
  16. const int driver_cmd_error_ad_sample_mode = 12;
  17. const int driver_cmd_error_ad_trigger = 13;
  18. const int driver_cmd_error_ad_clock_src = 14;
  19. const int driver_cmd_error_ad_ddc_exttime = 15;
  20. const int driver_cmd_error_ad_ddr = 16;
  21. const int driver_cmd_error_ad_sample_freq = 17;
  22. const int driver_cmd_error_softddc = 18;
  23. const int driver_cmd_error_store = 19;
  24. const int driver_cmd_error_rf_wmode = 20;
  25. const int driver_cmd_error_filepath = 21;
  26. #define DEVICEHANDLE void*
  27. /************************************************************************/
  28. /* 创建底层实例 */
  29. /************************************************************************/
  30. EXPORT_CLASS_C DEVICEHANDLE c_createdevice();
  31. EXPORT_CLASS_C int c_deletedevice(DEVICEHANDLE*);
  32. /*内存数据回调函数
  33. 当回调模式为连续模式:申请通道后此回调将一直有数据,内部尽量只能做拷贝
  34. 当回调模式为固定包模式:申请通道后此回调将按照包大小回调
  35. @:pdata*:数据
  36. @:len:数据长度
  37. @:ch:通道号
  38. @:datetype: 数据类型 0-adc 1-ddc
  39. */
  40. typedef void(__stdcall * func_CpcDevice_c)(char* pdata, unsigned long long len, int ch, int datetype);
  41. /*存储完成通知的回调函数
  42. @:ch:通道号
  43. @:chOk:通道完成
  44. @:AllOK:全部完成
  45. */
  46. typedef void(__stdcall * func_StoreOK_c)(int ch, bool chOk, bool AllOK);
  47. EXPORT_CLASS_C int openDev_c(DEVICEHANDLE device) ;
  48. EXPORT_CLASS_C int closeDev_c(DEVICEHANDLE device) ;//关闭设备
  49. EXPORT_CLASS_C int initDev_c(DEVICEHANDLE device) ;//初始化
  50. #pragma pack(push, 1)
  51. //采集配置参数
  52. typedef struct st_ad_para_c {
  53. unsigned long long udds; //dds频率 -无需配置
  54. unsigned long long uSampleFreq;//采样率
  55. unsigned long long uDDCFreq;//窄带中心频率 DDC有效-偏移频率
  56. unsigned char uSampleMode; //采样类型 0-ADC 1-DDC
  57. unsigned char uTrigMode;//触发模式 0-内触发 1-外触发
  58. unsigned char uClockSrc;//时钟源 0-内时钟 1-外时钟 2-外参考
  59. unsigned char ures;//保留
  60. unsigned int uExtTimes;//抽取倍数
  61. }st_ad_para_c;
  62. //回调配置参数
  63. typedef struct st_cb_para_c {
  64. unsigned int ucallbackMode = 0 ; //回调类型 0-连续数据回调(包间连续) 1-固定包回调(包间不连续)
  65. unsigned int cb_once_len = 1048576; //[固定包回调时有效]一次回调的大小 建议大于1048576
  66. bool autoRestart = true; //[固定包回调时有效] 0-回调一次后停止,1-回调一次后重新配置采集参数并启动采集
  67. }st_cb_para_c;
  68. #pragma pack(pop)
  69. /************************************************************************/
  70. /* 存储参数控制 */
  71. /************************************************************************/
  72. /*设置存储参数
  73. @storeMode:存储模式 0-即采即停 1-大小采集 2-时长采集
  74. @maxSec:采集时长 秒
  75. @maxPoint:采集大小 采样的样点数
  76. @divPoint:分段时长/大小 0-不分段; >0 分段的秒/样点数
  77. @storeEnable 是否需要存储功能 0-不需要 1-需要
  78. */
  79. EXPORT_CLASS_C int setStorePara(DEVICEHANDLE device,int storeMode, unsigned long long maxSec, unsigned long long maxPoint, unsigned long long divPoint,bool storeEnable = true);
  80. /*设置存储路径
  81. @pathName:存储模式 0-即采即停 1-大小采集 2-时长采集
  82. @ch:通道号
  83. */
  84. EXPORT_CLASS_C int setFilePath(DEVICEHANDLE device,char* str,int strLen, int ch);
  85. /*设置存储回调
  86. @func_StoreOK_c:用于通知存储情况的回调函数
  87. @ch:通道号
  88. */
  89. EXPORT_CLASS_C int setStoreCallBack(DEVICEHANDLE device, func_StoreOK_c);
  90. /************************************************************************/
  91. /* 采集参数控制 */
  92. /************************************************************************/
  93. /*控制采集参数
  94. @blSend:true-代表发送所有命令,false-只发送更改了的命令
  95. */
  96. EXPORT_CLASS_C int control_ad_para_c(DEVICEHANDLE device,st_ad_para_c para, bool blSend = false) ;
  97. /*GPS设置
  98. @bl:true-启动,false-关闭
  99. */
  100. EXPORT_CLASS_C int control_ad_enable_fpga_c(DEVICEHANDLE device, bool bl = false) ;
  101. /*申请数据
  102. @iChannel:通道号 按位与0-关闭通道,1-开启通道
  103. 如:1-表示申请1通道关闭2、3、4通道,3-表示申请1、2通道关闭3、4通道...
  104. 在配置参数后,若有通道需要存储,调用此函数启动存储,存储完成后返回。
  105. */
  106. EXPORT_CLASS_C int apply_datas_c(DEVICEHANDLE device, const unsigned int iChannels) ;
  107. /*设置数据回调函数(此处设置的回调函数内,请避免耗时操作,否则会掉数)
  108. @f:函数地址
  109. */
  110. EXPORT_CLASS_C int setcallback_c(DEVICEHANDLE device, st_cb_para_c para, func_CpcDevice_c f) ;
  111. /*获取设备状态
  112. @ty:0-固件版本,1-设备温度,2-设备电压
  113. @ p:用于获取信息的字符串buffer
  114. @sz:buffer最大长度
  115. */
  116. EXPORT_CLASS_C int get_status_info_c(DEVICEHANDLE device, unsigned char ty, char* p, unsigned int sz) ;
  117. /*射频内外时钟切换(暂时无用)
  118. @_inner:0-内参考,1-外参考
  119. */
  120. EXPORT_CLASS_C int set_rf_inner_clock_c(DEVICEHANDLE device, int _inner) ;
  121. /*设置GPS数据长度
  122. @len:数据,每包的包体长度(不含包头)
  123. */
  124. EXPORT_CLASS_C int set_gps_pack_len_c(DEVICEHANDLE device, int len) ;