天嵌 ARM开发社区

 找回密码
 注册
查看: 92387|回复: 544

TQ2440 录音机程序源码

  [复制链接]
TQ-lkp 发表于 2012-2-20 10:37:48 | 显示全部楼层 |阅读模式
本帖最后由 非也 于 2013-3-27 17:41 编辑

   为了感谢大家一直以来对天嵌科技的支持和鼓励,公司决定陆续放出TQ2440,TQ6410 PDA的源码,希望大家一如既往的支持天嵌,天嵌的发展离不开广大的朋友!
    本次开放的是录放音程序,代码有不对之处希望大家多多指正,谢谢。

    为了营造和谐的论坛氛围,以后所有资料下载均需要金钱。想获取金钱请积极回答其他朋友的问题,大家发贴时尽量使用悬赏帖,多劳多得,不劳不得!


游客,如果您要查看本帖隐藏内容请回复


    我们一直在努力做的更好!请大家回复后下载,感谢您对天嵌科技的支持!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 2 +16 收起 理由
yeager + 8
请叫我天蓬元 + 8

查看全部评分

haa14618 发表于 2012-2-20 15:15:58 | 显示全部楼层
太感谢了,赶紧来学习!!
haa14618 发表于 2012-2-20 19:14:32 | 显示全部楼层
版主,请问椅一下
这程式录下来的档案能在电脑上播放吗?
我自己照你所发表的程式码
简化发现还是不能在电脑上播放
不过倒是没有播放时会延迟的现象了
附上程式码,请版主帮我分析一下,谢谢
  1. //录音---------------------------------------
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <unistd.h>
  5. #include <fcntl.h>
  6. #include <errno.h>
  7. #include <sys/ioctl.h>
  8. #include <linux/soundcard.h>/*for OSS style sound programing */
  9. #define FMT8BITS AFMT_U8 /*unsigned 8 bits(for almost PC) */
  10. #define FMT16BITS AFMT_S16_LE /*signed 16 bits,little endian */
  11. #define FMT8K    8000 /*default sampling rate */
  12. #define FMT11K   11025 /*11,22,44,48 are three pop rate */
  13. #define FMT22K   22050
  14. #define FMT44K   44100
  15. #define FMT48K  48000
  16. #define MONO     1
  17. #define STEREO   2
  18. #define DFT_SND_DEV  "/dev/dsp"
  19. #define DFT_SND_FMT  FMT16BITS
  20. #define DFT_SND_SPD  FMT44K
  21. #define DFT_SND_CHN  STEREO
  22. #define BUFF_SIZE  100 /*buffer size:512 Bytes */

  23. /************** function implementation **************/

  24. unsigned int snd_fmt = DFT_SND_FMT; /*sound format,bits */
  25. unsigned int snd_chn = DFT_SND_CHN; /*sound channel number */
  26. unsigned int snd_spd = DFT_SND_SPD; /*sound speed,frequency */
  27. unsigned char buff[BUFF_SIZE]; /*sound buffer */

  28. //---------------------------------------------------------------------------

  29. int main(void)
  30. {
  31.         int dev_fd; /*sound device descriptor */
  32.         int file_fd; /*sound data file descrit */

  33.         ssize_t nRD;
  34.        
  35.         if ((dev_fd = open(DFT_SND_DEV, O_RDONLY)) < 0)
  36.                 {
  37.                         printf("open dev error !");
  38.                         return (-1);
  39.                 }
  40.                
  41.         system("rm -f *.wav");       
  42.         printf("kill *.wav\n");
  43.         if ((file_fd = open("/sound.wav", O_CREAT | O_WRONLY)) < 0)
  44.                 {
  45.                         printf("open file error !\n");
  46.                         return (-1);
  47.                 }
  48.                
  49.         int ioctl_val;
  50.         /* set bit format */
  51.         ioctl_val = snd_fmt;
  52.         if (ioctl(dev_fd, SNDCTL_DSP_SETFMT, &ioctl_val) == -1)
  53.         {
  54.                 printf("Set fmt error !\n");
  55.                 return (-1);
  56.         }
  57.         /*set channel */
  58.         ioctl_val = snd_chn;
  59.         if ((ioctl(dev_fd, SNDCTL_DSP_CHANNELS, &ioctl_val)) == -1)
  60.         {
  61.                 printf("set channel error !\n");
  62.                 return (-1);
  63.         }
  64.         /*set speed */
  65.         ioctl_val = snd_spd;
  66.         if (ioctl(dev_fd, SNDCTL_DSP_SPEED, &ioctl_val) == -1)
  67.         {
  68.                 printf("set speed error !\n");
  69.                 return (-1);
  70.         }
  71.        
  72.         while (1)
  73.         {
  74.                 if ((nRD = read(dev_fd, buff, BUFF_SIZE)) < 0)
  75.                 {
  76.                         printf("read sound device failed");
  77.                         return (-3);
  78.                 }
  79.                
  80.                  write(file_fd, buff, nRD);
  81.         }
  82.        
  83.         Close(dev_fd);
  84.         Close(file_fd);
  85.         return 0;
  86. }

  87. //播放----------------------------------
  88. #include <stdio.h>
  89. #include <stdlib.h>
  90. #include <unistd.h>
  91. #include <fcntl.h>
  92. #include <errno.h>
  93. #include <sys/ioctl.h>
  94. #include <linux/soundcard.h>/*for OSS style sound programing */
  95. #define FMT8BITS AFMT_U8 /*unsigned 8 bits(for almost PC) */
  96. #define FMT16BITS AFMT_S16_LE /*signed 16 bits,little endian */
  97. #define FMT8K    8000 /*default sampling rate */
  98. #define FMT11K   11025 /*11,22,44,48 are three pop rate */
  99. #define FMT22K   22050
  100. #define FMT44K   44100
  101. #define FMT48K  48000
  102. #define MONO     1
  103. #define STEREO   2
  104. #define DFT_SND_DEV  "/dev/dsp"
  105. #define DFT_SND_FMT  FMT16BITS
  106. #define DFT_SND_SPD  FMT44K
  107. #define DFT_SND_CHN  STEREO
  108. #define BUFF_SIZE  100 /*buffer size:512 Bytes */

  109. /************** function implementation **************/

  110. unsigned int snd_fmt = DFT_SND_FMT; /*sound format,bits */
  111. unsigned int snd_chn = DFT_SND_CHN; /*sound channel number */
  112. unsigned int snd_spd = DFT_SND_SPD; /*sound speed,frequency */
  113. unsigned char buff[BUFF_SIZE]; /*sound buffer */

  114. //---------------------------------------------------------------------------

  115. int main(void)
  116. {
  117.         int dev_fd; /*sound device descriptor */
  118.         int file_fd; /*sound data file descrit */
  119.         ssize_t nRD; /*bytes readin */
  120.         ssize_t nWR; /*bytes write out */
  121.        
  122.         if ((dev_fd = open(DFT_SND_DEV, O_WRONLY)) < 0)
  123.                 {
  124.                         printf("open dev error !\n");
  125.                         return (-1);
  126.                 }
  127.                

  128.         if ((file_fd = open("/sound.wav",  O_RDONLY)) < 0)
  129.                 {
  130.                         printf("open file error !\n");
  131.                         return (-1);
  132.                 }
  133.                
  134.         int ioctl_val;
  135.         /* set bit format */
  136.         ioctl_val = snd_fmt;
  137.         if (ioctl(dev_fd, SNDCTL_DSP_SETFMT, &ioctl_val) == -1)
  138.         {
  139.                 printf("set fmt error !\n");
  140.                 return (-1);
  141.         }
  142.         /*set channel */
  143.         ioctl_val = snd_chn;
  144.         if ((ioctl(dev_fd, SNDCTL_DSP_CHANNELS, &ioctl_val)) == -1)
  145.         {
  146.                 printf("set channel error !\n");
  147.                 return (-1);
  148.         }
  149.         /*set speed */
  150.         ioctl_val = snd_spd;
  151.         if (ioctl(dev_fd, SNDCTL_DSP_SPEED, &ioctl_val) == -1)
  152.         {
  153.                 printf("set speed error !\n");
  154.                 return (-1);
  155.         }
  156.        
  157.         while (1)
  158.         {
  159.                 nRD = 0L; /*read amount from sound device */
  160.                 if ((nRD = read(file_fd, buff, BUFF_SIZE)) < 0)
  161.                 {
  162.                         printf("read sound data file failed\n");
  163.                         return (-4);
  164.                 }
  165.                 else if (nRD == 0)
  166.                 {
  167.                         break;
  168.                 }
  169.                 nWR = nRD;
  170.                 write(dev_fd, buff, nWR);
  171.         }
  172.        
  173. //        Close(dev_fd);
  174. //        Close(file_fd);
  175.         return 0;
  176. }
复制代码
zhengxi 发表于 2012-2-20 19:30:53 | 显示全部楼层
TQ2440 录放音机程序源码
guozhenzhen260 发表于 2012-2-20 19:54:58 | 显示全部楼层
谢谢,下下来看看先
qianguozheng 发表于 2012-2-20 20:19:26 | 显示全部楼层
生活好开心啊
ys1115 发表于 2012-2-20 22:21:21 | 显示全部楼层
不错的代码,顶
zaneabc 发表于 2012-2-21 10:37:54 | 显示全部楼层
我是喜欢研究的,下载来看看哈。
 楼主| TQ-lkp 发表于 2012-2-21 10:53:21 | 显示全部楼层
haa14618 发表于 2012-2-20 19:14
版主,请问椅一下
这程式录下来的档案能在电脑上播放吗?
我自己照你所发表的程式码

应该是可以的,只是设备名可能不同
你先自己录,再自己播才行
haa14618 发表于 2012-2-21 13:58:11 | 显示全部楼层
TQ-lkp 发表于 2012-2-21 10:53
应该是可以的,只是设备名可能不同
你先自己录,再自己播才行

我录下来后,可以在板子上播放
可是档案抓到电脑,就播不出来了
不知道是哪里出了问题???
 楼主| TQ-lkp 发表于 2012-2-21 15:42:27 | 显示全部楼层
haa14618 发表于 2012-2-21 13:58
我录下来后,可以在板子上播放
可是档案抓到电脑,就播不出来了
不知道是哪里出了问题???

没有控制音频设备的权限吧
2321600 发表于 2012-2-21 16:23:41 | 显示全部楼层
xiexie............
不言DXH 发表于 2012-2-21 18:03:41 | 显示全部楼层
顶起~~~·:)
zbb564833642 发表于 2012-2-21 18:28:49 | 显示全部楼层
支持  天嵌   。。。。支持开源 。。。
hdwmh2011 发表于 2012-2-21 20:01:30 | 显示全部楼层
谢谢分享。。。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-29 14:02 , Processed in 1.062500 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表