USBInterFace.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #ifndef _USBINTERFACE_H_
  2. #define _USBINTERFACE_H_
  3. #include <QString>
  4. #include <functional>
  5. #include <QLibrary>
  6. class USBInterface
  7. {
  8. /* 定义函数指针 */
  9. /* 设置产品编号,OSCA02是6 */
  10. using SpecifyDevIdx = void(*)(int idx);
  11. /* 打开设备,调用前需要先设置产品编号 */
  12. using DeviceOpen = unsigned long(*)();
  13. /* 打开指定ID的设备 */
  14. using DeviceOpenWithID = unsigned long(*)(int ID);
  15. /* 关闭设备 */
  16. using DeviceClose = unsigned long(*)();
  17. /* 开始采集数据,传入0x33开始采集 */
  18. using USBCtrlTransSimple = unsigned long(*)(int32_t Request);
  19. /* 示波器控制 */
  20. using USBCtrlTrans = unsigned char(*)(unsigned char Request, unsigned short Value, unsigned long outBufSize);
  21. /* 读取数据 */
  22. using BufferWR = unsigned char*(*)(int index);
  23. /* 设置缓冲区大小 */
  24. using SetInfo = void(*)(double dataNumPerPixar, double CurrentFreq, unsigned char ChannelMask, int ZrroUniInt, unsigned int bufferoffset, unsigned int HWbufferSize);
  25. /* 不知道清空什么 */
  26. using ClearBuffer = unsigned long(*)(unsigned char objA , unsigned char objB, unsigned int Num);
  27. /* 清空缓冲区遗留的数据 */
  28. using ResetPipe = void(*)();
  29. /* 将数据从示波器的SRAM拷贝到PC内存中 */
  30. using AiReadBulkData = void(*)(unsigned int SampleCount, unsigned int EventNum, unsigned int TimeOut, unsigned char* Buffer, unsigned char Flag, unsigned int First_PacketNum);
  31. /* 阻塞等待数据拷贝完成 */
  32. using EventCheck = unsigned long(*)(long Timeout);
  33. public:
  34. USBInterface();
  35. /* 加载动态库 */
  36. bool loadLib(const QString& libName);
  37. /* 指定设备编号 */
  38. void specifyDevId(int idx);
  39. /* 打开设备 */
  40. unsigned long devOpen();
  41. /* 打开设备,这个函数用于多个示波器级联时使用的,替代devOpen函数 */
  42. unsigned long devOpenWithID(int ID);
  43. /* 关闭设备 */
  44. unsigned long devClose();
  45. /* 开始采集数据命令 */
  46. unsigned long usbCtrlTransSimple(int32_t Request);
  47. /* 示波器控制命令 */
  48. unsigned char usbCtrlTrans(unsigned char Request, unsigned short Value);
  49. /* 获取缓冲区指针 */
  50. unsigned char* bufferWR(int index);
  51. /* 设置缓冲区的大小 */
  52. void setInfo( unsigned int HWbufferSize);
  53. /* 目前不知道清空什么 */
  54. unsigned long clearBuffer(unsigned char objA , unsigned char objB, unsigned int Num);
  55. /* 清空缓冲区遗留的数据 */
  56. void resetPipe();
  57. /* 将数据从示波器的SRAM拷贝到内存中 */
  58. void readBulkData(unsigned int SampleCount, unsigned int EventNum, unsigned int TimeOut, unsigned char* Buffer);
  59. /* 阻塞等待数据拷贝完成 */
  60. unsigned long eventCheck(long Timeout);
  61. private:
  62. QLibrary m_lib;
  63. SpecifyDevIdx m_specifyDevID = nullptr;
  64. DeviceOpen m_devOpen = nullptr;
  65. DeviceOpenWithID m_devOpenWithID = nullptr;
  66. DeviceClose m_devClose = nullptr;
  67. USBCtrlTransSimple m_usbCtrlTransSimple = nullptr;
  68. USBCtrlTrans m_usbCtrlTrans = nullptr;
  69. BufferWR m_bufferWR = nullptr;
  70. SetInfo m_setInfo = nullptr;
  71. ClearBuffer m_clearBuffer = nullptr;
  72. ResetPipe m_resetPipe = nullptr;
  73. AiReadBulkData m_aiReadBulkData = nullptr;
  74. EventCheck m_eventCheck = nullptr;
  75. };
  76. #endif /* USBINTERFACE_H_ */