[求助] 关于QC灯箱控制

ludi875246077   2017-6-27 17:28 楼主
    本人新手,现在接受一个项目需要根据API开发文档来控制SPLQC这种设备,我看了很多次文档,在调用UsbCmdType1这个函数的参数上不是很确定,不知道具体要传什么参数给unsigned char*ptxData,看了开发文档中的command format这一栏还是搞不清楚,请各位大神阅读以下开发文档,只有11页不多,可否告诉小弟怎样使用UsbCmdType1这个函数实现发送命令给设备?谢谢了

回复评论 (13)

你这来寻找帮助的,还要收费,第一次遇到!
点赞  2017-6-27 18:12
为什么还要设置下载芯币
点赞  2017-6-27 21:40
不好意思,新人,不知道怎么设置就成这样了,我又重新发了贴https://bbs.eeworld.com.cn/thread-541426-1-1.html
点赞  2017-6-28 09:49
引用: ludi875246077 发表于 2017-6-28 09:49
不好意思,新人,不知道怎么设置就成这样了,我又重新发了贴https://bbs.eeworld.com.cn/thread-541426-1-1. ...

您好,为了保证问题得到好的解答,我们将重复的帖子删除了,您的那个附件要芯币已经调整了。
加油!在电子行业默默贡献自己的力量!:)
点赞  2017-6-28 09:56
引用: 29447945 发表于 2017-6-27 18:12
你这来寻找帮助的,还要收费,第一次遇到!

不好意思,第一次发,现在已经调整过来了
点赞  2017-6-28 09:58
引用: lyfly_away 发表于 2017-6-27 21:40
为什么还要设置下载芯币

不好意思,第一次发帖,因为这个项目很急
点赞  2017-6-28 09:59
bool UsbCmdType1(unsigned char* pTxData, int txDataLen,
unsigned char* pRxData, int& rxDataLen,
int timeOutMs = 1000);
这个函数就是接收或者发送数据的函数, pTxData,pRxData是接收或发送数据的地址,txDataLen,发送数据的长度,rxDataLen是接收到数据的长度;用法比如:你要发送100个数据:
unsigned char TxDatabuffer[200*1024];
unsigned char RxDatabuffer[200*1024];
unsigned char RxLen = 0;
UsbCmdType1(TxDatabuffer,TxLen,RxDatabuffer,&RxLen,1000);
点赞  2017-6-28 10:14
引用: 29447945 发表于 2017-6-28 10:14
bool UsbCmdType1(unsigned char* pTxData, int txDataLen,
unsigned char* pRxData, int& rxDataLen,
in ...

首先,谢谢你能够帮我解答,不过还有一个问题就是根据开发文档中的command format格式我不是很懂,比如上面写的, , , …….,在结合下面说的SPLQC command所说的宏定义,那怎样传参数到这个函数中?我现在这样写不知道对不对:UsbCmdType1("CMD_SET_LAMP_STATE, LAMP_SW_DL",100,RxDatabuffer,&RxLen,1000)?我的想法就是把"CMD_SET_LAMP_STATE,LAMP_SW_DL"这个命令赋值给TxDatabuffer【200*1024】这个变量,这个命令格式是不是不正确?  再次感谢
点赞  2017-6-28 11:11
引用: ludi875246077 发表于 2017-6-28 11:11
首先,谢谢你能够帮我解答,不过还有一个问题就是根据开发文档中的command format格式我不是很懂,比如上 ...
  1. #include <QCoreApplication>
  2. #include <QDebug>
  3. #include "Usb.h"
  4. #include <QString>

  5. #define CMD_GET_FW_INFO 0x7701
  6. #define CMD_GET_COM_BUF_SIZE 0x7811
  7. #define CMD_GET_INFO 0x7812
  8. #define CMD_SET_DIMMER_VOLT 0x7753
  9. #define CMD_GET_DIMMER_VOLT 0x7754
  10. #define CMD_GET_LAMP_STATE 0x77D0
  11. #define CMD_SET_LAMP_STATE 0x77D1
  12. #define CMD_SET_FL_LUX_VALUE 0x77D2
  13. #define CMD_GET_FL_LUX_VALUE 0x77D3
  14. #define CMD_GET_SENSOR_VALUES 0x77D8
  15. #define CMD_GET_TIME 0x77E4
  16. #define CMD_SET_TIME 0x77E5

  17. #define OK 0x3301
  18. #define ERROR_UNKNOWN_CMD 0x3302
  19. #define ERROR_NOT_ALL_READ 0x3303
  20. #define ERROR_TEMP_SENSOR 0x3304
  21. #define ERROR_PARAM_OUT_OF_RANGE 0x3305
  22. #define ERROR_DEVICE_NOT_AVAILABLE 0x3307
  23. #define ERROR_CMD_NOT_ALLOWED 0x3308
  24. #define ERROR_UNDEFINED 0x3319

  25. #define LAMP_SW_OFF 0x20      //OFF
  26. #define LAMP_SW_DL 0x10      // D65
  27. #define LAMP_SW_FL1 0x08     //CWF
  28. #define LAMP_SW_FL2 0x04     //TL84
  29. #define LAMP_SW_UV 0x02      //UV
  30. #define LAMP_SW_FL3 0x80     //U30
  31. #define LAMP_SW_HALO 0x40    //INC-A
  32. #define LAMP_SW_HZ 0x01      // Horizon

  33. #define FL_UV 2
  34. #define FL_123 1
  35. unsigned char* txdata;
  36. unsigned char* rxdata;
  37. int main(int argc, char *argv[])
  38. {
  39.     QCoreApplication a(argc, argv);
  40.     short DeviceAddress=0;
  41.     int status = 7;
  42.     //打开控制QC灯箱的USB连接
  43.     status = Open(DeviceAddress);
  44.     if(status == 0){
  45.         qDebug()<<QStringLiteral("打开QC灯箱失败!");
  46.     }
  47.     else
  48.         qDebug()<<QStringLiteral("打开QC灯箱成功!");

  49.     //对灯箱的光源进行控制操作
  50.     int datalen = 0;
  51.     txdata = new unsigned char[204800];
  52.     rxdata = new unsigned char[204800];
  53.     //16进制赋值给unsigned char*
  54.   /*  unsigned char * txdata=(unsigned char *)malloc(10);
  55.     memset(txdata,0x0,11);
  56.     unsigned char * datax=txdata;
  57.        *datax++='0';
  58.        *datax++='x';
  59.        *datax++='7';
  60.        *datax++='7';
  61.        *datax++='0';
  62.        *datax++='1';
  63.        qDebug()<<(char*)txdata;*/

  64.     //QString赋值给unsigned char*
  65.    QString  str = "CMD_SET_LAMP_STATE";
  66.     //QString  str = "CMD_GET_FW_INFO,"
  67.     txdata =(unsigned char*)qstrdup(str.toLocal8Bit().constData());
  68.     qDebug()<<(char*)txdata<<strlen((char*)txdata);   //输出unsigned char*数值
  69.     status = UsbCmdType1(txdata,strlen((char*)txdata),rxdata,datalen,1000);
  70.     qDebug()<<status;
  71.    // qDebug()<<(char*)rxdata<<strlen((char*)rxdata);


  72.     //关闭控制QC灯箱的USB连接
  73.     status = UsbClose();
  74.     if(status == 0){
  75.         qDebug()<<QStringLiteral("关闭QC灯箱失败!");
  76.     }
  77.     else
  78.         qDebug()<<QStringLiteral("关闭QC灯箱成功!");
  79.     delete txdata;
  80.     delete rxdata;
  81.     return a.exec();
  82. }
点赞  2017-6-28 11:24
引用: ludi875246077 发表于 2017-6-28 11:24
[code]#include
#include
#include "Usb.h"
#include

#define CMD_GET_FW_INFO ...

这个是我用Qt开发环境使用c++语言编写的简单的控制SPLQC灯箱的程序,现在就是三个步骤,第一,调用API库中的open函数打开设备,第二,就是我困恼的问题,怎样运用usbcmdtype1函数传送数据(最主要的是命令的格式怎样写),第三,就是调用UsbClose函数关闭设备!
点赞  2017-6-28 11:27
各位大神,你们有没有什么想法,度可以在这里讨论,在学习中进步
点赞  2017-6-28 17:38
现在主要困惑的地方就是如何传参数给usbcmdtype1(unsigned char* pTxData,。。。。)里面的pTxData这个参数,格式是什么?
点赞  2017-6-29 11:38
有没有人可以帮我
点赞  2017-7-4 09:34
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复