新手上路
- 积分
- 42
- 金钱
- 42
- 注册时间
- 2020-11-15
- 在线时间
- 11 小时
|
发表于 2021-4-8 22:42:54
|
显示全部楼层
我尝试了用sprintf,画了个键盘输入号码来命名,但是录出来名字不是我键入的字符串,请原子哥帮我看看,球球了
char *pname=0;
u8 inputlen; //输入长度
char inputstr[18];
memset(inputstr,0,18); //全部清零
inputlen=0; //输入长度为0
while(inputlen<18)
{
delay_ms(10);
key=py_get_keynum12(70,290);
if(key)
{
if(key==10)
{
inputstr[inputlen]='X';//输入字符
if(inputlen<18)inputlen++;
}
else if(key==11)
{
inputstr[inputlen]=0;//输入字符
if(inputlen<18)inputlen++;
}
else if(key==12)//删除
{
if(inputlen)inputlen--;
inputstr[inputlen]='\0';//添加结束符
}
else
{
inputstr[inputlen]=key;//输入字符
if(inputlen<19)inputlen++;
}
}
while(f_opendir(&recdir,"0:/RECORDER"))//打开录音文件夹
{
Show_Str(30,230,240,16,"RECORDER文件夹错误!",16,0);
delay_ms(200);
LCD_Fill(30,230,240,246,WHITE); //清除显示
delay_ms(200);
f_mkdir("0:/RECORDER"); //创建该目录
}
i2srecbuf1=mymalloc(SRAMIN,I2S_RX_DMA_BUF_SIZE);//I2S录音内存1申请
i2srecbuf2=mymalloc(SRAMIN,I2S_RX_DMA_BUF_SIZE);//I2S录音内存2申请
f_rec=(FIL *)mymalloc(SRAMIN,sizeof(FIL)); //开辟FIL字节的内存区域
wavhead=(__WaveHeader*)mymalloc(SRAMIN,sizeof(__WaveHeader));//开辟__WaveHeader字节的内存区域
pname=mymalloc(SRAMIN,66); //申请30个字节内存,类似"0:RECORDER/REC00001.wav"
if(!i2srecbuf1||!i2srecbuf2||!f_rec||!wavhead||!pname)rval=1; if(rval==0)
{
recoder_enter_rec_mode(); //进入录音模式,此时耳机可以听到咪头采集到的音频
pname[0]=0;
ai_load_picfile("0:/PICTURE/暂停.jpg",200,70,48,48,1);//显示图片
sprintf(pname,"0:RECORDER/%d.wav",inputstr);//得到新的名字
Show_Str(180,120,lcddev.width,16,"录制:",16,0);
recoder_wav_init(wavhead); //初始化wav数据
res=f_open(f_rec,(const TCHAR*)pname, FA_CREATE_ALWAYS | FA_WRITE);
if(res) //文件创建失败
{
rec_sta=0; //创建文件失败,不能录音
rval=0XFE; //提示是否存在SD卡
}else
{
res=f_write(f_rec,(const void*)wavhead,sizeof(__WaveHeader),&bw);//写入头数据
recoder_msg_show(0,0);//显示时间码率
rec_sta|=0X80; //开始录音
}
}
|
|