【车载HIFI播放器开发】使用golang播放WAV,MP3,FLAC,OGG等音频

这里使用Mp3库为:

https://github.com/faiface/beep

这个库可解析播放的文件有WAV, MP3, OGG和FLAC。

参考官方的Wiki文档可以写出如下测试文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package musicplayer
 
import (
	"fmt"
	"github.com/faiface/beep/mp3"
	"github.com/faiface/beep/speaker"
	"log"
	"os"
	"time"
)
 
type MusicEntry struct {
	Id         string   //编号
	Name       string   //歌名
	Artist     string   //作者
	Source     string   //位置
	Type       string   //类型
	Filestream *os.File // 文件流
}
 
func (me *MusicEntry) Open() {
	var err error
	me.Filestream, err = os.Open(me.Source)
	if err != nil {
		log.Fatal(err)
	}
}
 
func (me *MusicEntry) Play() {
	streamer, format, err := mp3.Decode(me.Filestream)
	if err != nil {
		log.Fatal(err)
	}
	defer streamer.Close()
 
	speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/10))
	fmt.Println("music length :", streamer.Len())
	speaker.Play(streamer)
	select {}
}

上面的Play函数中考虑到speaker.Play(streamer)是异步调用,所以使用了select进行阻塞。如果要实现停止操作,则使用for语名再配合select对通信信号进行监听就好了。

485全双工和半双工的区别(全双工通信)

单工通信、半双工通信和全双工通信之间有什么区别?

简单地说:

单工通信只有a到b,比如“广播”

半双工通信可以从a到b,从b到a,但不能同时进行。 例如,收发器

全双工通信可以从a到b、从b到a,可以同时进行。 例如,[电话]

RS485通讯接口定义图详解

简介

RS485是一个定义平衡数字多点系统中的驱动器和接收器的电气特性的标准,该标准由电信行业协会和电子工业联盟定义。

使用该标准的数字通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号。

STC8系列单片机IAP更新方法

单片机芯片

芯片:STC8A8K64S4A12

关于此芯片的重要说明:

2022-2-24到2022-3-21期间生产的此型号 程序空间为63K, EEPROM 固定为1K, EEPROM大小无法修改 其它时间生产的此型号的程序空间和EEPROM参数都是正确的 即: 程序空间为63.5K, EEPROM默认为0.5K, EEPROM大小可修改

STC单片机在线ISP IAP OTA

ISP

在线ISP,主要依靠IAP_CONTR寄存器,使用IAP_CONTR=0x60触发单片机进入ISP模式,而不需要冷启动,减少调试时的麻烦,可配合自定义串口命令,可使用官方提供的ISP软件,或者利用官方提供的Upgrade.exe自行开发软件。

基于51单片机的测温报警系统

一、电路原理图

基于单片机的数据采集系统方案,该方案根据热敏电阻随温度变化而变化的特性,采用串联分压电路。 单片机采集热敏电阻的电压,通过A/D转换将模拟量电压信号转换成数字量电压信号, 经过查表转换得到温度值,控制LCD实时显示温度值。

FatFs操作SD卡上的文件(SWM341芯片作为案例)

简单介绍FATFS

FatFS一般作为一个文件系统,存储介质支持USB,SD卡,NANDFlash等等, 这里主要介绍下如何对接SD卡使用。

实现的功能和效果

由于UI是采用LVGL来实现的,而且大面积用到了贴图和动画效果,占用的存储空间远远超过芯片的存储空间, 所以准备把资源部分单独以BIN格式的文件存放到sd卡上,sd卡的文件系统格式采用FAT32的,这样子程序和资源 就分离开了,程序直接存放到芯片的flash中,图片资源独立存放到sd卡上。