999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的示波器實(shí)時(shí)監(jiān)控實(shí)驗(yàn)設(shè)計(jì)

2024-01-07 21:55:25胡哲邱繼云
科技風(fēng) 2023年36期

胡哲 邱繼云

摘要:基于Python語(yǔ)言,設(shè)計(jì)了計(jì)算機(jī)對(duì)示波器SDS5054X的實(shí)時(shí)監(jiān)控實(shí)驗(yàn)。通過(guò)訪問(wèn)示波器IP地址與端口號(hào),建立TCP連接。計(jì)算機(jī)向示波器發(fā)送SCPI指令,讀取示波器實(shí)時(shí)波形并以BMP圖片格式保存在電腦里。該實(shí)驗(yàn)過(guò)程有助于學(xué)生加深TCP協(xié)議相關(guān)理論知識(shí)的理解,實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)和操控示波器。同時(shí)可使學(xué)生熟悉Python語(yǔ)言的集成開(kāi)發(fā)環(huán)境Pycharm,有效提高學(xué)生編寫(xiě)與調(diào)試代碼的能力,對(duì)提高工程實(shí)踐能力具有顯著作用。

關(guān)鍵詞:實(shí)驗(yàn)設(shè)計(jì);Python;示波器;TCP通信

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

ExperimentalDesignofOscilloscopeRealtimeMonitoringBasedonPython

HuZheQiuJiyun

SchoolofElectronicandCommunicationEngineering,SunYatsenUniversityGuangdongShenzhen518107

Abstract:BasedonPythonlanguage,therealtimemonitoringexperimentofoscilloscopeSDS5054Xwasdesigned.ThroughaccessingoscilloscopeIPaddressandportnumber,TCPconnectionisestablished.ThecomputersendsSCPIqueryinstructionstotheoscilloscopeandreadoscilloscoperealtimewaveformandsaveitinBMPpictureformatinthecomputer.TheexperimentalprocesscanhelpstudentsdeepentheunderstandingofTCPprotocoltheoryandaccessoscilloscoperemotely.Atthesametime,studentscanbefamiliarwithPycharm,thePythonintegrateddevelopmentenvironmentandimprovestudents'abilitytowriteanddebugcodeeffectively,whichplaysasignificantroleinimprovingengineeringpracticeability.

Keywords:experimentaldesign;Python;oscilloscope;TCPcommunication

示波器廣泛應(yīng)用于電子測(cè)量行業(yè),它能把人眼看不見(jiàn)的電信號(hào)轉(zhuǎn)化為屏幕上的圖像,便于人們研究各種電現(xiàn)象的變化過(guò)程[1]。而目前高校開(kāi)設(shè)的電學(xué)實(shí)驗(yàn)中通常是手動(dòng)操作示波器進(jìn)行信號(hào)測(cè)量,未能充分拓展示波器功能。

而計(jì)算機(jī)編程技術(shù)飛速發(fā)展,Python因其簡(jiǎn)單易學(xué)、語(yǔ)言資源整合能力和擴(kuò)展能力強(qiáng)的特點(diǎn)而應(yīng)用廣泛,成為當(dāng)下企業(yè)最熱門(mén)的編程語(yǔ)言之一。

基于新工科對(duì)于人才培養(yǎng)提出多學(xué)科交叉融合的培養(yǎng)模式要求[2],本文以鼎陽(yáng)示波器SDS5054X為核心,應(yīng)用Python作為編程語(yǔ)言,設(shè)計(jì)計(jì)算機(jī)與示波器通信實(shí)驗(yàn),學(xué)生通過(guò)實(shí)驗(yàn)?zāi)軌蛴蓽\入深、更加系統(tǒng)地了解和掌握示波器與通信原理相關(guān)的理論,加強(qiáng)Python編程能力的培養(yǎng)。

1實(shí)驗(yàn)內(nèi)容

本實(shí)驗(yàn)案例內(nèi)容要求為:基于Python語(yǔ)言,采用TCP通信協(xié)議,通過(guò)訪問(wèn)鼎陽(yáng)示波器SDS5054X的IP地址與相應(yīng)端口,建立與示波器之間的通信連接,并發(fā)送SCPI指令,查看示波器的實(shí)時(shí)波形并以圖像形式保存至電腦里。

2實(shí)驗(yàn)總體方案設(shè)計(jì)

首先,為了建立電腦與示波器的TCP通信,調(diào)用函數(shù)庫(kù)中的Socket模塊,創(chuàng)建連接。如果創(chuàng)建失敗,則返回提示相關(guān)連接創(chuàng)建錯(cuò)誤。在連接建立后,利用sendall()函數(shù)發(fā)送SCPI查詢指令,recv()函數(shù)接收相關(guān)查詢結(jié)果。為了檢驗(yàn)多次查詢是否會(huì)出錯(cuò)且使實(shí)驗(yàn)的效果更明顯,設(shè)置了10次循環(huán),循環(huán)結(jié)束后關(guān)閉Socket模塊,結(jié)束連接,實(shí)驗(yàn)代碼設(shè)計(jì)框圖見(jiàn)圖1。

3實(shí)驗(yàn)原理

3.1TCP通信原理

TCP(英文:TransmissionControlPtotocol)是一種面向連接(連接導(dǎo)向)的、可靠的、基于字節(jié)流的運(yùn)輸層通信協(xié)議,具有全雙工操作、有效流控、傳輸可靠等特點(diǎn)[3]。TCP建立連接時(shí),客戶端和服務(wù)器要經(jīng)過(guò)三次握手階段,當(dāng)客戶端向服務(wù)端發(fā)起連接時(shí),會(huì)先發(fā)一包用于詢問(wèn)能否建立連接的SYN包,如果對(duì)方同意連接,則會(huì)回復(fù)SYN+ACK包,客戶端收到后,回復(fù)ACK包,連接建立。三次握手示意圖如圖2所示。

處于連接狀態(tài)的客戶端與服務(wù)端,都可以發(fā)起關(guān)閉連接請(qǐng)求,共需要四次揮手進(jìn)行連接關(guān)閉。假設(shè)客戶端主動(dòng)發(fā)起連接關(guān)閉請(qǐng)求,需要先向服務(wù)端發(fā)起一包FIN包,表示要關(guān)閉連接,客戶端進(jìn)入終止等待1狀態(tài),這是第一次揮手。隨后服務(wù)端向客戶端發(fā)送ACK包,表示進(jìn)入關(guān)閉等待狀態(tài),客戶端進(jìn)入終止等待2狀態(tài),這是第二次揮手。此時(shí)服務(wù)端還可以發(fā)送未發(fā)送的數(shù)據(jù),客戶端還可以接收數(shù)據(jù)。待服務(wù)端發(fā)送完數(shù)據(jù)后,服務(wù)端發(fā)送一包FIN包,進(jìn)入最后確認(rèn)狀態(tài),這是第三次揮手。客戶端收到后回復(fù)ACK包,進(jìn)入超時(shí)等待狀態(tài),經(jīng)過(guò)超時(shí)等待后關(guān)閉連接,服務(wù)端收到ACK包后立刻關(guān)閉連接,這是第四次揮手。四次揮手示意圖如圖3所示。

3.2Socket編程通信

Socket是操作系統(tǒng)提供給開(kāi)發(fā)人員進(jìn)行網(wǎng)絡(luò)開(kāi)發(fā)的API接口,這套接口通常可以參數(shù)的調(diào)整支持多種協(xié)議,包括TCP、UDP和IP等。Socket編程通信示意圖見(jiàn)圖4,主要包含以下三個(gè)步驟。

3.2.1建立連接

兩端分別有一個(gè)Socket,用于兩者之間的通信。客戶端向服務(wù)器發(fā)送請(qǐng)求,創(chuàng)建Socket進(jìn)行連接。服務(wù)端則隨時(shí)監(jiān)聽(tīng)客戶端發(fā)起的請(qǐng)求,接收并創(chuàng)建Socket。

3.2.2數(shù)據(jù)傳送

服務(wù)端和客戶端的輸入輸出流互相通信。邏輯上可理解為通信進(jìn)程的雙方具有兩個(gè)流(輸出流和輸入流)。邏輯上可將兩個(gè)流理解為兩個(gè)通信管道的全雙工通信模式,一個(gè)用于向?qū)Ψ桨l(fā)送數(shù)據(jù),另一個(gè)用于接收對(duì)方的數(shù)據(jù)。

3.2.3終止連接

客戶端訪問(wèn)服務(wù)器結(jié)束,斷開(kāi)連接,關(guān)閉Socket和相關(guān)資源(輸入輸出流等)。服務(wù)端監(jiān)聽(tīng)客戶端狀態(tài),同時(shí)關(guān)閉Socket等連接。

3.3通信功能實(shí)現(xiàn)

3.3.1建立連接

Socket模塊是Python中自帶模塊,它可以使開(kāi)發(fā)人員不用去關(guān)注內(nèi)部層與層之間的傳輸,只需在Socket接口發(fā)送和接收指令。在調(diào)用Socket模塊后,需要選擇AdressFamily和Type兩個(gè)參數(shù)。本文采用TCP協(xié)議連接方式,即參數(shù)分別選擇為Socket.AF_INET和Socket.SOCK_STREAM,連接至示波器IP與port。鼎陽(yáng)科技的研發(fā)人員將port5025設(shè)置為Socket的端口號(hào),不需安裝NIVISA。考慮到調(diào)用失敗或者連接失敗的情況,需提示用戶連接失敗并及時(shí)退出,故引入sys模塊。代碼示例如圖5。

3.3.2發(fā)送和接收指令

在Python的Socket編程中,有兩個(gè)發(fā)送TCP的函數(shù),send()與sendall()。本文采用sendall()函數(shù),可完整發(fā)送TCP數(shù)據(jù)。將string中的數(shù)據(jù)發(fā)送到連接的Socket,但在返回之前會(huì)嘗試發(fā)送所有數(shù)據(jù)。成功返回None,失敗則拋出異常。

Socket.recv(bufsize[,flag])用于接收TCP連接的Socket里的數(shù)據(jù),數(shù)據(jù)以字符串形式返回,bufsize指定要接收的最大數(shù)據(jù)量。flag提供有關(guān)消息的其他信息,通常可以忽略。本次實(shí)驗(yàn)設(shè)置最大數(shù)據(jù)量是4096字節(jié)。部分代碼示例見(jiàn)圖6:

3.3.3關(guān)閉Socket

發(fā)送和接收數(shù)據(jù)完成后,需將Socket及時(shí)關(guān)閉完全釋放資源。close函數(shù)可以用于關(guān)閉Socket,并且只能TCP連接。關(guān)閉后需要延時(shí)一段時(shí)間,可以調(diào)用time模塊可以讓程序休眠,具體方法是time.sleep(秒數(shù)),其中“秒數(shù)”以秒為單位,可以是小數(shù)。代碼示例見(jiàn)圖7:

3.4SCPI通信協(xié)議說(shuō)明

可編程儀器標(biāo)準(zhǔn)命令(英語(yǔ):StandardCommandsforProgrammableInstruments,縮寫(xiě):SCPI)是一套用于控制可編程測(cè)試測(cè)量?jī)x器的標(biāo)準(zhǔn)語(yǔ)法和命令,實(shí)際是通過(guò)ASCII字符串形式在命令與儀器進(jìn)行交互[4]。SCPI協(xié)議建立于IEEE488.2基礎(chǔ)上,可用于GPIB、RS232、VXIb總線,通過(guò)相同命令來(lái)控制不同儀器的相同功能。命令一般由一系列的關(guān)鍵字構(gòu)成,有的還需要包括參數(shù)。

一般的儀器指令大致可以分為控制指令和查詢指令,控制指令可以改變儀器運(yùn)行狀態(tài),比如控制示波器的開(kāi)啟和關(guān)閉。查詢指令可以查詢儀器運(yùn)行狀態(tài),比如查詢電源的輸出電流等,一般以問(wèn)號(hào)結(jié)尾。不同品牌的儀器SCPI指令數(shù)據(jù)格式由儀器廠家定義,通常會(huì)有稍許不同,具體的指令需查詢儀器廠家提供的數(shù)據(jù)手冊(cè)。同時(shí),IEEE488.2標(biāo)準(zhǔn)定義了一組常用命令,可執(zhí)行復(fù)位、自檢以及狀態(tài)操作等功能。常用命令總是以星號(hào)(*)開(kāi)始,長(zhǎng)度為3個(gè)字符,并可以包括一個(gè)或多個(gè)參數(shù)。以向示波器發(fā)送查詢指令*IDN*為例,此查詢命令可以識(shí)別儀器類型和軟件版本,響應(yīng)由四個(gè)不同的字段組成,實(shí)現(xiàn)代碼如圖8:

4實(shí)驗(yàn)示例

在實(shí)驗(yàn)中,常常會(huì)受到場(chǎng)地、環(huán)境等客觀因素限制,不能實(shí)地監(jiān)測(cè)示波器波形變化。利用示波器與電腦遠(yuǎn)程通信,建立相應(yīng)連接,可以遠(yuǎn)程實(shí)時(shí)讀取波形,并以圖片格式保存在電腦里。具體實(shí)現(xiàn)可分為以下幾個(gè)步驟:

(1)利用socket模塊,建立電腦與示波器的連接,進(jìn)行相互通信。

(2)設(shè)置緩沖區(qū)的大小。指定chunksize為20Mb,將數(shù)據(jù)分為多次讀取,避免一次性讀取內(nèi)存不足。

(3)示波器向電腦發(fā)送SCPI指令PRINBMP,請(qǐng)求將示波器數(shù)據(jù)保存為BMP格式圖片。

(4)讀取示波器圖片數(shù)據(jù),使用open()函數(shù),以二進(jìn)制格式、只寫(xiě)模式打開(kāi)文件,將圖片數(shù)據(jù)從內(nèi)存寫(xiě)入至本地文件中。

(5)使用flush()方法刷新緩沖區(qū),即將緩沖區(qū)中的數(shù)據(jù)立刻寫(xiě)入文件,同時(shí)清空緩沖區(qū),不需要被動(dòng)地等待輸出緩沖區(qū)寫(xiě)入。

(6)關(guān)閉文件,寫(xiě)入結(jié)束。

實(shí)現(xiàn)代碼如圖9:

結(jié)語(yǔ)

本文提出基于Python語(yǔ)言,建立與鼎陽(yáng)示波器SDS5054X之間的TCP連接,通過(guò)SCPI指令實(shí)現(xiàn)實(shí)時(shí)讀取示波器波形數(shù)據(jù),并以BMP格式儲(chǔ)存在電腦里。針對(duì)該項(xiàng)實(shí)驗(yàn),學(xué)生需要搭建Python語(yǔ)言環(huán)境,熟悉基本語(yǔ)法和相關(guān)通信模塊,掌握基本的通信原理與數(shù)字示波器測(cè)量信號(hào)知識(shí)。在不斷調(diào)試整段代碼的過(guò)程中,可以培養(yǎng)學(xué)生基本編程能力和排錯(cuò)能力,加深對(duì)Socket編程模塊和數(shù)據(jù)讀寫(xiě)操作的理解,為日后進(jìn)一步完成軟硬件結(jié)合的工程項(xiàng)目打下初步基礎(chǔ)。

參考文獻(xiàn):

[1]李林瀟,江先陽(yáng).基于LabVIEW的示波器控制與演示系統(tǒng)設(shè)計(jì)[J].物理實(shí)驗(yàn),2018,38(S1):103107.

[2]趙江萍,姚纓英.新工科背景下的電學(xué)實(shí)驗(yàn)設(shè)計(jì)方法探究[J].實(shí)驗(yàn)室科學(xué),2021,24(4):5659.

[3]徐宙,劉連照,程彥杰,等.基于C#的數(shù)字存儲(chǔ)示波器控制軟件設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)量與測(cè)試技術(shù),2016,43(2):5355+57.

[4]于曉輝,許禮昆,李新波,等.基于單片機(jī)的數(shù)字示波器實(shí)驗(yàn)設(shè)計(jì)[J].實(shí)驗(yàn)室科學(xué),2021,24(3):5356+60.

[5]阮頤,宋清亮,王甲.基于Python的示波器圖像數(shù)據(jù)識(shí)別[J].集成電路應(yīng)用,2020,37(1):1819+22.

[6]劉雪琳,章鈺琪,董愛(ài)國(guó).基于Python的物理實(shí)驗(yàn)數(shù)據(jù)處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].實(shí)驗(yàn)技術(shù)與管理,2021,38(3):7478.

[7]郝彥爽,林穎,韓守梅.基于FPGA的數(shù)字電子技術(shù)實(shí)驗(yàn)案例設(shè)計(jì)[J].實(shí)驗(yàn)室科學(xué),2021,24(3):101104.

[8]孫暉,彭里卓.基于樹(shù)莓派和Python的數(shù)字音效處理綜合實(shí)驗(yàn)設(shè)計(jì)[J].集成電路應(yīng)用,2021,38(10):262263.

[9]蔡軍,左俊偉,潘峰.基于LabVIEW的諧振式無(wú)線電能傳輸實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)[J].實(shí)驗(yàn)技術(shù)與管理,2021,38(10):211215.

基金項(xiàng)目:2021年第二批產(chǎn)學(xué)合作協(xié)同育人項(xiàng)目(項(xiàng)目編號(hào):202102504019)

作者簡(jiǎn)介:胡哲(1996—),女,漢族,山西大同人,碩士,助理實(shí)驗(yàn)師,研究方向?yàn)閷?shí)驗(yàn)教學(xué)研究。

主站蜘蛛池模板: 福利国产微拍广场一区视频在线| 亚洲欧美日韩动漫| 伊人国产无码高清视频| 国产成人亚洲无码淙合青草| 激情爆乳一区二区| 无码中文AⅤ在线观看| hezyo加勒比一区二区三区| 欧美成人午夜在线全部免费| 2021无码专区人妻系列日韩| 国内精品久久人妻无码大片高| 99久视频| 亚洲成人在线免费观看| 国产精品自在在线午夜| a级毛片免费播放| 日日拍夜夜嗷嗷叫国产| 亚洲第一页在线观看| 四虎影视8848永久精品| 特级做a爰片毛片免费69| 亚洲自偷自拍另类小说| 欧美成人精品欧美一级乱黄| a毛片免费在线观看| 2020最新国产精品视频| 91娇喘视频| 91美女在线| 日韩小视频网站hq| 国产十八禁在线观看免费| 国模私拍一区二区三区| 在线免费不卡视频| 亚洲h视频在线| 国产性生交xxxxx免费| 国产成人高清精品免费| h视频在线播放| 国产免费人成视频网| 一本一道波多野结衣一区二区 | 亚洲AⅤ永久无码精品毛片| 国产精品尤物铁牛tv| 亚洲开心婷婷中文字幕| 成年人视频一区二区| 亚洲视频一区在线| 国产一区二区三区夜色| 亚洲AV一二三区无码AV蜜桃| 特级毛片免费视频| 亚洲人人视频| 国产福利在线观看精品| 中文字幕乱码二三区免费| 久久精品国产999大香线焦| 国内精品久久久久久久久久影视 | 国产精品综合色区在线观看| 成年人国产视频| 午夜日本永久乱码免费播放片| 亚洲午夜18| 五月婷婷精品| 一级成人a毛片免费播放| 97视频精品全国免费观看| 亚洲另类第一页| 无码精品国产dvd在线观看9久| 农村乱人伦一区二区| 九九九国产| 91麻豆精品国产高清在线 | 97超级碰碰碰碰精品| 国产欧美一区二区三区视频在线观看| 欧美19综合中文字幕| 国产美女叼嘿视频免费看| 超级碰免费视频91| 伊人久久精品亚洲午夜| 国产精品视频999| 日韩精品一区二区三区视频免费看| 亚洲国产理论片在线播放| 久久99热66这里只有精品一 | 国产亚洲精品97AA片在线播放| 青青热久免费精品视频6| 亚洲精品成人片在线播放| 亚洲乱亚洲乱妇24p| 91九色国产在线| 久久免费观看视频| 亚洲va精品中文字幕| 精品午夜国产福利观看| 亚洲自拍另类| 亚洲日产2021三区在线| 91国内在线观看| 婷婷色一二三区波多野衣| 青青草91视频|