微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于Dragonboard 410c的智能魔镜设计(3)——针对不同用户的消息检索显示

基于Dragonboard 410c的智能魔镜设计(3)——针对不同用户的消息检索显示

时间:02-10 来源:互联网 点击:

在前两个blog中已经跟大家介绍了如何应用dragonbaord 410c来搭建智能魔镜,对系统的整体设计方案和数据库的构建方案进行了分析和设计,给出了详细的设计框架和部分数据库的实现代码,本节将在此基础上向大家介绍,如何实现在镜子上根据不同的用户播放不同的消息的功能。

根据前面的设计,我们已经搭建好了数据库,并且在数据库中构建了一张pushInfo表来管理系统的消息,其表中设计了消息ID,ownerID和pushID等字段,通过ownerID我们可以方便的查询出该消息的发送者,同时通过pushID我们可以查询得到该消息的推送者,这样要检索出当前用户的消息,我们只需要根据摄像头检测出来的用户身份ID在该pushInfo表中以ownerID字段就可以检索出所有的该用户的消息,同时在表中还设置了viewWight和isTop两个字段用于标记该消息的显示顺序,如果isTop表示该消息要显示在最前面,如果该用户有多条的isTop的消息,则按照时间的先后排序,将最近的消息显示在最前面,同时还根据viewWight来判断消息是否被显示,如果该字段设置为0表示该消息已经被显示,无需再显示,根据这一规则,我们可以在MagicMirrorDB数据管理类中设计一个getTextMessageList(self,userID)函数来检索出指定用户的消息,并且结果按照显示先后的顺序进行排序,具体的代码如下:

def getTextMessageList(self,userID):
        self.cu.execute("")
        format="select infoID,pushID,infoSubject,infoContent,pushTIme from pushInfo where ownerID==%u and isTop==1 and infoType==0 and viewWeight!=0 order by pushTIme desc"
        values=(userID)
        querySQL1=format % values
        self.cu.execute(querySQL1)
        result1=self.cu.fetchone()
        print(querySQL1)
        print(result1)
        #print result
        format="select infoID,pushID,infoSubject,infoContent,pushTIme from pushInfo where ownerID=%u and isTop==0 and infoType==0 order by pushTIme desc"
        values=(userID)
        querySQL2=format % values
        print(querySQL2)
        self.cu.execute(querySQL2)
        result2=self.cu.fetchone()
        print(result2)
        if result1!=None and result2 != None:
            #result=result1+result2
            print(result1+result2)
            return result1+result2
        elif result1==None and result2!=None:
            #result=result2
            return result2
        elif result1!=None and result2 == None:
            #resutl=result1
            return result1
        else:
            #result==None
            return None

这个函数将返回检索结果列表,每一条消息的消息ID infoID,推送者ID pushID,消息主题:infoContent,消息推送时间:pushTime五个内容,后续我们根据这五个内容就可以方便的将消息进行显示,并且这里返回的消息已经按照我们的规则进行了排序。

这样在消息显示的时候我们只需要构建一个MagicMirrorDB类,然后调用该方法就可以获取指定用户的文本消息了,并且进行排序,具体的显示我们可以构建如下函数来实现:

        def showPushInfo(self,userID):
        
        MMDB=MMDB=MagicMirrorDB("./MagicMirrorDB.db")
        #update welcome info by userID
        userName=MMDB.getUserName(userID)
        format="<h3><FONT color = white> Hello %s Welcome...</FONT></h3>"
        values=(userName)
        result=format % values
        self.new.helloWelcome.setText(result)
        #update pushInfo
        #infoID,pushID,infoSubject,infoContent,pushTime
        msgList=MMDB.getTextMessageList(userID)
        print("test0")
        print(msgList)
        print("hello")
        i=0
        pushName=""
        msg_info=""
        pushTime=""
        msgStr=""
        if msgList!=None:
            for msg in msgList:
                print(msgList)
            
                if i==1:
                    print("test1")
                    print(msg)
                    pushName=MMDB.getUserName(msg)
                if i==3:
                    msg_info=msg
                if i==4:
                    #pushTime=time.strftime("%Y-%m-%d %H:%M:%S",msg)
                    msgStr+=("<h3><FONT color=red>"+pushName+"to you:"+"</FONT></h3><p>"+msg_info+"</p>")
                i=i+1
                if i==5:
                    i=0
           
            self.new.webMessageText.setHtml("<body bgcolor=black><marquee loop=-1 direction=up scrollamount=5 height=210 width=300 bgcolor=black><FONT color=white>"+msgStr+"</marquee></body>")
            self.new.webMemorandum.setHtml("<body bgcolor=black><marquee loop=0 direction=up scrollamount=5 height=160 width=300 bgcolor=black><FONT color=white>"+msgStr+"</marquee></body>")   
        videoMsgList=MMDB.getUserVideoMessageList(self.current_userID)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top