Hi, 我完全没有接触过USB的东西,所以问题有点门外汉。请见谅。
今天刚看完CYAPI的REFERENCE
自己写了一点代码,尝试简单的写入和读取一些数据
- //创建ccyusbdevice实例
- CCyUSBDevice *USBDevice = new CCyUSBDevice(NULL);
- //取两个bulk端口
- CCyBulkEndPoint *bulkIn = NULL;
- CCyBulkEndPoint *bulkOut = NULL;
- int index1=0, index2=0;
- for(int i=0; i<endpointNum; i++)
- {
- bool isIn = USBDevice->EndPoints[i]->bIn;
- bool isBulk = (USBDevice->EndPoints[i]->Attributes==2);
- if(isBulk&&isIn)
- {
- bulkIn = (CCyBulkEndPoint *)USBDevice->EndPoints[i];
- index1 = i;
- }
- if(isBulk&&!isIn)
- {
- bulkOut = (CCyBulkEndPoint *)USBDevice->EndPoints[i];
- index2 = i;
- }
- }
- ////创建假数据
- LONG len = 512;
- unsigned char data1[512]={0};
- for(int i =0;i<len;i++)
- {
- data1[i]=1;
- }
-
- bool writeDone = bulkOut->XferData(data1, len);
- if(writeDone)
- std::cout<<"write "<<len<<" bytes successfully"<<std::endl;
- else
- std::cout<<"write failed !!!!!"<<std::endl;
- unsigned char data2[512]={0};
- bool readDone = bulkIn->XferData(data2, len);
- if(readDone)
- std::cout<<"read successfully"<<std::endl;
- else
- std::cout<<"read failed !!!!!"<<std::endl;
- for(int i=0;i<len;i++)
- {
- std::cout<<data2[i]<<" ";
- }
bulkout的操作是成功的。
bulkin就不行了。
ps:bulkout写入多次之后也会false。
pss:bulkout成功之后,用官方的ezusb-interface,bulk trans去读数据,并读不到。
psss:官方的ezusb-interface也经常能写入不能读取。
|