• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Python實(shí)現(xiàn)設(shè)備控制臺(tái)的集中控制和管理

    2016-07-20 21:02張西波
    關(guān)鍵詞:面向?qū)ο?/a>線程

    摘 要:利用Nport6650串口服務(wù)器連接不同通信設(shè)備的控制臺(tái),把控制臺(tái)的串口信號(hào)轉(zhuǎn)換為IP信號(hào)送到電腦上,在電腦上安裝Nport 6650 的驅(qū)動(dòng)程序,映射通信設(shè)備的控制臺(tái)為電腦上的虛擬串口。使用Python編寫腳本程序,通過程序打開不同的虛擬串口連到不同設(shè)備的控制臺(tái),從而實(shí)現(xiàn)對(duì)設(shè)備的集中控制和管理。

    關(guān)鍵詞:控制臺(tái);Python;面向?qū)ο?;線程 ;串口服務(wù)器;串口通信

    中圖分類號(hào):TP393.0 文獻(xiàn)標(biāo)識(shí)碼:A

    1 引 言

    隨著民航的發(fā)展,航班量的迅速增加,對(duì)通信設(shè)備正常率要求的提高,如何快速判斷出運(yùn)行設(shè)備的故障點(diǎn)成為解決故障的關(guān)鍵點(diǎn)。判斷故障的常用方式是通過登錄設(shè)備的控制端,通過對(duì)設(shè)備命令行的操作來(lái)發(fā)現(xiàn)故障。控制臺(tái)方式是最基本、最簡(jiǎn)單的方式,基本智能化的設(shè)備自身都帶有一個(gè)控制臺(tái)。控制臺(tái)物理接口實(shí)質(zhì)上就是一個(gè)RJ45接口形式的串口,通過console線連接到電腦,使用超級(jí)終端軟件來(lái)對(duì)設(shè)備進(jìn)行配置和管理。本文實(shí)現(xiàn)一種通過串口服務(wù)器把通信設(shè)備的控制臺(tái)都集中連接,然后通過串口服務(wù)器把RS232信號(hào)轉(zhuǎn)變成網(wǎng)絡(luò)信號(hào),通過網(wǎng)線傳到遠(yuǎn)端的電腦,在遠(yuǎn)端的電腦上,通過選擇python編制圖形化程序的菜單,選擇不同菜單切換到不同設(shè)備的控制臺(tái),從而實(shí)現(xiàn)遠(yuǎn)程對(duì)設(shè)備的集中配置、管理和排故操作。

    2 控制系統(tǒng)的架構(gòu)

    利用串口服務(wù)器提供的串口轉(zhuǎn)網(wǎng)絡(luò)功能,將RS232串口信號(hào)轉(zhuǎn)換成TCP/IP網(wǎng)絡(luò)信號(hào),實(shí)現(xiàn)RS232串口與TCP/IP網(wǎng)絡(luò)接口的數(shù)據(jù)雙向透明傳輸,使得串口設(shè)備能夠立即具備TCP/IP網(wǎng)絡(luò)接口功能,連接網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)通信,極大的擴(kuò)展串口設(shè)備的通信距離。由于串口服務(wù)器上有32個(gè)串口,很容易增加設(shè)備到系統(tǒng)中,系統(tǒng)的結(jié)構(gòu)如圖1所示。

    圖1 系統(tǒng)結(jié)構(gòu)示意圖

    3 硬件組成

    系統(tǒng)硬件由一臺(tái)串口服務(wù)器和一臺(tái)電腦組成,使用時(shí),先要在電腦上安裝串口服務(wù)器的驅(qū)動(dòng)程序、配置電腦和串口服務(wù)器的ip地址,以及配置串口通信參數(shù)。

    網(wǎng)絡(luò)配置:我們使用的串口服務(wù)器是moxa Nport6650,首先配置串口服務(wù)器網(wǎng)口的ip地址和電腦網(wǎng)口的ip地址。配置完后,在電腦上安裝串口服務(wù)器的驅(qū)動(dòng)程序,安裝過程中根據(jù)提示,輸入串口服務(wù)器的ip地址,軟件自動(dòng)找到串口服務(wù)器上串口,正確安裝后,能在電腦的設(shè)備管理器中找到虛擬的串口。

    計(jì)算技術(shù)與自動(dòng)化2016年6月

    第35卷第2期張西波:基于Python實(shí)現(xiàn)設(shè)備控制臺(tái)的集中控制和管理

    串口服務(wù)器上串口通信參數(shù)的配置:網(wǎng)頁(yè)登錄到串口服務(wù)器,里面可以配置的參數(shù)有很多,主要配置串口的操作模式和通信參數(shù),其它的參數(shù)可以使用缺省參數(shù)。在serial port setting下選擇操作模式設(shè)置application為device control,設(shè)置mode:RealCOM其余的選擇缺省。串口服務(wù)器上串口的通信參數(shù)設(shè)為9600、8個(gè)數(shù)據(jù)位、1個(gè)停止位無(wú)奇偶校驗(yàn)(設(shè)備控制臺(tái)的通信參數(shù)一般是9600bps,具體速率根據(jù)實(shí)際工作情況設(shè)定)。

    4 軟件設(shè)計(jì)

    4.1 界面部分的設(shè)計(jì)

    集中控制臺(tái)軟件使用Python開發(fā),使用圖形界面,方便操作,采用面向?qū)ο蟮姆椒▉?lái)設(shè)計(jì)和實(shí)現(xiàn),軟件由ConsoleForm.py和monitor_main.py兩個(gè)文件組成。界面的處理部分在ConsoleForm.py中實(shí)現(xiàn),通信處理和菜單響應(yīng)的實(shí)際處理部分在monitor_main.py中實(shí)現(xiàn)。Python作為一種“膠水性”的語(yǔ)言,提供了眾多圖形界面開發(fā)庫(kù),非常適合GUI的快速開發(fā),界面部分我選擇wxPython。wxPython是Python語(yǔ)言下的一套優(yōu)秀GUI圖形庫(kù),允許程序員很方便的創(chuàng)建完整的、功能健全的GUI用戶界面,它具有非常優(yōu)秀的跨平臺(tái)能力。wxPython應(yīng)用采用事件驅(qū)動(dòng)的方式來(lái)實(shí)現(xiàn)用戶界面和wxPython系統(tǒng)的交互,通過使用wx.EvtHandler類中的Bind方法可以將綁定事件的類型、事件對(duì)象和事件處理函數(shù)關(guān)聯(lián)起來(lái)。事件驅(qū)動(dòng)的流程大致是開始初始化等待,大部分時(shí)間花在等待和響應(yīng)。事件驅(qū)動(dòng)就是不斷的循環(huán),從隊(duì)列中抓取消息,然后再進(jìn)行處理。

    4.2 與設(shè)備console口交互部分的設(shè)計(jì)

    控制臺(tái)工作的模式基本都是采用命令和響應(yīng)模式,用戶輸入一行命令然后回車,設(shè)備就根據(jù)你的輸入來(lái)響應(yīng)你,執(zhí)行成功或者失敗都有信息發(fā)給你,在程序的實(shí)現(xiàn)上就是一個(gè)串口接收和處理程序,為了提高程序的響應(yīng)速度,對(duì)接收的處理使用線程方式,只要接收到數(shù)據(jù)就產(chǎn)生一個(gè)接收事件,程序就馬上把接收到的數(shù)據(jù)顯示出來(lái)。對(duì)不同設(shè)備控制臺(tái)的切換實(shí)際就是打開串口服務(wù)器映射到電腦上的不同虛擬串口。異步串口通信使用pySerial模塊,pySerial封裝了對(duì)串口的訪問。在windows和linux操作系統(tǒng)平臺(tái)上都有統(tǒng)一的調(diào)用接口。通過python屬性訪問串口設(shè)置,通信支持不同的字節(jié)大小、停止位、校驗(yàn)位和流控設(shè)置,可以有或者沒有接收超時(shí),有類似文件操作的API:read和write。支持二進(jìn)制傳輸,沒有null消除,沒有cr-lf轉(zhuǎn)換。線程使用threading模塊,ComPortThread工作線程不停查詢被監(jiān)視串口,如果接收到數(shù)據(jù),就產(chǎn)生串口接收事件,接收事件處理程序?qū)?shù)據(jù)在文本控件窗口顯示。同線程的協(xié)調(diào)使用threading.Event, threading.Event可以使一個(gè)線程等待其它線程的通知機(jī)制來(lái)協(xié)調(diào)工作線程的操作,一旦一個(gè)線程開始執(zhí)行,它就處于"alive"狀態(tài),除非線程執(zhí)行完畢,或者引發(fā)了一個(gè)未處理的異常。

    4.3 程序關(guān)鍵處理部分

    class TerminalFrame(consoleForm.MyFrame1):

    def OnNorth(self,event): #切換到華北語(yǔ)音數(shù)據(jù)網(wǎng)

    self.__changeConsole('com5')

    def OnOa(self,event): #切換到OA路由器

    self.__changeConsole('com2')

    def OnKey(self,event):

    if self.serial.isOpen():#judge port is open?

    code=event.GetKeyCode()

    if code<256:

    if code==13:

    self.serial.write('\\r')

    else:

    char=chr(code)

    self.serial.write(char)

    def OnSerialRead(self,event):

    text=event.data

    self.text_ctrl_output.AppendText(text)

    def ComPortThread(self):

    while self.alive.isSet(): #loop while alive event is true

    text=self.serial.read(1) #read one,with timeout

    if text:

    n=self.serial.inWaiting()

    if n:

    text=text+self.serial.read(n)

    event=SerialRxEvent(self.GetId(),text)

    self.GetEventHandler().AddPendingEvent(event)

    #~self.OnSerialRead(text)

    5 結(jié)束語(yǔ)

    使用該設(shè)計(jì)方案完成OA路由器、華北語(yǔ)音數(shù)據(jù)網(wǎng)和ATM交換機(jī)控制臺(tái)的集中連接,在實(shí)際的應(yīng)用中運(yùn)行良好,使用方便。由于串口服務(wù)器有很多的串口,可以很容易接入更多基于串口通信設(shè)備的控制臺(tái),實(shí)現(xiàn)更多設(shè)備的集中配置和管理。方案中使用ip技術(shù),有效解決機(jī)房和機(jī)務(wù)值班室距離遠(yuǎn),在故障時(shí),機(jī)務(wù)員不能及時(shí)分析、查找和處理故障的問題。

    參考文獻(xiàn)

    [1] 馬宏杰.附錄一.ASCII字符碼/十六進(jìn)/十進(jìn)制對(duì)照表[J].微機(jī)通信原理與實(shí)用技術(shù),1994,10:313.

    [2] 周偉.Python的GUI程序設(shè)計(jì)[J].python開發(fā)技術(shù)詳解,2009,8:192-217.

    [3] pyserial在線文檔[DB/OL].http://pythonhosted.org/pyserial/

    猜你喜歡
    面向?qū)ο?/a>線程
    面向?qū)ο蟮挠?jì)算機(jī)導(dǎo)論課程教學(xué)
    基于Web的科研項(xiàng)目管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
    應(yīng)力波反射法測(cè)錨索長(zhǎng)度的數(shù)據(jù)處理軟件設(shè)計(jì)與實(shí)現(xiàn)
    Java多線程產(chǎn)生安全問題及對(duì)策分析
    采用ScheduledThreadPoolExecutor執(zhí)行定時(shí)重試任務(wù)時(shí)內(nèi)存溢出的分析及解決
    從面向過程到面向?qū)ο笏季S方式的教學(xué)引導(dǎo)
    Java的多線程技術(shù)探討
    前郭尔| 巴林左旗| 比如县| 宣武区| 阜宁县| 泾源县| 岗巴县| 舒城县| 都兰县| 自治县| 新邵县| 黑水县| 通海县| 荥经县| 济南市| 河北区| 荃湾区| 当雄县| 长葛市| 交口县| 罗定市| 河北省| 龙口市| 天水市| 措美县| 长兴县| 新竹县| 河南省| 静宁县| 高雄县| 泌阳县| 宾川县| 白河县| 兰州市| 康定县| 云霄县| 桃园县| 定结县| 广水市| 伊吾县| 昭平县|