📄 newtest.c
字号:
#include <unistd.h>
#include <fcntl.h> // for O_RDWR,O_RDONLY,o_WRONLY
#include <sys/types.h>
#include <sys/msg.h>
#include <stdlib.h>
#define JDEBUG
#include "jdebug.h"
#include "msghdr.h"
//#define DSPFILE "/dev/dspHPI"
/* define buffer length */
#define HEXFILE "hex.hex"
#define NLEN 40000
#define GLEN 400000
#define NUM 48
#define ENG 55
char data[4][NLEN];
char buf[GLEN];
int count[4],ad[4];
int nread=0;
static int net=0;
int ctoi(char c);
int hpi(int j);
void store(int len,int n,int j,int* pcount);
int main()
{
int fdhex,fddsp,intial=2;
int i,nread,j,k;
int test;
char dspbuf[]={0x0F,0x00,0x11,0x11,0x01,0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99};
nread=0;
fdhex=open(HEXFILE,O_RDWR);
if(fdhex<0)
{
printf("cant open %s,pls check it.stop\n",HEXFILE);
exit(0);
}
test=read(fdhex,buf,sizeof(buf));
for(j=0;j<4;j++)
{
hpi(j);
//for(test=0;test<count[j];test++)
//printf("%x\n",data[j][test]);
//exit(0);
}
/*fddsp = open(DSPFILE,O_RDWR);
if (fddsp < 0)
{
printf("cant open %s,pls check it. stop\n",DSPFILE);
exit(0);
}*/
//intial=ioctl(fddsp,0xFF);
//printf("intial=%x\n",intial);
//sleep(5);
//sleep(30);
for(j=0;j<4;j++)
{
printf("!!!!!!!ad=%x,count=%x\n!!!!!!!!!",ad[j],count[j]);
//intial=ioctl(fddsp,0xDD,ad[j]);
//write(fddsp,data[j],count[j]);
}
//write(fddsp,data[1],1);
/*sleep(5);
intial=ioctl(fddsp,0xEE);
intial=ioctl(fddsp,0xAA);
printf("intial=%x\n",intial);
while(1)
{
printf("write\n");
if(getchar()=='a')
write(fddsp,dspbuf,sizeof(dspbuf));
//sleep(2);
}*/
/*for(k=0;k<20;k++)
{
write(fddsp,dspbuf,sizeof(dspbuf));
sleep(1);
}*/
//while(1);
}
int ctoi(char c)
{
if(c<'A')
c-=NUM;
else
c-=ENG;
return c;
}
int hpi(int j)
{
int n,size,pcount;
int head=1;
int lenl,lenh,len;
pcount=0;
for(n=nread;n<GLEN;n++)
{
if(buf[n]==':')
{
lenh=ctoi(buf[n+1]);
lenl=ctoi(buf[n+2]);
if(lenh==0&&lenl==0)
{
return 0;
}
else
{
len=lenl+(lenh<<4);
if(head)
{
head=0;
len=len-4;
ad[j]=(ctoi(buf[n+9])<<12)+(ctoi(buf[n+10])<<8)+(ctoi(buf[n+11])<<4)+(ctoi(buf[n+12]));
count[j]=(ctoi(buf[n+13])<<12)+(ctoi(buf[n+14])<<8)+(ctoi(buf[n+15])<<4)+(ctoi(buf[n+16]))+1;
count[j]=count[j]*2;
printf("ad=%x,count=%x\n",ad[j],count[j]);
size=0;
store(len,n+17,j,&pcount);
n=n+16+len*2;
size+=len;
if(size==count[j])
{
nread=n;
return 0;
}
}
else
{
store(len,n+9,j,&pcount);
n=n+8+len*2;
size+=len;
printf("size=%x\n",size);
if(size==count[j])
{
nread=n;
printf("nread=%d\n",nread);
return 0;
}
}
}
}
}
}
void store(int len,int n,int j,int* pcount)
{
int i,bytel,byteh,num;
for(i=0;i<len;i++)
{
byteh=ctoi(buf[n]);
bytel=ctoi(buf[n+1]);
num=bytel+(byteh<<4);
n=n+2;
if(net==0)
{
data[j][*pcount+1]=num;
net=1;
}
else
{
data[j][*pcount]=num;
*pcount=*pcount+2;
net=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -