跳转到主要内容

通讯协议20241015

完整协议文档下载

下载附件:通讯协议_1015(1).xlsx

设备上电后与APP连接过程

数据顺序流程图

示例数据如下:

蓝牙UUID说明

指令通道

  • APP发送数据,蓝牙接收数据

    uuid: 00010203-0405-0607-0809-0A0B0C0D2B16

    属性:WRITE|WRITE_WITHOUT_RESPONSE

  • 蓝牙发送数据,APP接收数据

    uudi:00010203-0405-0607-0809-0A0B0C0D2B17

    属性:READ|NOTIFY

音频通道

  • 蓝牙发送音频,APP接收音频

    uuid:00010203-0405-0607-0809-0A0B0C0D2B18

    属性:READ|NOTIFY

文件通道

  • 蓝牙发送文件内容,APP接收文件内容

    uuid: 00010203-0405-0607-0809-0A0B0C0D2B22

    属性:READ|NOTIFY

设备属性

设备当前具备的属性有: 电量、时间、麦克风状态、固件版本号、音频蓝牙信息、录音模式、sd卡容量、文件列表、指示灯状态

由于历史原因,部分格式不遵守此格式,以实际情况为准。

属性一般都具备get方法,部分具备set方法。

由于历史原因,有部分协议,可能不完全遵守此格式,以excel文件的说明为准。

get方法数据格式

app发出数据示例:

{
  "method": "get",
  "id": "123",
  "ver": "1.0",
  "data":"battery"
}
  • method: "get"表示获取属性数据
  • id:每次发送指令时的id,都是唯一的。蓝牙返回的数据也有id,两者相同。
  • ver: 设备固件的版本号。
  • data:属性的key。battery表示电量。

设备返回数据示例:

{
    "method": "battery_reply",
    "id": "123",
    "ver": "1.0",
    "data":[
             {"battery":"100"}
           ],
    "error":[]
}
  • method: xxxx_reply,xxxx表示设属性的key。
  • id:每次发送指令时的id,都是唯一的。蓝牙返回的数据也有id,两者相同。
  • ver: 设备固件的版本号。
  • data:属性的key和value。battery表示电量。数组包含的多个属性值列表。
  • error: 无错误则为空数组。

set方法数据格式

app发出数据示例:

{
  "method": "set",
  "id": "456",
  "ver": "1.0",
  "data":{"mic_status":"open"}
}
  • method: "set"表示设置设备的属性参数。
  • id:每次发送指令时的id,都是唯一的。蓝牙返回的数据也有id,两者相同。
  • ver: 设备固件的版本号。
  • data:属性的key。mic_status表示设备麦克风的状态。"open"为开,"close"为关

设备返回数据示例:

{
    "method": "mic_status_reply",
    "id": "456",
    "ver": "1.0",
    "data":[
             {"mic_status":"success"}
           ],
    "error":[]
}
  • method: xxxx_reply,xxxx表示设属性的key。
  • id:每次发送指令时的id,都是唯一的。蓝牙返回的数据也有id,两者相同。
  • ver: 设备固件的版本号。
  • data:属性的key。mic_status表示设备麦克风的状态。"success"表示设置成功,有可能是"打开"成功,有可能是"关闭"成功。
  • error: 无错误则为空数组。

属性列表

name key value type get set
当前电量 batterbattery "open"返回值打开,"close"为关闭电量百分比 string
设置设备的时间 sync_time 年月日时分秒YYYYMMDDHHMM的格式,比如:"20230801113301" string x
获取设备的时间 cur_time 年月日时分秒的格式,比如:"20230801113301" string x
振动麦克风开关状态 mic_status "open"为打开,"close"为关闭 string
当前ibeacon序号 cur_ibeacon_id 比如:"6"表示序号为6 string x
固件版本号 sw_version 比如:"1.0"表示当前设备固件版本为1.0 stringx
音频蓝牙信息edr_ctkd比如: [{"edr_name":"Flash Note (BT)"},
 {"mac_addr":"12345678"},
{"connect_state":"connected"}],
"edr_name"为音频蓝牙名称,
"mac_addr"为音频蓝牙mac地址,
"connect_state"表示已经连接音频蓝牙的状态
list x
查询录音状态 rec_status 比如:"rec_start"表示录音开始,"rec_start"表示录音结束 string x
自动录音模式 rec_mode 比如:"rec_auto"表示自动录音,"rec_head"表示手动录音 string
查询SD卡剩余容量 sd_capacity 比如:"490"表示可用容量为490MB string x
查询录音指示灯状态 rec_led "open"为打开,"close"为关闭 string
录音模式 cur_rec_state "live"表示不是通话录音,其它为通话录音 string
文件是否自动上传 auto_update "open"为打开,"close"为关闭 string

设备服务

设备服务是指由设备提供的服务能力,比如,录音操作、音频列表查询,音频删除操作等。

设备服务都是由APP发起,设备进行返回执行结果的。

设备基础信息

app发出数据示例:

{
  "method": "get",
  "id": "123",
  "ver": "1.0",
  "data":"basic_info"
}
  • method: 固定为"get"。
  • id:每次发送指令时的id,都是唯一的。蓝牙返回的数据也有id,两者相同。
  • ver: 设备固件的版本号。
  • data:固定为"basic_info"。

设备返回结果数据示例:

{
  "method": "basic_info_reply",
  "id": "123",
  "ver": "1.0",
  "data":
    [
     {"sw_version":"1.0"},
     {"battery":"100"},
     {"rec_led":"open"},
     {"rec_mode":"rec_auto"},
     {"language":"EN"},
     {"sd_total":65},
     {"sd_capacity":"490"}
     {"usb_otg":"open"}
     {"total_capacity":"512"}
   ]
    "error":[]
}
  • method:固定为"basic_info_reply"
  • id:每次发送指令时的id,都是唯一的。蓝牙返回的数据也有id,两者相同。
  • ver: 设备固件的版本号。
  • error: 无错误则为空数组。
  • data:
    • sw_version: 固件版本号
    • battery: 电量
    • rec_led: led灯状态
    • rec_mode: 是否自动录音
    • language: 语言。支持中,英
    • sd_total: sd卡中音频数量
    • sd_capacity: 剩余容量MB
    • usb_otg: 是否打开usb功能。打开则可以通过usb读取sd卡中的音频。
    • total_capacity: 总容量

查询SD卡音频列表

按页获取音频列表,每页最多返回10个音频。

app发出数据示例:

获取第1页音频列表

{
  "method": "get",
  "id": "123",
  "ver": "1.0",
  "data":{"sd_list":1}
}
  • method: 固定为"get"。
  • id:每次发送指令时的id,都是唯一的。蓝牙返回的数据也有id,两者相同。
  • ver: 设备固件的版本号。
  • data:固定为{"sd_list":1}。1表示获取第1页的音频列表数据。

设备返回结果数据示例:

{
 "method":"sd_list_reply",
 "id":"123",
 "ver":"1.0",
 "data":[
  {"total":56}
  {"id":1,"size":512,"name":"320030003200330030003900300031003000390035003000310032002E006D0070003300"},
  {"id":2,"size":512,"name":"320030003200330030003900300031003000390035003000310033002E006D0070003300"},
  {"id":3,"size":512,"name":"320030003200330030003900300031003000390035003000310034002E006D0070003300"},
  {"id":4,"size":512,"name":"320030003200330030003900300031003000390035003000310035002E006D0070003300"},
  {"id":5,"size":512,""name":"320030003200330030003900300031003000390035003000310036002E006D0070003300"},
  {"id":6,"size":512,"name":"320030003200330030003900300031003000390035003000310037002E006D0070003300"},
  {"id":7,"size":512,"name":"320030003200330030003900300031003000390035003000310038002E006D0070003300"},
  {"id":8,"size":512,"name":"320030003200330030003900300031003000390035003000310039002E006D0070003300"},
  {"id":9,"size":512,"name":"320030003200330030003900300031003000390035003000320030002E006D0070003300"},
  {"id":10,"size":512,"name":"320030003200330030003900300031003000390035003000320031002E006D0070003300"},
"error":[]
}

每页最多10个数据,总页数据以此获取:(total/10+1)或0

  • method:固定为"basic_info_reply"
  • id:每次发送指令时的id,都是唯一的。蓝牙返回的数据也有id,两者相同。
  • ver: 设备固件的版本号。
  • error: 无错误则为空数组。
  • data:
    • id:为该文件在文件系统内部存储的序号
    • size:表示文件大小 单位为字节
    • name:为长文件名,utf8编码 比如:"320030003200330030003900300031003000390035003000310032002E006D0070003300" 表示:20230901095012.mp3 3200转码后为2,3000转码后为0,2E00转码后为.,6D00转码后为m, 7000转码后为p

获取音频蓝牙信息

按页获取SDK音频列表

,每页最多返回10个音频。

app发出数据示例:

|查询SD卡获取第1页音频列表|sd_list|比如:

{
  "method": "get",
  "id": "123",
  "ver": "1.0",
  "data":["edr_ctkd"
}
  • method: 固定为"get"。
  • id:每次发送指令时的id,都是唯一的。蓝牙返回的数据也有id,两者相同。
  • ver: 设备固件的版本号。
  • data:固定为"edr_ctkd"

设备返回结果数据示例:

{
    "total"method":1}
{ "edr_ctkd_reply", "id":1, "size"123", "ver":512,name:202307311421.mp3" "1.0", "data": [ {"edr_name":"Flash Note (BT)"}
, {"total"mac_addr":"ae92afd2616c"}, {"connect_state":"connected"} ], "error":[] }
  • method:固定为"basic_info_reply"
  • id:每次发送指令时的id,都是唯一的。蓝牙返回的数据也有id,两者相同。
  • ver: 设备固件的版本号。
  • error: 无错误则为空数组。
  • data:
    • edr_name:为音频蓝牙名称,
    • mac_addr:为音频蓝牙mac地址,
    • connect_state:表示总数,
      id为已经连接音频序号,
      size表示音频大小(字节),
      name表示音频名称]|list|蓝牙的状态。“connected"/"disconnected"
    |
  • x|

根据序号删除指定音频(作废)

此方法删除音频后,会导致音频序号自动重新分配。结果就是sd卡的音频序号与app的序号不同,会导致音频误删除。

根据"音频名称"删除指定音频

格式化SD卡

设备事件

由设备主动触发的事件。比如:电量低事件、录音开始/结束事件。不需要操作app,设备主动推送到app的数据。

文件处理