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);
这是上位开发界面对应的写数据按钮的程序,看不懂啊,急需帮助,最好是给出注释啊!多谢
{
// 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);
这是上位开发界面对应的写数据按钮的程序,看不懂啊,急需帮助,最好是给出注释啊!多谢
解决方案 »
- VC++中画图
- winsock中ip问题
- 如何得到网关?
- 开启了一个新线程,不断查询某端口,如何停止这个线程啊?
- 如何在SDI窗口中移动光标时在下面的状态栏上动态显示光标的行和列的坐标??
- 如何产生一个非模态对话框?
- 在Windows XP下,VC中如何通过并口读写93C66 EEPROM?谢谢!
- 妹妹需要各位老大救命,急!急!!!
- 在win2k system中,怎样写入一个系统事件,并且在系统工具中的事件查看器中能看到(不需要重新启动)?
- 菜鸟提问,请问现在windows应用程序主要使用什么编写的
- cvCaptureFromFile函数在在Debug下可以正常运行,但是在Release下却报错“Access Violation”.
- vs2008编译器发现不了opengl语法错误
主要就是两个函数
bOpenDriver这应该是个函数指针一类的。其实就是CreateFile
DeviceIoControl 这个是应用层与驱动通信用的函数。楼主可以google一下。
先做个简单的发送接收程序,一个发送按钮,一个接收按钮,两个编辑框就行了,把你要写的数据直接赋值给你的sendbuffer就行了··先从简单的发送接收开始
先做个简单的发送接收程序,一个发送按钮,一个接收按钮,两个编辑框就行了,把你要写的数据直接赋值给你的sendbuffer就行了··先从简单的发送接收开始 想问下1楼,如果想给FPGA发送个请求命令(随便发什么数都好),是仿照上面那写操作编程序么?需要改驱动程序么?应该把我想发的数给哪个变量? FPGA写地址又改选哪个?应该说的是同一个板子吧。 就是那板子连个USB线 连到电脑,上位机是VC程序(买板子的时候有个例子程序),板子是FPGA编的,usb驱动就是ezusb.sys 请问根据你的固件程序中的PID,VID稍作修改你的驱动程序是什么意思?另外你有Q么?
想问下1楼,如果想给FPGA发送个请求命令(随便发什么数都好),是仿照上面那写操作编程序么?需要改驱动程序么?应该把我想发的数给哪个变量? FPGA写地址又改选哪个?应该说的是同一个板子吧。 就是那板子连个USB线 连到电脑,上位机是VC程序(买板子的时候有个例子程序),板子是FPGA编的,usb驱动就是ezusb.sys 请问根据你的固件程序中的PID,VID稍作修改你的驱动程序是什么意思?另外你有Q么?Q:546633490
注明CSDN