新手上路
- 积分
- 25
- 金钱
- 25
- 注册时间
- 2018-1-10
- 在线时间
- 13 小时
|
5金钱
我在LWIP TCP 服务端的情况下与电脑的服务器建立连接,希望能通过TCP发送VS1053采集的音频数据,但是发送出的数据高八位一直像地址一样的在增加,不是音频数据,但我不太清楚是什么。比如:23 01 8F 01 7E 01 6C 01 2A 02 12 02 6C 02 7B 03 9A 03 FF 03 ,监测发现通过w=VS_RD_Reg(SPI_HDAT1); 语句读出的值就是这样了,不知道是哪儿和这个读的语句冲突了吗?
建立连接和发送的程序就是下面这样,除此之外我还改了一个LWIP轮询时间为50ms,其他的就没改动,只是把LWIP RAW TCP CLIENT实验和录音机实验综合在一起了。
求做过的人帮忙看看,新手调了几天了一直都不行,确实找不出解决办法了
[mw_shl_code=c,true]void tcp_client_test(void)
{
struct tcp_pcb *tcppcb;
struct ip_addr rmtipaddr;
u8 *tbuf;
u8 key;
u8 res=0;
u16 t=0;
/////////////////////the recorder definitions///////
u8 rval=0;
u8 *recbuf;
u16 w;
u16 idx=0;
u16 send_cnt=0;
u8 rec_sta=0;
u8 timecnt=0;
u32 recsec=0;
u8 recagc=7;
int m=0;
u8 connect_flag=0;
////////////////////////////////////////////////////
printf("ip OK\r\n");
recbuf=mymalloc(SRAMIN,512);
if(recbuf==NULL){rval=1; printf("rval failed");}
tcppcb=tcp_new();
if(tcppcb)
{
IP4_ADDR(&rmtipaddr,lwipdev.remoteip[0],lwipdev.remoteip[1],lwipdev.remoteip[2],lwipdev.remoteip[3]);//
tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected);
}else res=1;
while(res==0)
{
lwip_periodic_handle();
lwip_pkt_handle();
delay_ms(2);
t++;
if(t==200)
{
if((tcp_client_flag&1<<5)==0) {
connect_flag=0;
tcp_client_connection_close(tcppcb,0);
tcppcb=tcp_new();
if(tcppcb)
{
tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected);
}
}else connect_flag=1;
t=0;
printf("rval=%d and flag=%d\r\n",rval,tcp_client_flag&1<<5);
LED0=!LED0;
}
if((rval==0)&&(connect_flag==1))
{
printf("record\r\n");
recoder_enter_rec_mode(1024*recagc);
while(VS_RD_Reg(SPI_HDAT1)>>8);
while(rval==0)
{
lwip_periodic_handle();
lwip_pkt_handle();
t++;
if(t==1000)
{
printf("t=%d\r\n",t);
if((tcp_client_flag&1<<5)==0)
{
connect_flag=0;
tcp_client_connection_close(tcppcb,0);
tcppcb=tcp_new();
if(tcppcb)
{
tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected);
}
}else connect_flag=1;
t=0;
//printf("rval=%d and flag=%d\r\n",rval,tcp_client_flag&1<<5);
LED0=!LED0;
}
LED0=!LED0;
rec_sta|=0X80; //开始录音
if(rec_sta==0X80)
{
w=VS_RD_Reg(SPI_HDAT1);
if((w>=256)&&(w<896))
{
idx=0;
while(idx<512)
{
w=VS_RD_Reg(SPI_HDAT0);
tcp_client_sendbuf[send_cnt++]=w&0XFF;
tcp_client_sendbuf[send_cnt++]=w>>8;
idx+=2;
}
if(send_cnt==1024)
{
send_cnt=0;
//tcp_client_flag|=1<<7;
tcp_write(tcppcb,tcp_client_sendbuf,1024,1);
tcp_output(tcppcb);
printf("%s",tcp_client_sendbuf);
}
}
}
}
}
}
tcp_client_connection_close(tcppcb,0);
myfree(SRAMIN,recbuf);
} [/mw_shl_code]
|
|