PB(电话本)
# 简介
电话簙(Phone book)管理是对SIM卡储存的电话本进行一些操作,包括增删查改电话簙。
# API说明
pb的API在LuatOS-Air lib有做封装,建议直接用lib的API接口。
>API介绍见[pb API章节](https://doc.openluat.com/wiki/21?wiki_page_id=2285 "pb API章节")
# 实现流程
* 设置电话本储存区域
通过pb.setStorage()接口设置电话本储存区域
* 进行电话簙操作
根据自己的对电话簙的操作需求,调用读取一条电话本记录pb.read()、写入一条电话本记录pb.write()、删除一条电话本记录pb.delete()接口实现
# 示例
本文以demo\pb这个DEMO为例做演示
1.首先通过循环定时器调用pb.read(index, cb)接口函数,读取位置1的电话本记录,测试PB模块功能是否正常,之后调用pb.setStorage(storage, cb)接口函数设置电话本储存区域。
```
local function ready(result,name,number)
--读取第1个位置的电话本信息
log.info("testPb.ready",result,name,number)
if result then
--功能正常停止循环,开始测试
sys.timerStop(pb.read,1,ready)
--设置电话本存储区域,SM表示sim卡存储
pb.setStorage("SM",storagecb)
end
end
--循环定时器只是为了判断PB功能模块是否ready
sys.timerLoopStart(pb.read,2000,1,ready)
```
>注意:
>lua版本电话本储存类型仅支持"SM"类型
2.调用pb.delete(index,cb)接口函数来测试删除电话本功能
```
--pb.setStorage()接口的回调函数
local function storagecb(result)
log.info("testPb.storagecb",result)
--删除第1个位置的电话本记录
pb.delete(1,deletecb)
end
```
3. 通过调用pb.write(index, name, num, cb)接口函数来写入电话本的相关信息。
```
--pb.delete()接口的回调函数
function deletecb(result)
log.info("testPb.deletecb",result)
--写入电话本记录到第2个位置
pb.write(2,"name1","11111111111",writecb)
end
```
4.写入电话本信息后再通过回调函数调用pb.read()接口函数,
测试新写入的电话本是否成功。
```
--pb.write()接口的回调函数
function writecb(result)
log.info("testPb.writecb",result)
--读取第2个位置的电话本记录
pb.read(2,readcb)
end
--pb.read()接口的回调函数
function readcb(result,name,number)
--打印读取的电话本信息
log.info("testPb.readcb",result,name,number)
end
```
5.在了解并修改了DEMO后将demo和对应的底包下载到开发板,下载的方式这里不详细说明请参考[环境搭建中的烧录章节](http://doc.openluat.com/wiki/21?wiki_page_id=1923 "环境搭建方法")
6.下载完成后重启,查看luatool工具日志,可以看到电话簙的增删查改都成功了。



到此演示完电话簙增删查改功能。
## 常见问题
1.lua版本的电话本储存类型支持什么类型?
lua版本电话本储存类型仅支持"SM"类型