void CCYDEMODlg::OnWrtest(LONG nTestCount) 
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
PUCHAR outBuffer = NULL;
BULK_TRANSFER_CONTROL   outBulkControl;//inBulkControl,

HANDLE hOutDevice=NULL;
char output[256],i; LONG mTotal=512; //写的字节数,一个数据包大小为512字节 UpdateData(TRUE); if (!OnSetOutDir())
    {
free(outBuffer);
CloseHandle(hOutDevice);
return ;
    } if (bOpenDriver (&hOutDevice, m_strName.GetBuffer(m_strName.GetLength())) != TRUE)
    {
CloseHandle(hOutDevice);
return ;
    } outBuffer=(PUCHAR) malloc(mTotal);
srand(mTotal);
for(LONG i=0;i<mTotal;i++)
outBuffer[i]=(BYTE)i; BOOLEAN status=FALSE;
ULONG BytesReturned=0;
outBulkControl.pipeNum=0;//端点选择EP2 if (nTestCount>2) nTestCount=2; //FPGA开的FIFO只有1024×16BITS for( i=0;i<nTestCount;i++)//多次循环测试
{

status =  DeviceIoControl (hOutDevice,
IOCTL_EZUSB_BULK_WRITE,
(PVOID)&outBulkControl,
sizeof(BULK_TRANSFER_CONTROL),
outBuffer,//输出缓冲区
mTotal,//字节数
&BytesReturned,//返回字节数据
NULL);  
}
if(status==TRUE)
{
sprintf( output,"测试成功!\r\n共发送%03d字节", mTotal );
m_strTestDisplay=output;
//如果FPGA中的读地址和写地址一样,还进行读操作,程序会死掉!
if (m_FifoWrRdNum>=1000)
{
m_FifoWrRdNum = 1000;
}
else
{
m_FifoWrRdNum++;
}
}
else
{
m_strTestDisplay+="测试失败!\r\n";
}

//关闭设备
free(outBuffer);
CloseHandle(hOutDevice);
UpdateData(FALSE);
这是上位开发界面对应的写数据按钮的程序,看不懂啊,急需帮助,最好是给出注释啊!多谢

解决方案 »

  1.   

    代码没什么。
    主要就是两个函数
    bOpenDriver这应该是个函数指针一类的。其实就是CreateFile
    DeviceIoControl 这个是应用层与驱动通信用的函数。楼主可以google一下。
      

  2.   

    想问下1楼,如果想给FPGA发送个请求命令(随便发什么数都好),是仿照上面那写操作编程序么?需要改驱动程序么?应该把我想发的数给哪个变量? FPGA写地址又改选哪个?
      

  3.   

    想问下1楼,如果想给FPGA发送个请求命令(随便发什么数都好),是仿照上面那写操作编程序么?需要改驱动程序么?应该把我想发的数给哪个变量? FPGA写地址又改选哪个?我用的是CY7C68013A128脚的USB芯片,看你用什么开发包,里面都包含着厂家给的驱动程序,我用的是ezusb.sys文件。根据你的固件程序中的PID,VID稍作修改你的驱动程序,之后就不用改驱动了。上位机我用的是VC编写的,头文件包含"ezusbsys.h" "devioctl.h" 然后对你的USB进行读写操作就行了。
    先做个简单的发送接收程序,一个发送按钮,一个接收按钮,两个编辑框就行了,把你要写的数据直接赋值给你的sendbuffer就行了··先从简单的发送接收开始 
      

  4.   

    我用的是CY7C68013A128脚的USB芯片,看你用什么开发包,里面都包含着厂家给的驱动程序,我用的是ezusb.sys文件。根据你的固件程序中的PID,VID稍作修改你的驱动程序,之后就不用改驱动了。上位机我用的是VC编写的,头文件包含"ezusbsys.h" "devioctl.h" 然后对你的USB进行读写操作就行了。
    先做个简单的发送接收程序,一个发送按钮,一个接收按钮,两个编辑框就行了,把你要写的数据直接赋值给你的sendbuffer就行了··先从简单的发送接收开始 想问下1楼,如果想给FPGA发送个请求命令(随便发什么数都好),是仿照上面那写操作编程序么?需要改驱动程序么?应该把我想发的数给哪个变量? FPGA写地址又改选哪个?应该说的是同一个板子吧。 就是那板子连个USB线 连到电脑,上位机是VC程序(买板子的时候有个例子程序),板子是FPGA编的,usb驱动就是ezusb.sys   请问根据你的固件程序中的PID,VID稍作修改你的驱动程序是什么意思?另外你有Q么?
      

  5.   


    想问下1楼,如果想给FPGA发送个请求命令(随便发什么数都好),是仿照上面那写操作编程序么?需要改驱动程序么?应该把我想发的数给哪个变量? FPGA写地址又改选哪个?应该说的是同一个板子吧。 就是那板子连个USB线 连到电脑,上位机是VC程序(买板子的时候有个例子程序),板子是FPGA编的,usb驱动就是ezusb.sys   请问根据你的固件程序中的PID,VID稍作修改你的驱动程序是什么意思?另外你有Q么?Q:546633490
    注明CSDN