求教!

我用以下一段程序,为什么无法上传大于70个字节的数据,上位机只能收到前64个字节的数据,为什么?求指点一下迷津? void main ( ) { unsigned char mReadBuf[100]; unsigned long i,mLength; mLength = 64;

printf( "\nCH375 DAQ Test Program V1.0,HJZ1234569,2009.8\n" ); printf( "*** Load DLL: CH375DLL.DLL \n" if ( LoadLibrary( "CH375DLL.DLL" ) == NULL ) return; printf( "*** CH375OpenDevice: 0# \n" ); if ( CH375OpenDevice( 0 ) == INVALID_HANDLE_VALUE ) return; CH375SetTimeout( 0, 5000, 5000 ); CH375SetBufUpload(0,1);

while(1) { Sleep(1000); if ( CH375ReadData( 0, mReadBuf, &mLength ) ) // 接收成功 { printf( "接受成功\n"); for( i=0; i< mLength; i++) printf( "%02XH ",mReadBuf[i]);

printf( "\n"); } else printf( "No Data OR CH375ReadData return error\n"); }

printf( "CH375CloseDevice: 0 \n" );

CH375CloseDevice( 0 );// 关闭CH375设备

getch();

}

如果你要上传70个字节的话,下位机要上传64+6个字节,下位机的端的大小是64字节,如果传超过64传输时分多包传 上位机,CH375ReadData缓冲区最大支持4096: mLength =70; CH375ReadData( 0, mReadBuf, &mLength ) 先把CH375SetBufUpload这句屏蔽掉。


试了一下,还是不行呀!

FPGA上传的70个字节,是先发送一个长度64给CH376,接着发送64个字节给CH376,然后PC把数据取走后CH376把中断信号INIT置低,接着再发送一个长度6给CH376,接着发送6个字节给CH376,然后等待PC把数据取走,却发现PC没有把数据取到,因此,CH376迟迟不把中断信号INIT置低,因而也无法发送UNLOCK_USB命令! 这是为什么呢?难道是因为通信过程出错了吗?


问题已解决!非常感谢~~


只有登录才能回复,可以选择微信账号登录