你好!我上位机使用Delphi编写的,现在已经能实现从上位机向下传数据,但是从CH372向上传数据不正确,而且长度不对,数据长度是一个很大的数据,帮帮忙
下位机程序: CH375_WR_CMD_PORT( CMD_UNLOCK_USB ); CH375_WR_CMD_PORT( CMD_WR_USB_DATA3 ); // 向USB端点2的发送缓冲区写入数据块 CH375_WR_DAT_PORT(10); // 首先写入后续数据长度,回传刚接收到的数据长度 for ( i = 0; i < 10 ; i ++ ) CH375_WR_DAT_PORT( ibuffer[i] );
上位机程序: Function mUploadData( iBuffer:array of byte;iLength:cardinal ):cardinal; var mDemoReq:COMMAND_PACKET ; mLength:cardinal; begin mDemoReq.mCommandCode := DEF_CMD_CLEAR_UP; // 连续上传数据块之前进行同步,实际是让单片机清除上传缓冲区的已有内容 mDemoReq.mCommandCodeNot :=$FF-DEF_CMD_CLEAR_UP; mLength := CONST_CMD_LEN; // 命令包的长度 if ( CH375WriteData( mIndex,@mDemoReq , @mLength ) ) then // 通过CH375发送命令包,成功 begin mDemoReq.mCommandCode := DEF_CMD_UP_DATA; // 连续上传数据块 begin mLength := iLength; // 数据块的长度,一次上传不超过4096字节 if ( CH375ReadData( mIndex,@iBuffer, @mLength ) ) then begin mUploadData := mLength; end else MessageBox( frmCH372.Handle, 'CH375ReadData 上传数据失败', mCaptionInform, MB_OK + MB_ICONERROR ); end else MessageBox( frmCH372.Handle, 'CH375WriteData 发送命令失败,DEF_CMD_UP_DATA', mCaptionInform, MB_OK + MB_ICONERROR ); end else MessageBox( frmCH372.Handle, 'CH375WriteData 发送命令失败,DEF_CMD_CLEAR_UP', mCaptionInform, MB_OK + MB_ICONERROR ); mUploadData:= 0; End;