智能音乐打铃系统开发:(二)软件部分
一 整体方案
采用c语言实现,多进程架构,主进程检测子进程意外退出,退出话重启子进程 ,保证系统永远在线.完全采用web控制,可同时实现手电电脑操作,不用到机房也可以操作; 解码部分采用FFMPEG,以前有使用经验,支持的格式也多;播放部分采用ALSA,网上资料多,所选硬件平台支持;
二 WEB操作控制
为了实现操作的方便与直观性,采用WEB控制的方式,还有一点是如果用硬件键盘或屏幕操作成本肯定会高,个人开发者实现也太困难. web服务器网过网络搜索最终选择了civetweb,这个项目完全c语言开发,为嵌式应用程序所设计,和自己开发项目的语言相同,方便 集成 .web服务器实现两个功能,一是做静态文件服务器,二是做webAPI,api返回给浏览器json数据,数据呈现用js在客户端实现.对于JS自己倒不太熟悉,在边学边用中完成. 开发过程中发现如果C语言只做API服务器的话,开发web也还是比较简单的。
三 播放部分
虽然是主要功能,但缺相对是最容易的,FFMPEG解码已经用过,ALSA播放资料也多,只需要FFMPEG解码后的pcm数据丢给ALSA播放就可以了.个人开发者感觉软件简单,硬件难度太大。
四 定时部分
用一个线程检测 系统时间,到达播放时间时播放相应的音频文件就可以了.系统时钟用香橙派 zero2开发的时候,RTC模块添加后正好是RTC0,debian linux系统 也配置好了NTP服务,会自动网络对时,自动更新RTC。但更换香橙派 zero3后,系统内核版本也改变了,结果新添加的RTC模块变成了RTC1 ,RTC0是SOC自带的RTC,没有后备电池,停电不能走时。而系统好象默认用的是RTC0,这个问题有待解决。
本文之前发布在CSDN博客,个人博客开通后copy一份,丰富博客内容和保存记忆.