在调试的时候一共只能传64个字节的数据,但是要求是传输300个字节。
unsigned char SetSourceDataArray() { u8 i = 0, j = 0; if( OutReport[0] == 0x01 ) { OutReport[0] = 0x00; ////////////////////////////第一帧//////////////////////////////////////// //帧头0x00 0x01 0x02 0x01 for( i = 0; i < 3; i++ ) { InReport[i] = i; } InReport[3] = 1;//这个表示原始数据中的第一帧60个字节 //第一帧的60个数据 for( i = 4, j = 0; i < 64; i++, j++) { InReport[i] = SourceDataArrayA[j]; } return 1;//格式化后马上返回1表示USB可以发送数据了 } else if( OutReport[0] == 0x02 ) { OutReport[0] = 0x00; /////////////////////////////第二帧/////////////////////////////////////// //帧头0x00 0x01 0x02 0x02 for( i = 0; i < 3; i++ ) { InReport[i] = i; } InReport[3] = 2;//这个表示原始数据中的第二帧60个字节 //第二帧的60个数据 for( i = 4, j = 60; i < 64; i++, j++ ) { InReport[i] = SourceDataArrayA[j]; } return 1;//格式化后马上返回1表示USB可以发送数据了 } else if( OutReport[0] == 0x03 ) { OutReport[0] = 0x00; //////////////////////////////第三帧////////////////////////////////////// //帧头0x00 0x01 0x02 0x03 for( i = 0; i < 3; i++ ) { InReport[i] = i; } InReport[3] = 3;//这个表示原始数据中的第二帧60个字节 //第二帧的60个数据 for( i = 4, j = 120; i < 44; i++, j++ ) { InReport[i] = SourceDataArrayA[j];//SourceDataArrayA中40个数据 } for( i = 44, j = 0; i < 64; i++, j++) { InReport[i] = SourceDataArrayB[j];//SourceDataArrayB中20个数据 } return 1; } else if( OutReport[0] == 0x04 ) { OutReport[0] = 0x00; //////////////////////////////第四帧/////////////////////////////////////////////// //帧头0x00 0x01 0x02 0x04 for( i = 0; i < 3; i++ ) { InReport[i] = i; } InReport[3] = 4;//这个表示原始数据中的第二帧60个字节 //第二帧的60个数据 for( i = 4, j = 20; i < 64; i++, j++ ) { InReport[i] = SourceDataArrayB[j]; } return 1; } else if( OutReport[0] == 0x05 ) { OutReport[0] = 0x00; //////////////////////////////第五帧/////////////////////////////////////////////// //帧头0x00 0x01 0x02 0x05 for( i = 0; i < 3; i++ ) { InReport[i] = i; } InReport[3] = 5;//这个表示原始数据中的第二帧60个字节 //第二帧的60个数据 for( i = 4, j = 80; i < 64; i++, j++ ) { InReport[i] = SourceDataArrayB[j]; } return 1; } else return 0; }
上面这段代码就是为了将300个字节分割开来。
下面这部分是主函数:
u8 xyData, DiffData, SourceData;//初始化三种数据的地址写的数据 xyData = 0;//读取坐标值时往0x07111写0 DiffData = 1;//读差值,往0711写1 SourceData = 1; //////////////////////////////////////////////////////// InitBorad();//整版初始化 //////////////////////////////////////////////////////// while(1) { /*检测到设备则开始*/ Start_Gt818(); GT818_Init(); GT818_CheckOk(); GT818_WriteBytes(ConfigData, 0x06a2, 106 );//写配置信息 //GT818_WriteBytes(&DiffData, 0x0711, 1); //读取差值数据之前先往0x0711写1 GT818_WriteBytes(&SourceData, 0x0711, 1); //读取差值数据之前先往0x0711写0 while(1) { if( int_flag == 1 ) { if( SourceDataFlag == 0 ) { Start_Gt818(); GT818_ReadBytes( SourceDataArrayA, 0x0880, 160 );/*前面160个*/ GT818_ReadBytes( SourceDataArrayB, 0x09c0, 140 );/*后面140个*/ End_Gt818(); delay_x_ms( 20 ); SourceDataFlag = 1;/*表示300个原始数据全部接收 完毕通知USB可以发送了*/ } } } } }
先写到这,后面继续: