在调试的时候一共只能传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可以发送了*/
}
}
}
}
}
先写到这,后面继续: