看看有没有高手指点 ezusb->cyusb

yingbinchina 2010-01-19 06:12:22
bool ReadData(int count,unsigned char *buf)
{

bool Success ;
BULK_TRANSFER_CONTROL BR;
VENDOR_OR_CLASS_REQUEST_CONTROL VR;
unsigned long nBytes;
int bc,bout;
unsigned char* inbuf=buf;

if (hUsbDevice != INVALID_HANDLE_VALUE )
{
VR.direction = 0; // (0=host to device, 1=device to host)
VR.requestType = 2;
VR.recepient = 0;
VR.request = VX_GPIFREAD;
VR.requestTypeReservedBits = 0;
VR.value = *((unsigned short*)(&count));
VR.index = *(((unsigned short*)(&count))+1); //SETUPDAT[5:4]

Success = DeviceIoControl (hUsbDevice,
IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST,
&VR,
sizeof(VENDOR_OR_CLASS_REQUEST_CONTROL),
NULL,
0,
&nBytes,
NULL);

BR.pipeNum = 1;
bout=count*2;
while (bout){
if(bout>0x8000)bc=0x8000;
else bc=bout;

Success = DeviceIoControl (hUsbDevice,
IOCTL_EZUSB_BULK_READ,
&BR,
sizeof(BULK_TRANSFER_CONTROL),
inbuf,
bc,
&nBytes,
NULL);
if(bc>nBytes)bc=nBytes;
bout-=bc;
inbuf+=bc;
}

}

return Success;
}

上边是以前的程序,由于要用cyusb,我把它改成了下边的样子:
bool ReadData(int count,unsigned char *buf)
{
bool Success ;
//BULK_TRANSFER_CONTROL BR;
//VENDOR_OR_CLASS_REQUEST_CONTROL VR;

long bc;
int bout;
unsigned char* inbuf=buf;
// PUCHAR outbuf = new UCHAR[count];
// ZeroMemory(outbuf,count);

//PUCHAR inbuf = new UCHAR[count];
//ZeroMemory(inbuf,count);
//inbuf = buf;

OVERLAPPED inOvLap;//,outOvLap;
//outOvLap.hEvent = CreateEvent(NULL,false,false,"CYUSB_OUT");
inOvLap.hEvent = CreateEvent(NULL,false,false,"CYUSB_IN");

if (hUsbDevice != INVALID_HANDLE_VALUE )
{
// VR.direction = 0; // (0=host to device, 1=device to host)
// VR.requestType = 2;
// VR.recepient = 0;
// VR.request = VX_GPIFREAD;
// VR.requestTypeReservedBits = 0;
// VR.value = *((unsigned short*)(&count));
/*
Success = DeviceIoControl (hUsbDevice,
IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST,
&VR,
sizeof(VENDOR_OR_CLASS_REQUEST_CONTROL),
NULL,
0,
&nBytes,
NULL);
*/
// BR.pipeNum = 1;

ept->Direction = DIR_TO_DEVICE;
ept->ReqType = REQ_VENDOR;
ept->Target = TGT_DEVICE;
ept->ReqCode = VX_GPIFREAD;
ept->Value = *((unsigned short*)(&count));
ept->Index = *(((unsigned short*)(&count))+1); //SETUPDAT[5:4]

//PUCHAR readbuf = new char[2];
//Success = ept->Read(readbuf,2);
Success = ept->Write(NULL,0);
ept->Address = 0x01;

bout=count*2;
while (bout)
{
if(bout>0x8000) bc=0x8000;
else bc=bout;
/*
Success = DeviceIoControl (hUsbDevice,
IOCTL_EZUSB_BULK_READ,
&BR,
sizeof(BULK_TRANSFER_CONTROL),
inbuf,
bc,
&nBytes,
NULL);
*/
UCHAR *inContext = USBDevice->BulkInEndPt->BeginDataXfer(inbuf,bc,&inOvLap);
//UCHAR *outContext = USBDevice->BulkOutEndPt->BeginDataXfer(outbuf,bc,&outOvLap);

//USBDevice->BulkOutEndPt->WaitForXfer(&outOvLap,100);
USBDevice->BulkInEndPt->WaitForXfer(&inOvLap,100);

//Success = USBDevice->BulkOutEndPt->FinishDataXfer(outbuf,bc,&outOvLap,outContext);
Success = USBDevice->BulkInEndPt->FinishDataXfer(inbuf,bc,&inOvLap,inContext);

//if(bc>nBytes)bc=nBytes;
bout-=bc;
inbuf+=bc;
}
//CloseHandle(outOvLap.hEvent);
CloseHandle(inOvLap.hEvent);
}
return Success;
}

可就是卡死在这里,请指教。
...全文
256 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingbinchina 2010-01-26
  • 打赏
  • 举报
回复

这从usb设备中读不到数据,老返回false,是为什么呢?
yingbinchina 2010-01-22
  • 打赏
  • 举报
回复

仍在研究中。。。
kyzf 2010-01-19
  • 打赏
  • 举报
回复
帮顶下。
内容概要:本文研究了一种基于遗传算法的新型异构分布式系统任务调度算法,旨在解决异构计算环境中任务分配与调度的复杂优化问题。通过Matlab代码实现该算法,充分利用遗传算法强大的全局搜索能力和鲁棒性,对任务执行时间、资源利用率、系统负载均衡等关键性能指标进行综合优化,有效提升分布式系统的整体运行效率与稳定性。研究详细阐述了算法的整体架构设计、染色体编码策略、适应度函数构造、选择机制以及交叉与变异等遗传操作的实现细节,并通过大量仿真实验验证了所提出算法相较于传统调度方法在收敛速度、解的质量和调度性能方面的显著优越性。; 适合人群:具备一定编程基础和优化算法理论知识,从事分布式计算、高性能计算、云计算资源调度或智能优化算法研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于高性能计算、云计算、边缘计算等异构计算平台中的任务调度优化,提升资源利用效率;②为研究人员提供遗传算法在复杂组合优化问题中应用的完整实现案例,深化对智能优化算法设计原理与仿真实践的理解; 阅读建议:建议读者结合提供的Matlab代码深入研读,重点理解适应度函数的设计逻辑与遗传算子的参数调优策略,并可通过更换不同的任务集和系统模型来测试算法的泛化能力与鲁棒性。
参考李林凤等(2025)一文关于农村劳动力人均受教育年限指标的构建与计算方法,整理了中国31个省份总体、分性别的农村人均受教育年限数据,具体计算方法如下: 农村劳动力人均受教育年限 = (农村未上过学人数 × 1+小学学历人数 × 6+初中学历人数 × 9+高中和中专学历人数 ×12+大专及以上学历人数 × 16)/农村6岁及以上总人口 相关数据:各地区、分性别人均受教育年限数据 一、数据介绍 数据名称:中国各省农村人均受教育年限 数据范围:全国31个省份 时间范围:2006-2024年 样本数量:590条 数据来源:《中国人口和就业统计年鉴》、《中国劳动统计年鉴》 二、数据指标 年份 省份 省份代码 农村人均受教育年限 男性-农村人均受教育年限 女性-农村人均受教育年限 6岁及以上人口 6岁及以上人口_男 6岁及以上人口_女 未上过学人口 未上过学人口_男 未上过学人口_女 小学人口 小学人口_男 小学人口_女 初中人口 初中人口_男 初中人口_女 高中人口 高中人口_男 高中人口_女 大专及以上人口 大专及以上人口_男 大专及以上人口_女 三、参考文献 [1]李林凤,刘杨,杨亦民.种业创新驱动农村产业融合的作用机制与空间分异效应[J].广东财经大学学报,2025,40(6):97-109. [2]徐小阳,李洁,金丽馥.普惠金融对农村教育贫困的纾解效应[J].中国农村经济,2020,(9):41-64.

21,620

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧