診斷系統(tǒng)python Client端架構(gòu)驗(yàn)證--Apple的學(xué)習(xí)筆記

診斷小系統(tǒng)通信設(shè)計(jì)(初步)--Apple的學(xué)習(xí)筆記
昨天做了需求分析递惋,今天進(jìn)行python客戶端架構(gòu)設(shè)計(jì)鲫售,做了個(gè)最小雛形泡徙,驗(yàn)證設(shè)計(jì)方案椿疗。創(chuàng)建2個(gè)類漏峰,一個(gè)是TCPsocket通信,一個(gè)HMI顯示届榄。

后續(xù)注意點(diǎn)浅乔,需要學(xué)習(xí)下的
1.python私有變量貌似是加下劃線前綴,當(dāng)前我加self的都是public變量铝条。2.需要使用try except進(jìn)行安全保障靖苇,添加打印提示信息。
3.添加裝飾函數(shù)保存log.txt文件班缰。

最小雛形功能簡(jiǎn)介贤壁,主函數(shù)中有GUI按鈕通過TCPsocket進(jìn)行發(fā)送數(shù)據(jù),并且創(chuàng)建一個(gè)心跳監(jiān)控線程埠忘,超過3s沒有收到服務(wù)器發(fā)來的信息則斷線重連脾拆。本來創(chuàng)建了GUI傳入TCPcom對(duì)象作為參數(shù),但是需要添加timeout斷線重連莹妒,重連后又是另外一個(gè)TCPcom對(duì)象了名船,為了避免GUI更新,所以索性把com對(duì)象作為全局變量旨怠。反正2個(gè)類的關(guān)系就是GUI依賴TCPcom包帚。


image.png
#client demo code
import socket
from tkinter import *
from tkinter.ttk import *
import threading
import time
__author__ = 'AppleCai'

class TCPcom():
    def __init__(self,host,port):
        self.host = host
        self.port = port
        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

    def ConnCom(self):
        self.s.connect((self.host, self.port))
        print("Connect %s:%d ok" % (self.host, self.port))


    def CloseCom(self):
        self.s.close()

    def SendCom(self,data):
        self.s.send(data)

    def RecviveCom(self):
        self.s.settimeout(5)
        ret = self.s.recv(1024) #10
        print(ret)
        return ret


class GUI():
    def __init__(self):
        self.rectime = 0
        pass

    def update_table(self):
        global com
        com.SendCom(b'00 01 02')
        resp = com.RecviveCom()
        self.rectime = time.time()

    def setupWin(self):
        Button(text="send", width=5, command=self.update_table).grid(row=1, column=3, sticky='w')

    def showWin(self):
        root = Tk()
        root.title("IG Sim")
        root.geometry('420x300')
        self.setupWin()
        root.mainloop()

def heatDetect( threadName, delay):
    while True:
        global com
        time.sleep(delay)
        #print ("%s: %s" % ( threadName, time.ctime(time.time()) ))
        now = time.time()
        delta = now - tool.rectime
        print(now,tool.rectime,delta)
        if(delta>3):
            print("reconnect!")
            com.CloseCom()
            com = TCPcom('127.0.0.1',2345)
            ret = com.ConnCom()

if __name__=="__main__":
    # connect with server
    com = TCPcom('127.0.0.1',2345)
    ret = com.ConnCom()
    # init for GUI
    tool = GUI()
    print(ret)
    # start heart moniter
    th1 = threading.Thread(target=heatDetect, args=("thread1", 3), name="thread1")
    th1.start()
    # run GUI
    tool.showWin()

最小雛形,運(yùn)行效果


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末运吓,一起剝皮案震驚了整個(gè)濱河市渴邦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拘哨,老刑警劉巖谋梭,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異倦青,居然都是意外死亡瓮床,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門产镐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來隘庄,“玉大人,你說我怎么就攤上這事癣亚〕蟛簦” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵述雾,是天一觀的道長(zhǎng)街州。 經(jīng)常有香客問我兼丰,道長(zhǎng),這世上最難降的妖魔是什么唆缴? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任鳍征,我火速辦了婚禮,結(jié)果婚禮上面徽,老公的妹妹穿的比我還像新娘艳丛。我一直安慰自己,他們只是感情好趟紊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布氮双。 她就那樣靜靜地躺著,像睡著了一般织阳。 火紅的嫁衣襯著肌膚如雪眶蕉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天唧躲,我揣著相機(jī)與錄音造挽,去河邊找鬼。 笑死弄痹,一個(gè)胖子當(dāng)著我的面吹牛饭入,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播肛真,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谐丢,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了蚓让?” 一聲冷哼從身側(cè)響起乾忱,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎历极,沒想到半個(gè)月后窄瘟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡趟卸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蹄葱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锄列。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡图云,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出邻邮,到底是詐尸還是另有隱情竣况,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布饶囚,位于F島的核電站帕翻,受9級(jí)特大地震影響鸠补,放射性物質(zhì)發(fā)生泄漏萝风。R本人自食惡果不足惜嘀掸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望规惰。 院中可真熱鬧睬塌,春花似錦、人聲如沸歇万。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)贪磺。三九已至硫兰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寒锚,已是汗流浹背劫映。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刹前,地道東北人泳赋。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像喇喉,于是被迫代替她去往敵國(guó)和親祖今。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355