ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

物联网系统集成

2021-06-27 17:01:18  阅读:258  来源: 互联网

标签:__ .__ self 联网 系统集成 conn print def


1. 简述物联网的体系架构及各层次的功能。

感知层:感知主要是对生物世界和物理世界的数据进行采集

网络层:建立互联网通信,主要是解决感知层的数据进行长距离传输问题

应用层:针对用户的需求将数据进行可视化,对接API等,实现数据的智能应用。

2. 简述物联网系统常用单片机特点及用途。

  1. 51 系列单片机

特点:支持乘法除法指令

片内RAM区间开辟了一个双重地址区间

支持位的逻辑运算。

用途:教学毕设等

  1. PIC 系列

特点:低耗、低电压、驱动能力强,支持在线调试,可直接驱动数码管

用途:消费电子产品,智能仪器仪表,汽车电子,金融电子,工业控制不同领域都有广泛的应用。

  1. STM32单片机

特点:高性能、低成本、低功耗,更多的IO接口、更高的主频、更丰富的功能。

用途:无人机、机器人、门禁、智能小车等。

3. 请使用类的多态性机制,编写一个程序,实现鸟能飞翔,鱼会游泳、狗会奔跑。



class It(object):                               

    def who(self):

        print("鸟能飞翔")



class She(object):                                  

    def who(self):

        print("鱼会游泳")



class He(object):                                

    def who(self):

        print("狗会奔跑")



def who(obj):

    obj.who()



it,she,he = It(),She(),He()



who(it)

who(she)

who(he)


4. 在面向对象的程序开发中,常使用多继承机制,请使用该机制编写一个程序。

# -*-coding:utf-8-*-

#!/usr/bin/python



import time



class Barber(object):

    '''

    功能:会理发

    '''

    __ability = ''

    __time = '0000-00-00 00:00:00'

    def __init__(self):

        time.sleep(1)

        print("2. 开始教理发***")

        super().__init__()

        time.sleep(1)

        print("5. 教会理发***")

        self.__ability = '理发'

        self.__time = (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

    def getAbility(self):

        return self.__ability

    def getTime(self):

        return self.__time

        

class Driver(object):

    '''

    功能:会开车

    '''

    __ability = ''

    __time = '0000-00-00 00:00:00'

    def __init__(self):

        time.sleep(1)

        print("3. 开始教开车###")

        super().__init__()

        time.sleep(1)

        print("4. 教会开车###")

        self.__ability = '开车'

        self.__time = (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

    def getAbility(self):

        return self.__ability

    def getTime(self):

        return self.__time

        



class Double(Barber, Driver):

    '''

    功能:会理发和开车

    '''

    __ability = ''

    def __init__(self):

        print("1. 开始学习---")

        super().__init__() # supper 会进入Barber【取决于继承的顺序 Barber、Driver】

        print("6. 学习结束+++")

        self.__ability += Barber.getTime(self) + ": " + Barber.getAbility(self)

        self.__ability += '\n'

        self.__ability += Driver.getTime(self) + ": " + Driver.getAbility(self)

    def talk(self):

        print(self.__ability)





# 先学理发,在学开车

# 先学会开车,后学会理发



print("规划学习路径")

print(Double.mro())

dd = Double()

print("7. 查看学习效果:")

dd.talk()

    

    

    


5. 并发事件是现实生活最常见的现象,请使用python语言编写一个处理并发事件的程序。(要求提交程序原码,和关键截图)

在这里插入图片描述

# -*-coding:utf-8-*-

#!/usr/bin/python



import threading

import time



# 多线程



class T1(threading.Thread):

    def __init__(self):

        threading.Thread.__init__(self) 

        print("线程1")

    def run(self):

        def addNum():

            for i in range(1, 20):

                print("i: %d" % i)

        go = threading.Thread(target=addNum)

        go.start()

        

class T2(threading.Thread):

    def __init__(self):

        threading.Thread.__init__(self) 

        print("线程2")

    def run(self):

        for i in range(1, 20):

            print("i: %d" % i)

        





t1 = T1()

t2 = T2()

t1.start()

t2.start()


6. 请使用python语言编写一个tcp通信客户端程序,要求提交程序原码、测试过程关键截图。

在这里插入图片描述


#coding: utf-8



# 客户端



import socket

import threading

import configparser

import os





inString = outString = nick = ''



# 发送转码消息

def sendChat(sock, s): 

    sock.sendall(s.encode("utf-8"))

    

# 接收转码消息

def recvChat(sock):

    return sock.recv(1024).decode("utf-8")



# 发送消息

def sends(sock): 

    global nick, outString

    while True: 

        outString = input()

        outString = nick + ':  ' + outString

        sendChat(sock, outString)



# 接收消息

def waits(sock): 

    global inString

    while True: 

        try: 

            inString = recvChat(sock)

            if not inString: 

                break

            if outString != inString:  # 如果不是自己发送的消息

                if inString.find(outString) == 0: 

                    inString = inString.replace(outString, "\n", 1)

                else: 

                    inString = inString.replace(outString, outString+ "\n", 1)

                print ("\n" + inString + "\n我: ", end="")

            else:

                print ("\n我: ", end="")

                

        except: 

            break





if __name__ == "__main__": 

    configDat = configparser.ConfigParser()

    file_path = os.path.abspath(os.path.dirname(__file__)) + '\config.ini'

    configDat.read(file_path, encoding='utf-8')

    

    HOST = configDat.get('server', 'host')

    PORT = configDat.getint('server', 'port')

    nick = input("请输入您的昵称:  ")



    print("您正在申请加入群聊")

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 申请账户

    sock.connect((HOST, PORT)) # 申请加入群聊

    # 发生呢称

    sendChat(sock, nick)

    print("您已经加入群聊,开始聊天吧")



    # 监听发送接收

    threading.Thread(target = waits, args = (sock,)).start()

    threading.Thread(target = sends, args = (sock,)).start()



#sock.close()


7. 请使用python语言编写一个tcp通信服务端程序,要求提交程序原码、测试过程关键截图。

在这里插入图片描述

服务器:

#coding: utf-8





# 服务器开启聊天服务

#  监听多个客户端聊天

#  服务端作为机器人

#  讲客户端的消息转发到多个客户端

#  监听指定的回复

#  安装 requests  取消注释62-67 行代码

#  Python3





import socket

import sys

import threading

import requests

import configparser

import os



con =threading.Condition() # 方便 多线程访问共享数据时加锁和释放锁

data = ''



info = [

{"msg":"群主信息", "remsg":"201817020085 文轩 男 物联网一班"},

{"msg":"大家好", "remsg":"欢迎您加入"},

]





# 发送转码消息

def sendChat(conn, s): 

    conn.sendall(s.encode("utf-8"))

    

# 接收转码消息

def recvChat(conn): 

    return conn.recv(1024).decode("utf-8")

    

# 所有群友可见

def sendAll(chat): 

    NotifyAll(chat)

    if chat[0]!='\n':

        chat += '\n'

    print (data)



def NotifyAll(chat): 

    global data

    if con.acquire(): 

        data = chat

        con.notifyAll()

        con.release()

    

    

def gointo(conn, nick): 

    global data

    while True: 

        try: 

            temp = recvChat(conn)

            if not temp: 

                conn.close()

                return



            remsg = ""

            for li in range(len(info)): 

                if temp.find(info[li]["msg"]) != -1: 

                    remsg = "\n\t机器人回复: " + info[li]["remsg"] + "\n\n"

                    break



            if con.acquire():

                if temp.find("@机器人 ") != -1: 

                    url = "http://wx0725.top/project/php/jiqiren/xiaodie.php?pass=文轩&keyword=" + temp[temp.rfind("@机器人 ")+len("@机器人 "):]

                    r=requests.get(url, timeout=10)

                    remsg = "\n\t机器人回复: " + r.text + "\n\n"

                con.release()

                

            temp += remsg

            sendAll(temp)

        except: 

            sendAll(nick + " 骂骂咧咧退出群聊!")

            return



# 客户端离开

def goout(conn, nick): 

    global data

    while True: 

        if con.acquire(): 

            con.wait()

            if data: 

                try: 

                    sendChat(conn, data)

                    con.release()

                except: 

                    con.release()

                    return



                    

def main(): 



    configDat = configparser.ConfigParser()

    file_path = os.path.abspath(os.path.dirname(__file__)) + '\config.ini'

    configDat.read(file_path, encoding='utf-8')

    NUM = configDat.getint('server', 'num')

    HOST = configDat.get('server', 'host')

    PORT = configDat.getint('server', 'port')



    print("群聊创建中......")

    group = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # TCP 管理员,上帝视角

    group.bind((HOST, PORT))

    group.listen(NUM)

    print ("群聊创建成功!\n\n*****群号: %s(0/%d)****\n" % (HOST, NUM))



    while 1: 

        conn, addr = group.accept() # 监听加入一个成员(conn, addresss: port)

        print ("账户: " + str(addr[1]) + "正在加入群聊")

        nick = recvChat(conn)

        sendAll("成员: " + str(addr[1]) + "设置昵称为【" + nick + "】")

        sendChat(conn, data)

        now = (threading.activeCount() + 1) >> 1

        sendAll("\n\n*****群号: %s: 管理员: %d (%d/%d)****\n" % (HOST, PORT, now, NUM))

        sendChat(conn, data)

        

        threading.Thread(target = gointo , args = (conn, nick)).start()

        threading.Thread(target = goout , args = (conn, nick)).start()

    group.close()

    

    

    

if __name__ =="__main__": 

    main()

标签:__,.__,self,联网,系统集成,conn,print,def
来源: https://blog.csdn.net/qq_44009311/article/details/118276277

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有