3.1 haas506开发教程-example-lbs

haas506开发教程-example-lbs

1.lbs定位

  • mian.py
import utime as time
import network
from lbs import LBS

g_connect_status = False
def on_4g_cb(args):
    global g_connect_status
    pdp = args[0]
    netwk_sta = args[1]
    if netwk_sta == 1:
        g_connect_status = True
    else:
            g_connect_status = False

def connect_network():
    global net,on_4g_cb,g_connect_status
    net = network.NetWorkClient()
    g_register_network = False
    if net._stagecode is not None and net._stagecode == 3 and net._subcode == 1:
        g_register_network = True
    else:
        g_register_network = False
    if g_register_network:
        net.on(1,on_4g_cb)
        net.connect(None)
    else:
        print('network register failed')
    while True:
        if g_connect_status:
            print('network register successed')
            break
        time.sleep_ms(20)

if __name__ == '__main__':
    connect_network()
    getlbs = LBS()
    lbstr = getlbs.get_lbs()
    print(lbstr)
  • lbs.py
# -*- coding: UTF-8 -*-
import net
import http
import ujson

class LBS():
    def __init__(self):
        self.requesturl = ''
        self.url = 'http://apilocate.amap.com/position'
        self.accesstype = 0
        #write your key
        self.key = 'your-key'
        self.cdma = 0
        self.output = 'json'
        self.bts = ''
        self.nearbts = ''
        self.htp = http.client()
        pass

    def get_lbs(self):
        nbrinfo = net.getCellInfo()
        srvinfo = net.getState()
        #gsm
        if len(srvinfo[0]) > 0:
            pass
        if len(srvinfo[1]) > 0:
            pass
        #lte
        if len(srvinfo[2]) > 0:
            srv = srvinfo[2]
            self.bts = str(hex(srv[2]))[2:] + ',' + str(srv[3]) +','+ str(srv[6])+ ',' + str(srv[1]) + ',' + str(srv[7])
            pass
        if len(nbrinfo[0]) > 0:
            pass
        if len(nbrinfo[1]) > 0:
            pass
        if len(nbrinfo[2]) > 0:
            nbr = nbrinfo[2]
            print(nbr,nbrinfo,len(nbr))
            for i in range(len(nbr)):
                self.nearbts += str(hex(nbr[i][2]))[2:] + ',' + str(nbr[i][3]) + ',' + str(nbr[i][6]) + ',' + str(nbr[i][1]) + ',' + str(nbr[i][7])
                if i != (len(nbr) - 1):
                    self.nearbts += '|'
            pass

        self.requesturl += self.url + '?' + 'accesstype=' + str(self.accesstype) + '&key=' + self.key + '&cdma=' + str(self.cdma) + '&output=' + self.output + '&bts=' + self.bts + '&nearbts=' + self.nearbts

        print(self.requesturl)

        ret = self.htp.get(self.requesturl)
        if ret < 0:
            return None
        retstr = self.htp.get_response()
        self.htp.close()
        locationstr = None
        lat = None
        lon = None
        try:
            retdict = ujson.loads(retstr)
            try:
                if int(retdict['infocode']) != 10000:
                    return None
                try:
                    locationstr = retdict['result']['location']
                    tmpstr = locationstr.split(',')
                    lon = tmpstr[0]
                    lat = tmpstr[1]
                    print('content:',retdict)
                except KeyError:
                    return None
                finally:
                    return lon,lat
            except KeyError:
                return None
            finally:
                return lon,lat
        except ValueError:
            return None
        finally:
            return lon,lat
  • 日志输出
network register successed
content: {'result': {'citycode': '0512', 'type': '4', 'city': '苏州市', 'poi': '中国工商银行(苏州独墅湖支行)',
          'desc': '江苏省 苏州市 虎丘区 仁爱路 靠近中国工商银行(苏州独墅湖支行)', 'adcode': '320505',
           'street': '仁爱路', 'radius': '550', 'location': '120.7394987,31.2744203',
           'road': '仁爱路', 'country': '中国', 'province': '江苏省'}, 'status': '1', 'infocode': '10000', 'info': 'OK'}
('120.7394987', '31.2744203')
  • 实现步骤
    (1)在高德开放平台(https://lbs.amap.com/)注册账号
    (2)在控制台的应用管理选择我的应用,点击“创建新应用”
    (3)填写新建应用的“应用名称”和“应用类型”,创建应用
    (4)点击这个应用的“编辑”,添加key
    (5) 复制所得到的key到代码的指定位置
    (6) 烧录和验证

2.总结

 本节介绍了如何使用Haas506实现LBS定位,需要注意的是,个人所注册的高德开放平台账号无法获取的设备的地理位置信息。需要使用公司账号。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值