From ec0872f472154a20247de4aaf1c4d92704bc7e91 Mon Sep 17 00:00:00 2001 From: "forrest.liu" Date: Tue, 11 Apr 2023 11:21:50 +0800 Subject: [PATCH] =?UTF-8?q?fix=20():=20=E6=A0=B9?= =?UTF-8?q?=E6=8D=AEST=20check=E7=9A=84=E5=BB=BA=E8=AE=AE=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E9=83=A8=E5=88=86=E6=8F=8F=E8=BF=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 固件版本: N/A 是否需要文案翻译: 否 --- .../utime.md" | 63 +++---- .../ble.md" | 120 +++++++------ .../QuecPython\347\261\273\345\272\223/bt.md" | 157 +++++++++--------- .../fota.md" | 59 +++---- 4 files changed, 202 insertions(+), 197 deletions(-) diff --git "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/utime.md" "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/utime.md" index 8384e771..5bc3df48 100644 --- "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/utime.md" +++ "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/utime.md" @@ -5,24 +5,9 @@ **示例**: ```python -''' -@Author: Baron -@Date: 2020-06-17 -@LastEditTime: 2020-06-17 17:06:08 -@Description: example for module utime -@FilePath: example_utime_loacltime_file.py -''' import utime import log - -''' -下面两个全局变量是必须有的,用户可以根据自己的实际项目修改下面两个全局变量的值 -''' -PROJECT_NAME = "QuecPython_localtime_example" -PROJECT_VERSION = "1.0.0" - - # 设置日志输出级别 log.basicConfig(level=log.INFO) time_log = log.getLogger("LocalTime") @@ -62,13 +47,13 @@ utime.localtime(secs) **返回值描述:** -- `(year, month, mday, hour, minute, second, weekday, yearday)`-类型为元组,包含了年、月、日、时、分、秒、星期、一年中第几天。当提供参数`secs`时,返回转换后的时间。当参数`secs`没有提供时,则返回本地RTC的时间。返回值含义如下: +- `(year, month, day, hour, minute, second, weekday, yearday)`-类型为元组,包含了年、月、日、时、分、秒、星期、一年中第几天。当提供参数`secs`时,返回转换后的时间。当参数`secs`没有提供时,则返回本地RTC的时间。返回值含义如下: -| 元组成员 | 范围 | 含义 | +| 元组成员 | 范围及类型 | 含义 | | -------- | ---------------------- | ---------------- | | year | int型 | 年份 | | month | int型,1~12 | 月份 | -| mday | int型,1~31 | 日,当月多少号 | +| day | int型,1~31 | 日,当月多少号 | | hour | int型,0~23 | 小时 | | minute | int型,0~59 | 分钟 | | second | int型,0~59 | 秒 | @@ -82,7 +67,7 @@ utime.localtime(secs) >>> utime.localtime() (2020, 9, 29, 8, 54, 42, 1, 273) >>> utime.localtime(646898736) -(2020, 7, 1, 6, 5, 36, 2, 183) +(1990, 7, 2, 14, 5, 36, 0, 183) ``` ### `utime.mktime` @@ -99,7 +84,7 @@ utime.mktime(date) **返回值描述:** -- 以秒为单位的时间,类型为int。 +- int类型。 **示例**: @@ -120,7 +105,7 @@ utime.time() **返回值描述:** -- 以秒为单位的时间,类型为int。 +- int类型。 ### `utime.getTimeZone` @@ -132,7 +117,7 @@ utime.getTimeZone() **返回值描述:** -- 单位小时,范围[-12, 12],负值表示西时区,正值表示东时区,0表示零时区。 +- int类型,单位小时,范围[-12, 12],负值表示西时区,正值表示东时区,0表示零时区。 ### `utime.setTimeZone` @@ -144,7 +129,11 @@ utime.setTimeZone(offset) **参数描述:** -- 单位小时,范围[-12, 12],负值表示西时区,正值表示东时区,0表示零时区。 +- int类型,单位小时,范围[-12, 12],负值表示西时区,正值表示东时区,0表示零时区。 + +**返回值描述:** + +- int类型,成功返回0,失败抛异常。 ## 测量时间间隔相关功能 @@ -158,7 +147,7 @@ utime.ticks_ms() **返回值描述:** -- 毫秒计数值,计数值本身无特定意义,只适合用在 `ticks_diff()`函数中。 +- int类型,毫秒计数值,计数值本身无特定意义,只适合用在 `ticks_diff()`函数中。 ### `utime.ticks_us` @@ -170,7 +159,7 @@ utime.ticks_us() **返回值描述:** -- 微秒计数值,计数值本身无特定意义,只适合用在 `ticks_diff()`函数中。 +- int类型,微秒计数值,计数值本身无特定意义,只适合用在 `ticks_diff()`函数中。 ### `utime.ticks_cpu` @@ -182,7 +171,7 @@ utime.ticks_cpu() **返回值描述:** -- 计数值,计数值本身无特定意义,只适合用在 `ticks_diff()`函数中。 +- int类型,计数值,计数值本身无特定意义,只适合用在 `ticks_diff()`函数中。 ### `utime.ticks_diff` @@ -194,16 +183,18 @@ utime.ticks_diff(ticks1, ticks2) **参数描述:** -- `ticks1`-第二次调用` ticks_ms`, `ticks_us`,或 `ticks_cpu`获取的tick值。 -- `ticks2`-第一次调用` ticks_ms`, `ticks_us`,或 `ticks_cpu`获取的tick值。 +- `ticks1`-int类型,第二次调用` ticks_ms`, `ticks_us`,或 `ticks_cpu`获取的tick值。 +- `ticks2`-int类型,第一次调用` ticks_ms`, `ticks_us`,或 `ticks_cpu`获取的tick值。 **返回值描述:** -- 时间间隔,两次调用` ticks_ms`, `ticks_us`,或 `ticks_cpu`之间的时间间隔。单位和传入的`ticks2`和`ticks1`的单位一致。 +- int类型,时间间隔,两次调用` ticks_ms`, `ticks_us`,或 `ticks_cpu`之间的时间间隔。单位和传入的`ticks2`和`ticks1`的单位一致。 + + + +> `ticks2`和`ticks1`的顺序不能颠倒,否则结果无法确定。且这个函数不要用在计算很长的时间间隔,具体限制为`ticks2`和`ticks1`的tick差值不能超过0x1FFFFFFF,否则结果无法确定。 -**注意**: -`ticks2`和`ticks1`的顺序不能颠倒,否则结果无法确定。且这个函数不要用在计算很长的时间间隔,具体限制为`ticks2`和`ticks1`的tick差值不能超过0x1FFFFFFF,否则结果无法确定。 **示例**: @@ -227,7 +218,7 @@ utime.sleep(seconds) **参数描述:** -- `seconds`-休眠的时长,单位秒。 +- `seconds`-int类型,休眠的时长,单位秒。 ### `utime.sleep_ms` @@ -239,7 +230,7 @@ utime.sleep_ms(ms) **参数描述:** -`ms`-休眠的时长,单位毫秒。 +`ms`-int类型,休眠的时长,单位毫秒。 ### `utime.sleep_us` @@ -251,8 +242,8 @@ utime.sleep_us(us) **参数描述:** -`us`-休眠的时长,单位微秒。 +`us`-int类型,休眠的时长,单位微秒。 + -**注意**: -`utime.sleep`、`utime.sleep_ms`及`utime.sleep_us`函数的调用会导致程序休眠阻塞。 \ No newline at end of file +> `utime.sleep`、`utime.sleep_ms`及`utime.sleep_us`函数的调用会导致程序休眠阻塞。 \ No newline at end of file diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/ble.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/ble.md" index 9104a643..dd8dca7e 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/ble.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/ble.md" @@ -253,7 +253,7 @@ def ble_gatt_set_name(): def ble_gatt_set_param(): min_adv = 0x300 max_adv = 0x320 - adv_type = 0 # 可连接的非定向广播,默认选择 + adv_type = 0 # 可连接的非定向广播,默认选择 addr_type = 0 # 公共地址 channel = 0x07 filter_strategy = 0 # 处理所有设备的扫描和连接请求 @@ -525,7 +525,7 @@ class BleClient(object): 'event_type' : 0, 'name' : '', 'addr_type' : 0, - 'addr' : 0, # 初始化时,用0表示无效值,实际存放bytearray + 'addr' : 0, # 初始化时, 用0表示无效值, 实际存放bytearray 'rssi' : 0, 'data_len' : 0, 'raw_data' : 0, @@ -1014,7 +1014,7 @@ def ble_gatt_client_event_handler(): short_uuid = msg[4] print('start_handle = {:#06x}, end_handle = {:#06x}, short_uuid = {:#06x}'.format(start_handle, end_handle, short_uuid)) if ble_client.discover_service_mode == 0: # discover service all - if ble_client.target_service['short_uuid'] == short_uuid: # 查找到所有服务后,按指定uuid查找特征值 + if ble_client.target_service['short_uuid'] == short_uuid: # 查找到所有服务后, 按指定uuid查找特征值 ble_client.target_service['start_handle'] = start_handle ble_client.target_service['end_handle'] = end_handle ble_client.gatt_statue = gatt_status.BLE_GATT_DISCOVER_CHARACTERISTIC @@ -1267,7 +1267,7 @@ def main(): if count % 5 == 0: print('[{}] BLE Client running, count = {}......'.format(timestamp, count)) print('') - if count > 130: # 这里设置计数是为了程序运行一会自己退出,方便测试,实际根据用户需要来处理 + if count > 130: # 这里设置计数是为了程序运行一会自己退出, 方便测试, 实际根据用户需要来处理 count = 0 print('!!!!! stop BLE Client now !!!!!') ble_status = ble_client.gatt_get_status() @@ -1287,13 +1287,15 @@ if __name__ == '__main__': ``` -**注意**: -当前仅EC200U/EC600U/EG915U/EG912U平台支持`ble`功能。 + +> 当前仅EC200U/EC600U/EG915U/EG912U型号支持`ble`功能。 + + ## 初始化相关功能 -### ble.gattStart +### `ble.gattStart` ```python ble.gattStart() @@ -1305,7 +1307,7 @@ ble.gattStart() - 执行成功返回整型0,失败返回整型-1。 -### ble.gattStop +### `ble.gattStop` ```python ble.gattStop() @@ -1317,7 +1319,7 @@ ble.gattStop() - 执行成功返回整型0,失败返回整型-1。 -### ble.getStatus +### `ble.getStatus` ```python ble.getStatus() @@ -1329,7 +1331,7 @@ ble.getStatus() - 0 - BLE处于停止状态。1 - BLE处于开启状态。-1 - 获取状态失败。 -### ble.getPublicAddr +### `ble.getPublicAddr` ```python ble.getPublicAddr() @@ -1352,13 +1354,15 @@ b'\xdb3\xf5\x1ek\xac' mac = [ac:6b:1e:f5:33:db] ``` -**注意**: -如果有出厂设置默认蓝牙MAC地址,那么该接口获取的MAC地址和默认的蓝牙MAC地址是一致的;如果没有设置,那么该接口获取的地址,将是蓝牙启动后随机生成的静态地址,因此在每次重新上电运行蓝牙功能时都不相同。 + +> 如果有出厂设置默认蓝牙MAC地址,那么该接口获取的MAC地址和默认的蓝牙MAC地址是一致的;如果没有设置,那么该接口获取的地址,将是蓝牙启动后随机生成的静态地址,因此在每次重新上电运行蓝牙功能时都不相同。 + + ## BLE Server相关功能 -### ble.serverInit +### `ble.serverInit` ```python ble.serverInit(user_cb) @@ -1490,7 +1494,7 @@ def ble_callback(args): ble.serverInit(ble_callback) ``` -### ble.serverRelease +### `ble.serverRelease` ```python ble.serverRelease() @@ -1502,7 +1506,7 @@ BLE Server 资源释放。 - 执行成功返回整型0,失败返回整型-1。 -### ble.setLocalName +### `ble.setLocalName` ```python ble.setLocalName(code, name) @@ -1526,11 +1530,13 @@ ble.setLocalName(code, name) 0 ``` -**注意**: -对于BLE,设备在广播时,如果希望扫描软件扫描时,能看到广播设备的名称,是需要在广播数据中包含蓝牙名称的,或者在扫描回复数据中包含设备名称。 -### ble.setAdvParam +> 对于BLE,设备在广播时,如果希望扫描软件扫描时,能看到广播设备的名称,是需要在广播数据中包含蓝牙名称的,或者在扫描回复数据中包含设备名称。 + + + +### `ble.setAdvParam` ```python ble.setAdvParam(min_adv,max_adv,adv_type,addr_type,channel,filter_policy,discov_mode,no_br_edr,enable_adv) @@ -1564,7 +1570,7 @@ ble.setAdvParam(min_adv,max_adv,adv_type,addr_type,channel,filter_policy,discov_ def ble_gatt_set_param(): min_adv = 0x300 max_adv = 0x320 - adv_type = 0 # 可连接的非定向广播,默认选择 + adv_type = 0 # 可连接的非定向广播,默认选择 addr_type = 0 # 公共地址 channel = 0x07 filter_strategy = 0 # 处理所有设备的扫描和连接请求 @@ -1579,7 +1585,7 @@ def ble_gatt_set_param(): return 0 ``` -### ble.setAdvData +### `ble.setAdvData` ```python ble.setAdvData(data) @@ -1617,7 +1623,7 @@ def ble_gatt_set_data(): return 0 ``` -### ble.setAdvRspData +### `ble.setAdvRspData` ```python ble.setAdvRspData(data) @@ -1655,11 +1661,13 @@ def ble_gatt_set_rsp_data(): return 0 ``` -**注意**: -当client设备扫描方式为积极扫描时,设置扫描回复数据才有意义。 -### ble.addService +> 当client设备扫描方式为积极扫描时,设置扫描回复数据才有意义。 + + + +### `ble.addService` ```python ble.addService(primary, server_id, uuid_type, uuid_s, uuid_l) @@ -1696,7 +1704,7 @@ def ble_gatt_add_service(): return 0 ``` -### ble.addChara +### `ble.addChara` ```python ble.addChara(server_id, chara_id, chara_prop, uuid_type, uuid_s, uuid_l) @@ -1747,7 +1755,7 @@ def ble_gatt_add_characteristic(): return 0 ``` -### ble.addCharaValue +### `ble.addCharaValue` ```python ble.addCharaValue(server_id, chara_id, permission, uuid_type, uuid_s, uuid_l, value) @@ -1805,7 +1813,7 @@ def ble_gatt_add_characteristic_value(): return 0 ``` -### ble.changeCharaValue +### `ble.changeCharaValue` ```python ble.changeCharaValue(server_id, chara_id, value) @@ -1824,7 +1832,7 @@ ble.changeCharaValue(server_id, chara_id, value) - 执行成功返回整型0,失败返回整型-1。 -### ble.addCharaDesc +### `ble.addCharaDesc` ```python ble.addCharaDesc(server_id, chara_id, permission, uuid_type, uuid_s, uuid_l, value) @@ -1880,7 +1888,7 @@ def ble_gatt_add_characteristic_desc(): return 0 ``` -### ble.addOrClearService +### `ble.addOrClearService` ```python ble.addOrClearService(option, mode) @@ -1897,7 +1905,7 @@ ble.addOrClearService(option, mode) - 执行成功返回整型0,失败返回整型-1。 -### ble.sendNotification +### `ble.sendNotification` ```python ble.sendNotification(connect_id, attr_handle, value) @@ -1915,7 +1923,7 @@ ble.sendNotification(connect_id, attr_handle, value) - 执行成功返回整型0,失败返回整型-1。 -### ble.sendIndication +### `ble.sendIndication` ```python ble.sendIndication(connect_id, attr_handle, value) @@ -1933,7 +1941,7 @@ ble.sendIndication(connect_id, attr_handle, value) - 执行成功返回整型0,失败返回整型-1。 -### ble.advStart +### `ble.advStart` ```python ble.advStart() @@ -1945,7 +1953,7 @@ ble.advStart() - 执行成功返回整型0,失败返回整型-1。 -### ble.advStop +### `ble.advStop` ```python ble.advStop() @@ -1959,7 +1967,7 @@ ble.advStop() ## BLE Client相关功能 -### ble.clientInit +### `ble.clientInit` ```python ble.clientInit(user_cb) @@ -1999,7 +2007,7 @@ ble.clientInit(user_cb) - 执行成功返回整型0,失败返回整型-1。 -### ble.clientRelease +### `ble.clientRelease` ```python ble.clientRelease() @@ -2011,7 +2019,7 @@ BLE Client 资源释放。 - 执行成功返回整型0,失败返回整型-1。 -### ble.setScanParam +### `ble.setScanParam` ```python ble.setScanParam(scan_mode, interval, scan_window, filter_policy, addr_type) @@ -2031,11 +2039,13 @@ ble.setScanParam(scan_mode, interval, scan_window, filter_policy, addr_type) - 执行成功返回整型0,失败返回整型-1。 -**注意**: -扫描时间 `scan_window` 不能大于扫描间隔 `interval` 。如果两者相等,则表示连续不停的扫描。此时 BLE 的 Controller 会连续运行扫描,占满系统资源而导致无法执行其他任务。所以不允许设置连续扫描。并且不建议将时间设置的太短,扫描越频繁则功耗越高。 -### ble.scanStart +> 扫描时间 `scan_window` 不能大于扫描间隔 `interval` 。如果两者相等,则表示连续不停的扫描。此时 BLE 的 Controller 会连续运行扫描,占满系统资源而导致无法执行其他任务。所以不允许设置连续扫描。并且不建议将时间设置的太短,扫描越频繁则功耗越高。 + + + +### `ble.scanStart` ```python ble.scanStart() @@ -2047,7 +2057,7 @@ ble.scanStart() - 执行成功返回整型0,失败返回整型-1。 -### ble.scanStop +### `ble.scanStop` ```python ble.scanStop() @@ -2059,7 +2069,7 @@ ble.scanStop() - 执行成功返回整型0,失败返回整型-1。 -### ble.setScanFilter +### `ble.setScanFilter` ```python ble.setScanFilter(act) @@ -2075,7 +2085,7 @@ ble.setScanFilter(act) - 执行成功返回整型0,失败返回整型-1。 -### ble.connect +### `ble.connect` ```python ble.connect(addr_type, addr) @@ -2092,7 +2102,7 @@ ble.connect(addr_type, addr) - 执行成功返回整型0,失败返回整型-1。 -### ble.cancelConnect +### `ble.cancelConnect` ```python ble.cancelConnect(addr) @@ -2108,7 +2118,7 @@ ble.cancelConnect(addr) - 执行成功返回整型0,失败返回整型-1。 -### ble.disconnect +### `ble.disconnect` ```python ble.disconnect(connect_id) @@ -2124,7 +2134,7 @@ ble.disconnect(connect_id) - 执行成功返回整型0,失败返回整型-1。 -### ble.discoverAllService +### `ble.discoverAllService` ```python ble.discoverAllService(connect_id) @@ -2140,7 +2150,7 @@ ble.discoverAllService(connect_id) - 执行成功返回整型0,失败返回整型-1。 -### ble.discoverByUUID +### `ble.discoverByUUID` ```python ble.discoverByUUID(connect_id, uuid_type, uuid_s, uuid_l) @@ -2159,7 +2169,7 @@ ble.discoverByUUID(connect_id, uuid_type, uuid_s, uuid_l) - 执行成功返回整型0,失败返回整型-1。 -### ble.discoverAllIncludes +### `ble.discoverAllIncludes` ```python ble.discoverAllIncludes(connect_id, start_handle, end_handle) @@ -2177,7 +2187,7 @@ ble.discoverAllIncludes(connect_id, start_handle, end_handle) - 执行成功返回整型0,失败返回整型-1。 -### ble.discoverAllChara +### `ble.discoverAllChara` ```python ble.discoverAllChara(connect_id, start_handle, end_handle) @@ -2195,7 +2205,7 @@ ble.discoverAllChara(connect_id, start_handle, end_handle) - 执行成功返回整型0,失败返回整型-1。 -### ble.discoverAllCharaDesc +### `ble.discoverAllCharaDesc` ```python ble.discoverAllCharaDesc(connect_id, start_handle, end_handle) @@ -2213,7 +2223,7 @@ ble.discoverAllCharaDesc(connect_id, start_handle, end_handle) - 执行成功返回整型0,失败返回整型-1。 -### ble.readCharaByUUID +### `ble.readCharaByUUID` ```python ble.readCharaByUUID(connect_id, start_handle, end_handle, uuid_type, uuid_s, uuid_l) @@ -2234,7 +2244,7 @@ ble.readCharaByUUID(connect_id, start_handle, end_handle, uuid_type, uuid_s, uui - 执行成功返回整型0,失败返回整型-1。 -### ble.readCharaByHandle +### `ble.readCharaByHandle` ```python ble.readCharaByHandle(connect_id, handle, offset, is_long) @@ -2253,7 +2263,7 @@ ble.readCharaByHandle(connect_id, handle, offset, is_long) - 执行成功返回整型0,失败返回整型-1。 -### ble.readCharaDesc +### `ble.readCharaDesc` ```python ble.readCharaDesc(connect_id, handle, is_long) @@ -2271,7 +2281,7 @@ ble.readCharaDesc(connect_id, handle, is_long) - 执行成功返回整型0,失败返回整型-1。 -### ble.writeChara +### `ble.writeChara` ```python ble.writeChara(connect_id, handle, offset, is_long, data) @@ -2291,7 +2301,7 @@ ble.writeChara(connect_id, handle, offset, is_long, data) - 执行成功返回整型0,失败返回整型-1。 -### ble.writeCharaNoRsp +### `ble.writeCharaNoRsp` ```python ble.writeCharaNoRsp(connect_id, handle, data) @@ -2309,7 +2319,7 @@ ble.writeCharaNoRsp(connect_id, handle, data) - 执行成功返回整型0,失败返回整型-1。 -### ble.writeCharaDesc +### `ble.writeCharaDesc` ```python ble.writeCharaDesc(connect_id, handle, data) diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/bt.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/bt.md" index b3b03401..fef4f56c 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/bt.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/bt.md" @@ -8,10 +8,10 @@ #HFP 示例程序 """ -示例说明:本例程提供一个通过HFP自动接听电话的功能 -运行平台:EC600UCN_LB 铀开发板 -运行本例程后,通过手机A搜索到设备名并点击连接;然后通过手机B拨打电话给手机A, -当手机A开始响铃震动时,设备会自动接听电话 +示例说明:本例程提供一个通过HFP自动接听电话的功能 +运行平台:EC600UCN_LB 铀开发板 +运行本例程后,通过手机A搜索到设备名并点击连接;然后通过手机B拨打电话给手机A, +当手机A开始响铃震动时,设备会自动接听电话 """ import bt import utime @@ -19,7 +19,7 @@ import _thread from queue import Queue from machine import Pin -# 如果对应播放通道外置了PA,且需要引脚控制PA开启,则需要下面步骤 +# 如果对应播放通道外置了PA,且需要引脚控制PA开启,则需要下面步骤 # 具体使用哪个GPIO取决于实际使用的引脚 gpio11 = Pin(Pin.GPIO11, Pin.OUT, Pin.PULL_DISABLE, 0) gpio11.write(1) @@ -125,7 +125,7 @@ def bt_event_proc_task(): bt.stop() break - # 设置蓝牙可见模式为:可以被发现并且可以被连接 + # 设置蓝牙可见模式为:可以被发现并且可以被连接 retval = bt.setVisibleMode(3) if retval == 0: mode = bt.getVisibleMode() @@ -359,9 +359,9 @@ if __name__ == '__main__': #A2DP/AVRCP 示例程序 """ -示例说明:本例程提供一个通过A2DP/AVRCP实现的简易蓝牙音乐播放控制功能 -运行本例程后,通过手机搜索到设备名并点击连接;然后打开手机上的音乐播放软件, -回到例程运行界面,根据提示菜单输入对应的控制命令来实现音乐的播放、暂停、上一首、 +示例说明:本例程提供一个通过A2DP/AVRCP实现的简易蓝牙音乐播放控制功能 +运行本例程后,通过手机搜索到设备名并点击连接;然后打开手机上的音乐播放软件, +回到例程运行界面,根据提示菜单输入对应的控制命令来实现音乐的播放,暂停,上一首, 下一首以及设置音量的功能 """ import bt @@ -385,7 +385,7 @@ A2DP_AVRCP_CONNECT_STATUS = { host_addr = 0 msg_queue = Queue(10) -# 如果对应播放通道外置了PA,且需要引脚控制PA开启,则需要下面步骤 +# 如果对应播放通道外置了PA,且需要引脚控制PA开启,则需要下面步骤 # 具体使用哪个GPIO取决于实际使用的引脚 gpio11 = Pin(Pin.GPIO11, Pin.OUT, Pin.PULL_DISABLE, 0) gpio11.write(1) @@ -574,13 +574,13 @@ if __name__ == '__main__': #SPP 示例程序 """ -示例说明:本例程提供一个通过SPP实现与手机端进行数据传输的功能 -(1)运行之前,需要先在手机端(安卓)安装蓝牙串口APP,如BlueSPP,然后打开该软件; -(2)修改本例程中的目标设备的蓝牙名称,即 DST_DEVICE_INFO['dev_name'] 的值改为用户准备连接的手机的蓝牙名称; -(3)运行本例程,例程中会先发起搜索周边设备的操作,直到搜索到目标设备,就会结束搜索,然后向目标设备发起SPP连接请求; -(4)用户注意查看手机界面是否弹出蓝牙配对请求的界面,当出现时,点击配对; -(5)配对成功后,用户即可进入到蓝牙串口界面,发送数据给设备,设备在收到数据后会回复“I have received the data you sent.” -(6)手机端APP中点击断开连接,即可结束例程; +示例说明:本例程提供一个通过SPP实现与手机端进行数据传输的功能 +(1)运行之前,需要先在手机端(安卓)安装蓝牙串口APP,如BlueSPP,然后打开该软件; +(2)修改本例程中的目标设备的蓝牙名称,即 DST_DEVICE_INFO['dev_name'] 的值改为用户准备连接的手机的蓝牙名称; +(3)运行本例程,例程中会先发起搜索周边设备的操作,直到搜索到目标设备,就会结束搜索,然后向目标设备发起SPP连接请求; +(4)用户注意查看手机界面是否弹出蓝牙配对请求的界面,当出现时,点击配对; +(5)配对成功后,用户即可进入到蓝牙串口界面,发送数据给设备,设备在收到数据后会回复"I have received the data you sent." +(6)手机端APP中点击断开连接,即可结束例程; """ import bt import utime @@ -601,7 +601,7 @@ BT_EVENT = { } DST_DEVICE_INFO = { - 'dev_name': 'HUAWEI Mate40 Pro', # 要连接设备的蓝牙名称 + 'dev_name':'HUAWEI Mate40 Pro',# 要连接设备的蓝牙名称 'bt_addr': None } @@ -807,13 +807,15 @@ if __name__ == '__main__': main() ``` -**注意**: -当前仅EC200U/EC600U/EG915U/EG912U平台支持`bt`功能。 + +> 当前仅EC200U/EC600U/EG915U/EG912U型号支持`bt`功能。 + + ## 初始化相关功能 -### bt.init +### `bt.init` ```python bt.init(user_cb) @@ -857,11 +859,11 @@ bt.init(user_cb) ```python def bt_callback(args): event_id = args[0] # 第一个参数固定是 event_id - status = args[1] # 第二个参数固定是状态,表示某个操作的执行结果是成功还是失败 + status = args[1] # 第二个参数固定是状态,表示某个操作的执行结果是成功还是失败 ...... ``` -### bt.release +### `bt.release` ```python bt.release() @@ -873,7 +875,7 @@ bt.release() - 执行成功返回整型0,失败返回整型-1。 -### bt.start +### `bt.start` ```python bt.start() @@ -885,7 +887,7 @@ bt.start() - 执行成功返回整型0,失败返回整型-1。 -### bt.stop +### `bt.stop` ```python bt.stop() @@ -897,7 +899,7 @@ bt.stop() - 执行成功返回整型0,失败返回整型-1。 -### bt.getStatus +### `bt.getStatus` ```python bt.getStatus() @@ -909,7 +911,7 @@ bt.getStatus() - 蓝牙状态:类型为整型,0-蓝牙处于停止状态,1-蓝牙正常运行中,-1-获取状态失败。 -### bt.getLocalAddr +### `bt.getLocalAddr` ```python bt.getLocalAddr() @@ -932,11 +934,13 @@ b'\xc7\xa13\xf8\xbf\x1a' mac = [1a:bf:f8:33:a1:c7] ``` -**注意**: -该接口需要在蓝牙已经初始化完成并启动成功后才能调用,比如在回调中收到 event_id 为0的事件之后,即 start 成功后,去调用。 -### bt.setLocalName +> 该接口需要在蓝牙已经初始化完成并启动成功后才能调用,比如在回调中收到 event_id 为0的事件之后,即 start 成功后,去调用。 + + + +### `bt.setLocalName` ```python bt.setLocalName(code, name) @@ -951,7 +955,7 @@ bt.setLocalName(code, name) **返回值描述:** -- 蓝牙地址:执行成功返回类型为bytearray的蓝牙地址,大小6字节,失败返回整型-1。 +- 执行成功返回整型0,失败返回整型-1。 **示例**: @@ -960,7 +964,7 @@ bt.setLocalName(code, name) 0 ``` -### bt.getLocalName +### `bt.getLocalName` ```python bt.getLocalName() @@ -970,8 +974,7 @@ bt.getLocalName() **返回值描述:** -- 执行成功返回一个元组`(code, name)`,包含名称编码模式和蓝牙名称,失败返回整型-1。 - +- 执行成功返回一个元组`(code, name)`,包含编码模式和蓝牙名称,失败返回整型-1。 **示例**: @@ -980,13 +983,13 @@ bt.getLocalName() (0, 'QuecPython-BT') ``` -### bt.setVisibleMode +### `bt.setVisibleMode` ```python bt.setVisibleMode(mode) ``` -设置蓝牙可见模式,即做从机时,被扫描时,是否可见以及可连接。 +设置蓝牙可见模式,即做从机被扫描时,是否可被发现以及可被连接。 **参数描述:** @@ -1001,7 +1004,7 @@ bt.setVisibleMode(mode) **返回值描述:** -- 蓝牙地址:执行成功返回类型为bytearray的蓝牙地址,大小6字节,失败返回整型-1。 +- 执行成功返回整型0,失败返回整型-1。 **示例**: @@ -1010,7 +1013,7 @@ bt.setVisibleMode(mode) 0 ``` -### bt.getVisibleMode +### `bt.getVisibleMode` ```python bt.getVisibleMode() @@ -1029,7 +1032,7 @@ bt.getVisibleMode() 3 ``` -### bt.startInquiry +### `bt.startInquiry` ```python bt.startInquiry(mode) @@ -1039,7 +1042,7 @@ bt.startInquiry(mode) **参数描述:** -- `mode`-搜索类型。表示查询哪一类设备,当前直接写15,表示搜索所有。 +- `mode`-搜索类型。目前固定为15,表示搜索所有类型的设备。 **返回值描述:** @@ -1051,7 +1054,7 @@ bt.startInquiry(mode) bt.startInquiry(15) ``` -### bt.cancelInquiry +### `bt.cancelInquiry` ```python bt.cancelInquiry() @@ -1063,7 +1066,7 @@ bt.cancelInquiry() - 执行成功返回整型0,失败返回整型-1。 -### bt.setChannel +### `bt.setChannel` ```python bt.setChannel(channel) @@ -1079,7 +1082,7 @@ bt.setChannel(channel) - 执行成功返回整型0,失败返回整型-1。 -### bt.reconnect_set +### `bt.reconnect_set` ```python bt.reconnect_set(max_count, period) @@ -1099,10 +1102,10 @@ bt.reconnect_set(max_count, period) **示例**: ```python -bt.reconnect_set(25, 2)#配置尝试重连的最大次数为25,每次尝试重连的间隔为2秒 +bt.reconnect_set(25, 2)#配置尝试重连的最大次数为25,每次尝试重连的间隔为2秒 ``` -### bt.reconnect +### `bt.reconnect` ```python bt.reconnect() @@ -1118,11 +1121,11 @@ bt.reconnect() 参考A2DP示例程序。 -## HFP相关功能 +## HFP协议相关功能 提供蓝牙通话相关功能。 -### bt.hfpInit +### `bt.hfpInit` ```python bt.hfpInit() @@ -1134,7 +1137,7 @@ HFP 功能初始化 。 - 执行成功返回整型0,失败返回整型-1。 -### bt.hfpRelease +### `bt.hfpRelease` ```python bt.hfpRelease() @@ -1146,7 +1149,7 @@ HFP 资源释放。 - 执行成功返回整型0,失败返回整型-1。 -### bt.hfpConnect +### `bt.hfpConnect` ```python bt.hfpConnect(addr) @@ -1162,7 +1165,7 @@ bt.hfpConnect(addr) - 执行成功返回整型0,失败返回整型-1。 -### bt.hfpDisonnect +### `bt.hfpDisonnect` ```python bt.hfpDisonnect(addr) @@ -1178,7 +1181,7 @@ bt.hfpDisonnect(addr) - 执行成功返回整型0,失败返回整型-1。 -### bt.hfpSetVolume +### `bt.hfpSetVolume` ```python bt.hfpSetVolume(addr, vol) @@ -1195,7 +1198,7 @@ bt.hfpSetVolume(addr, vol) - 执行成功返回整型0,失败返回整型-1。 -### bt.hfpRejectAfterAnswer +### `bt.hfpRejectAfterAnswer` ```python bt.hfpRejectAfterAnswer(addr) @@ -1211,7 +1214,7 @@ bt.hfpRejectAfterAnswer(addr) - 执行成功返回整型0,失败返回整型-1。 -### bt.hfpRejectCall +### `bt.hfpRejectCall` ```python bt.hfpRejectCall(addr) @@ -1227,7 +1230,7 @@ bt.hfpRejectCall(addr) - 执行成功返回整型0,失败返回整型-1。 -### bt.hfpAnswerCall +### `bt.hfpAnswerCall` ```python bt.hfpAnswerCall(addr) @@ -1243,7 +1246,7 @@ bt.hfpAnswerCall(addr) - 执行成功返回整型0,失败返回整型-1。 -### bt.hfpEnableVR +### `bt.hfpEnableVR` ```python bt.hfpEnableVR(addr) @@ -1259,7 +1262,7 @@ bt.hfpEnableVR(addr) - 执行成功返回整型0,失败返回整型-1。 -### bt.hfpDisableVR +### `bt.hfpDisableVR` ```python bt.hfpDisableVR(addr) @@ -1275,7 +1278,7 @@ bt.hfpDisableVR(addr) - 执行成功返回整型0,失败返回整型-1。 -### bt.hfpDisableVR +### `bt.hfpDisableVR` ```python bt.hfpDisableVR(addr, cmd) @@ -1292,11 +1295,11 @@ bt.hfpDisableVR(addr, cmd) - 执行成功返回整型0,失败返回整型-1。 -## A2DP/AVRCP相关功能 +## A2DP/AVRCP协议相关功能 提供蓝牙音乐相关功能。 -### bt.a2dpavrcpInit +### `bt.a2dpavrcpInit` ```python bt.a2dpavrcpInit() @@ -1308,7 +1311,7 @@ A2DP和AVRCP功能初始化。 - 执行成功返回整型0,失败返回整型-1。 -### bt.a2dpavrcpRelease +### `bt.a2dpavrcpRelease` ```python bt.a2dpavrcpRelease() @@ -1320,7 +1323,7 @@ A2DP和AVRCP 资源释放。 - 执行成功返回整型0,失败返回整型-1。 -### bt.a2dpDisconnect +### `bt.a2dpDisconnect` ```python bt.a2dpDisconnect(addr) @@ -1336,7 +1339,7 @@ bt.a2dpDisconnect(addr) - 执行成功返回整型0,失败返回整型-1。 -### bt.a2dpGetAddr +### `bt.a2dpGetAddr` ```python bt.a2dpGetAddr() @@ -1348,7 +1351,7 @@ bt.a2dpGetAddr() - 执行成功返回bytearray类型的A2DP主机蓝牙地址,6字节,失败返回整型-1。 -### bt.a2dpGetConnStatus +### `bt.a2dpGetConnStatus` ```python bt.a2dpGetConnStatus() @@ -1368,7 +1371,7 @@ bt.a2dpGetConnStatus() | 2 | int | 已连接 | | 3 | int | 正在断开连接 | -### bt.avrcpStart +### `bt.avrcpStart` ```python bt.avrcpStart() @@ -1380,7 +1383,7 @@ bt.avrcpStart() - 执行成功返回整型0,失败返回整型-1。 -### bt.avrcpPause +### `bt.avrcpPause` ```python bt.avrcpPause() @@ -1392,7 +1395,7 @@ bt.avrcpPause() - 执行成功返回整型0,失败返回整型-1。 -### bt.avrcpPrev +### `bt.avrcpPrev` ```python bt.avrcpPrev() @@ -1404,7 +1407,7 @@ bt.avrcpPrev() - 执行成功返回整型0,失败返回整型-1。 -### bt.avrcpNext +### `bt.avrcpNext` ```python bt.avrcpNext() @@ -1416,7 +1419,7 @@ bt.avrcpNext() - 执行成功返回整型0,失败返回整型-1。 -### bt.avrcpSetVolume +### `bt.avrcpSetVolume` ```python bt.avrcpSetVolume(vol) @@ -1432,7 +1435,7 @@ bt.avrcpSetVolume(vol) - 执行成功返回整型0,失败返回整型-1。 -### bt.avrcpGetVolume +### `bt.avrcpGetVolume` ```python bt.avrcpGetVolume() @@ -1444,7 +1447,7 @@ bt.avrcpGetVolume() - 执行成功返回整形音量值,失败返回整型-1。 -### bt.avrcpGetPlayStatus +### `bt.avrcpGetPlayStatus` ```python bt.avrcpGetPlayStatus() @@ -1465,7 +1468,7 @@ bt.avrcpGetPlayStatus() | 3 | int | 正在切换下一首 | | 4 | int | 正在切换下一首 | -### bt.avrcpGetConnStatus +### `bt.avrcpGetConnStatus` ```python bt.avrcpGetConnStatus() @@ -1485,11 +1488,11 @@ bt.avrcpGetConnStatus() | 2 | int | 已连接 | | 3 | int | 正在断开连接 | -## SPP相关功能 +## SPP协议相关功能 提供蓝牙传输相关功能。 -### bt.sppInit +### `bt.sppInit` ```python bt.sppInit() @@ -1501,7 +1504,7 @@ SPP 功能初始化。 - 执行成功返回整型0,失败返回整型-1。 -### bt.sppRelease +### `bt.sppRelease` ```python bt.sppRelease() @@ -1513,7 +1516,7 @@ SPP 资源释放。 - 执行成功返回整型0,失败返回整型-1。 -### bt.sppConnect +### `bt.sppConnect` ```python bt.sppConnect(addr) @@ -1529,7 +1532,7 @@ bt.sppConnect(addr) - 执行成功返回整型0,失败返回整型-1。 -### bt.sppDisconnect +### `bt.sppDisconnect` ```python bt.sppDisconnect() @@ -1541,7 +1544,7 @@ bt.sppDisconnect() - 执行成功返回整型0,失败返回整型-1。 -### bt.sppSend +### `bt.sppSend` ```python bt.sppSend(data) diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/fota.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/fota.md" index 19c306d2..bf2d2510 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/fota.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/fota.md" @@ -5,7 +5,7 @@ **示例**: ```python -#远程升级,下载完自动重启 +#远程升级,下载完自动重启 import fota import utime @@ -37,7 +37,7 @@ if __name__ == '__main__': ``` ```python -#远程升级,下载完不自动重启 +#远程升级,下载完不自动重启 import fota from misc import Power @@ -60,17 +60,11 @@ import log from misc import Power import uos -''' -下面两个全局变量是必须有的,用户可以根据自己的实际项目修改下面两个全局变量的值 -''' -PROJECT_NAME = "QuecPython_Fota_example" -PROJECT_VERSION = "1.0.0" - # 设置日志输出级别 log.basicConfig(level=log.INFO) fota_log = log.getLogger("Fota") -# 此示例需要升级包文件(差分包等.bin文件),且存放到文件系统中 +# 此示例需要升级包文件(差分包等.bin文件),且存放到文件系统中 def run(): fota_obj = fota() # 创建Fota对象 @@ -107,7 +101,7 @@ if __name__ == '__main__': ## 初始化相关功能 -### fota +### `fota` ```python fota(reset_disable=) @@ -123,9 +117,11 @@ fota(reset_disable=) - fota对象。 -**注意**: -EC600N/EC800N/EG912N/EC600M/EC800M/EG810M平台不支持关闭下载完升级包后自动重启功能。 + +> EC600N/EC800N/EG912N/EC600M/EC800M/EG810M型号不支持关闭下载完升级包后自动重启功能。 + + **示例**: @@ -139,7 +135,7 @@ fota_obj = fota() #下载完自动重启 一个接口实现升级包下载和升级整个过程。 -### fota_obj.httpDownload +### `fota_obj.httpDownload` ```python fota_obj.httpDownload(url1=, url2=, callback=) @@ -149,8 +145,8 @@ fota_obj.httpDownload(url1=, url2=, callback=) **参数描述:** -- `url1`-可选参数,升级包的url,该url类型可以是HTTP或FTP,类型为str。注:仅EC200A平台支持FTP url。 -- `url2`-可选参数,mini fota第二阶段升级包的url,类型为str。注:仅mini fota方式需要传入该参数,差分升级方式该参数禁止传入。mini fota方式为小存储平台特殊的固件升级方式,分为2个阶段。而差分升级方式只有一个阶段,仅EC600N/EC800N/EG912N/EC600M/EC800M/EG810M平台支持mini fota方式。 +- `url1`-可选参数,升级包的url,该url类型可以是HTTP或FTP,类型为str。注:仅EC200A型号支持FTP url。 +- `url2`-可选参数,mini fota第二阶段升级包的url,类型为str。注:仅mini fota方式需要传入该参数,差分升级方式该参数禁止传入。mini fota方式为小存储平台特殊的固件升级方式,分为2个阶段。而差分升级方式只有一个阶段,仅EC600N/EC800N/EG912N/EC600M/EC800M/EG810M型号支持mini fota方式。 - `callback`-可选参数,回调函数,显示下载进度和状态,类型为function。注:mini fota方式不支持回调函数。回调函数参数含义如下。 | callback参数 | 参数类型 | 参数说明 | @@ -160,7 +156,7 @@ fota_obj.httpDownload(url1=, url2=, callback=) **返回值描述:** -- 执行成功返回整形值0,执行失败返回整形值-1。注:EC600N/EC800N/EG912N/EC600M/EC800M/EG810M/BC25PA平台,返回值只代表接口执行成功或失败,升级状态和结果需通过回调反馈。其他平台返回0表示下载和校验成功,返回-1表示下载或校验失败。 +- 执行成功返回整形值0,执行失败返回整形值-1。注:EC600N/EC800N/EG912N/EC600M/EC800M/EG810M/BC25PA型号,返回值只代表接口执行成功或失败,升级状态和结果需通过回调反馈。其他型号返回0表示下载和校验成功,返回-1表示下载或校验失败。 **示例**: @@ -171,12 +167,12 @@ def result(args): #差分升级HTTP方式 fota_obj.httpDownload(url1="http://www.example.com/fota.bin",callback=result) #差分升级FTP方式 -fota_obj.httpDownload(url1="ftp://user:password@ip:port/fota.bin",callback=result) #其中user、password、ip、port需要填写具体使用的FTP服务器信息 +fota_obj.httpDownload(url1="ftp://user:password@ip:port/fota.bin",callback=result) #其中user,password,ip,port需要填写具体使用的FTP服务器信息 #mini fota方式 fota_obj.httpDownload(url1="http://www.example.com/fota1.bin",url2="http://www.example.com/fota2.bin") ``` -### fota_obj.apn_set +### `fota_obj.apn_set` ```python fota_obj.apn_set(fota_apn=,ip_type=,fota_user=,fota_password=) @@ -201,11 +197,13 @@ fota_obj.apn_set(fota_apn=,ip_type=,fota_user=,fota_password=) fota_obj.apn_set(fota_apn="CMNET",ip_type=0,fota_user="abc",fota_password="123") ``` -**注意**: -该接口目前支持平台:BG95。 -### fota_obj.download_cancel +> 该接口目前支持型号:BG95。 + + + +### `fota_obj.download_cancel` ```python fota_obj.download_cancel() @@ -225,7 +223,7 @@ import _thread import utime def th_func(): - utime.sleep(40) #时间根据升级包的大小来定,确保在下载完之前取消 + utime.sleep(40) #时间根据升级包的大小来定,确保在下载完之前取消 fota_obj.download_cancel() def result(args): @@ -236,15 +234,17 @@ _thread.start_new_thread(th_func, ()) fota_obj.httpDownload(url1="http://www.example.com/fota.bin",callback=result) ``` -**注意**: -该接口目前支持平台:BG95。 + +> 该接口目前支持型号:BG95。 + + ## 本地升级相关功能 已经获取到升级包内容,调用如下接口实现升级包内容写入flash、校验及重启升级。 -### fota_obj.write +### `fota_obj.write` ```python fota_obj.write(bytesData, file_size) @@ -261,7 +261,7 @@ fota_obj.write(bytesData, file_size) - 写入成功返回整型值0,写入失败返回整型值-1。 -### fota_obj.flush +### `fota_obj.flush` ```python fota_obj.flush() @@ -273,7 +273,7 @@ fota_obj.flush() - 刷新成功返回整型值0,刷新失败返回整型值-1。 -### fota_obj.verify +### `fota_obj.verify` ```python fota_obj.verify() @@ -285,7 +285,8 @@ fota_obj.verify() - 升级包校验成功返回整型值0,校验失败返回整型值-1。 -**注意**: -本地升级相关功能,目前支持平台:EC600NCNLC/EC600NCNLF/EG912N/EC600U/EC200U/EG915U/EG912U/EC800G/EC600E/EC800E。 + +> 本地升级相关功能,目前支持型号:EC600NCNLC/EC600NCNLF/EG912N/EC600U/EC200U/EG915U/EG912U/EC800G/EC600E/EC800E。 +> -- Gitee