自己想写个Win32的DLL 想把68013的部分API封装一下
接收数据代码如下:
LONG Zy_Receive( BYTE CanNum,pZY_CAN_FRAME pRecvFrm,ULONG FrmNum,int WaitTime/*WaitTime待扩展*/ )//FrmNum:ZY_CAN_FRAME数组大小
{
BYTE epnum;
LONG inlen = 512;
//PUCHAR indata;
//UCHAR indata[512];
BYTE recvfrmnum = 0;
if(CAN0 == CanNum)
epnum = 3;
//EP6
else if(CAN1 == CanNum)
epnum = 4;
//EP8
else
return -1;
InEndpt = USBDevice->EndPoints[3];
InEndpt->XferData(indata,inlen);
if( 0 == (inlen%13) )
{
recvfrmnum = inlen/13;
for( int i = 0; i < recvfrmnum; i++ )
{
pRecvFrm->caninfo = indata[i*13];
pRecvFrm->id1 = indata[i*13+1];
pRecvFrm->id2 = indata[i*13+2];
pRecvFrm->id3 = indata[i*13+3];
pRecvFrm->id4 = indata[i*13+4];
for( int k = 0; k <= 7; k++ )
{
pRecvFrm->candata[k] = indata[i*13+5+k];
}
pRecvFrm++;
//不知道速率快了有没有影响 张勇的就有影响
}
return recvfrmnum;
}
else
{
return -1;
//返回-1说明出错
}
}
上位机MFC通过点击一次按钮实现单次接收
代码如下:
void CZyVCDllTestDlg::OnButton2()
{
// TODO: Add your control notification handler code here
ZY_CAN_FRAME testfrm;
ULONG a;
a = Zy_Receive( 0,&testfrm,1/*WaitTime待扩展*/ );
testfrm.id4 = 0x66;
}
现在出现的错误如下:
在DLL中采用UCHAR indata[512];定义indataMFC没有问题 但采用PUCHAR indata;时候当运行完a = Zy_Receive( 0,&testfrm,1/*WaitTime待扩展*/ );后会出现蓝屏 求教 在DLL中不能PUCHAR这样定义嘛? |