亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種實(shí)現(xiàn)單片機(jī)運(yùn)行信息觀察的方法

文檔序號:6420377閱讀:124來源:國知局
專利名稱:一種實(shí)現(xiàn)單片機(jī)運(yùn)行信息觀察的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種單片機(jī)運(yùn)行信息觀察的方法,尤其涉及80C51單片機(jī)領(lǐng)域的運(yùn)行信息觀察方法。
背景技術(shù)
80C51及與其兼容的系列單片機(jī)作為工業(yè)的標(biāo)準(zhǔn)地位,廣泛應(yīng)用于各類電器及通訊產(chǎn)品中。絕大多數(shù)情況下,80C51單片機(jī)軟件程序需要加很多打印信息來觀察系統(tǒng)的運(yùn)行狀況,以便在出現(xiàn)BUG或故障時查找和定位。一般的方法是在程序中需要打印的地方直接調(diào)用編譯器提供的printf函數(shù)(一般80C51編譯器均提供該函數(shù))向串口打印,打印的內(nèi)容一般包括說明文字和相應(yīng)數(shù)據(jù),后臺PC機(jī)上就用超級終端等工具顯示。
這種傳統(tǒng)方法的主要缺點(diǎn)有第一,沒有包含時間信息,不利于故障的定位;第二,打印是一種慢速操作,在短時間內(nèi)需要大量打印時,串口輸出對系統(tǒng)的資源占用太多,對于實(shí)時性要求較強(qiáng)的系統(tǒng)有可能造成時序錯誤;第三,printf函數(shù)采用查詢的方式輸出,主程序必須等待所有數(shù)據(jù)在串口上全部發(fā)送完畢才能接下去執(zhí)行;第四,由于printf函數(shù)是編譯器提供的默認(rèn)函數(shù),不方便重定向?yàn)槟J(rèn)串口以外的其他接口發(fā)送和接收。

發(fā)明內(nèi)容
本發(fā)明的目的是為了克服一般運(yùn)行信息觀察方法調(diào)用printf()的弊病,提出了一種單片機(jī)的運(yùn)行信息觀察方法,帶有時間戳功能,節(jié)約了代碼空間,加快程序運(yùn)行和處理速度,方便接口的重定位,方便故障的查找和排除。
本發(fā)明采用的方法為在單片機(jī)中運(yùn)行一前臺模塊,在PC機(jī)中運(yùn)行一后臺模塊,兩者通過串口連接;前臺模塊運(yùn)行在單片機(jī)上,當(dāng)用戶需要在程序的某個部位打印運(yùn)行信息時,將一個運(yùn)行信息號(2個字節(jié))和數(shù)據(jù)部分作為參數(shù)調(diào)用該模塊的入口函數(shù)osOutputRunInfo。在該函數(shù)中封裝幀頭(運(yùn)行信息號、時間戳、長度),調(diào)用前后臺通訊函數(shù)發(fā)送。
發(fā)送函數(shù)將運(yùn)行信息幀放入底層驅(qū)動的消息發(fā)送隊(duì)列中,然后啟動發(fā)送中斷。發(fā)送隊(duì)列采用單循環(huán)隊(duì)列方式進(jìn)行管理,發(fā)送中斷服務(wù)程序檢測到消息發(fā)送隊(duì)列不空,則采用中斷方式從隊(duì)列中取數(shù)據(jù)向外發(fā)送,直到發(fā)完為止。整個發(fā)送過程由中斷服務(wù)程序完成,不影響主程序運(yùn)行。由于發(fā)送函數(shù)可以將信息幀放入不同的硬件驅(qū)動對應(yīng)的發(fā)送隊(duì)列,并開啟不同硬件驅(qū)動的發(fā)送中斷,所以,通過改變這個發(fā)送函數(shù)的目的消息發(fā)送隊(duì)列,可以簡單的重定向運(yùn)行信息的收發(fā)接口。
后臺系統(tǒng)運(yùn)行在PC機(jī)上,在解析到收到的一幀為運(yùn)行信息觀察的消息后,送到相應(yīng)后臺模塊處理。后臺模塊首先解析幀頭,取出運(yùn)行信息號和時間戳。在后臺模塊,根據(jù)前臺使用的信息號和對應(yīng)的意義,用戶需要維護(hù)一張運(yùn)行信息號和說明文字、數(shù)據(jù)解析方法的對照表,后臺模塊根據(jù)這張表解析幀的內(nèi)容,還原成包含說明文字和數(shù)據(jù)內(nèi)容的完整消息,連同時間戳顯示給用戶。
由于前臺每一次時鐘中斷中時間戳加一,所以根據(jù)時鐘中斷一次的具體時間,用戶可以由時間戳計算出各條消息之間的時序關(guān)系。


圖1是本方法所采用的結(jié)構(gòu)示意圖。
圖2是前臺模塊入口函數(shù)流程圖。
圖3是后臺解析過程示意圖。
具體實(shí)施例方式
本發(fā)明的要點(diǎn)是1)在時鐘中斷中維護(hù)一個不斷計數(shù)的全局變量作為時間戳,在每條運(yùn)行信息輸出時打上這個時間戳。用戶可以根據(jù)這個時間戳方便地計算出時序關(guān)系。
2)為了最大限度地減輕前臺單片機(jī)軟件的負(fù)荷,減少串口中斷次數(shù)和串口數(shù)據(jù)流量,將打印信息中的文字說明部分轉(zhuǎn)移到PC機(jī)后臺,每次單片機(jī)軟件只輸出數(shù)據(jù)部分,后臺進(jìn)行解析后還原出整個消息。
3)運(yùn)行信息幀被放入底層發(fā)送隊(duì)列,發(fā)送隊(duì)列采用單循環(huán)隊(duì)列方式進(jìn)行管理,串口中斷服務(wù)程序檢測到發(fā)送隊(duì)列不空,則采用中斷方式從隊(duì)列中取數(shù)據(jù)向外發(fā)送,直到發(fā)完為止,而不需要主程序在打印信息時等待,使打印對系統(tǒng)的影響變到最小。
運(yùn)行信息輸出時采用填寫消息隊(duì)列的形式,每個消息隊(duì)列對應(yīng)一個底層輸入輸出接口,通過改變輸出的消息隊(duì)列,方便地轉(zhuǎn)換輸出接口。
下面結(jié)合附圖對本發(fā)明進(jìn)行詳細(xì)描述。
如圖1所示系統(tǒng)分為前臺模塊和后臺模塊,前臺模塊運(yùn)行在單片機(jī)上,后臺模塊運(yùn)行在PC機(jī)上,兩者用串口連接。前臺模塊負(fù)責(zé)運(yùn)行信息的組幀、打時間戳、發(fā)送,用戶程序只需調(diào)用相關(guān)接口函數(shù)即可。后臺模塊負(fù)責(zé)解析幀和顯示。
如圖2所示前臺模塊的入口函數(shù)void osOutputRunInfo(WORD wInfoNo,BYTE byLength,BYTE*pbInfoData)輸入?yún)?shù)WORD wInfoNo 運(yùn)行信息號BYTE byLength 標(biāo)識pbInfoData的長度BYTE*pbInfoData信息內(nèi)容函數(shù)進(jìn)行組幀,運(yùn)行信息的幀結(jié)構(gòu)如下表所示

在組幀結(jié)束后,調(diào)用前臺的發(fā)送函數(shù)發(fā)送。這個發(fā)送函數(shù)向輸入輸出接口驅(qū)動對應(yīng)的發(fā)送隊(duì)列發(fā)送消息。因?yàn)椴煌南㈥?duì)列對應(yīng)不同物理鏈路和協(xié)議的接口,通過改變這個接口函數(shù)的目的消息隊(duì)列,可以簡單的重定向運(yùn)行信息的收發(fā)接口。
如圖3所示后臺模塊在開始運(yùn)行時,從文件中讀入對照表(對照表根據(jù)運(yùn)行信號從小到大排序)。在收到消息體后,首先根據(jù)運(yùn)行信息號在對照表中采用折半查找(提高查找效率)找到對應(yīng)的解析條目。對照表中的每一個條目由文字說明部分和數(shù)據(jù)部分混合構(gòu)成(也可只有文字或數(shù)據(jù)),解析的目的就是將條目中的數(shù)據(jù)部分用消息體中的真實(shí)數(shù)據(jù)來取代。
條目中的數(shù)據(jù)部分采用C語言標(biāo)準(zhǔn)的輸出表示形式,例如“%4d”,4表示需要解析的字節(jié)數(shù),d表示用整形數(shù)來解析,合起來的含義就是取4個字節(jié)的數(shù)據(jù)并用整形數(shù)來解釋。后臺模塊從前向后讀條目,當(dāng)遇到%號時,表示后面緊接著的是表示長度的數(shù)字,從消息體中的數(shù)據(jù)部分讀出相應(yīng)長度的字節(jié)數(shù),然后根據(jù)條目中數(shù)字后面的標(biāo)識符,用對應(yīng)的規(guī)則轉(zhuǎn)換這些數(shù)據(jù)。依次進(jìn)行,直到讀完條目,完整的消息就被還原了出來,最后打上時間戳,顯示給用戶。
用到的數(shù)據(jù)標(biāo)識種類


用戶可以根據(jù)不同系統(tǒng)的需要,編輯不同的解析表文件,并從后臺模塊載入解析表文件,從而可以達(dá)到通用的目的。
下面舉一個具體實(shí)例在前臺模塊的單片機(jī)部分用戶在需要打印的地方調(diào)用osOutputRunInfo,將需要打印的2個數(shù)據(jù)56和78作為參數(shù)傳入,將使用的運(yùn)行信息號1008作為參數(shù)傳入。在函數(shù)中,將當(dāng)前的時間戳5000加入,組合成幀,如下

然后發(fā)送到后臺。
在后臺模塊的解析表文件中有以下一條1008 PCF8591 Result%1d,%1d后臺模塊在收到1008號運(yùn)行信息后,第一步從解析表文件中查找到相關(guān)條目,第二步進(jìn)行解析,第三步增加時間戳,將最終結(jié)果顯示在屏幕上,如下表

從上表中對比可以看出,運(yùn)行信息號為1008的打印信息,發(fā)送了7個字節(jié)(包括運(yùn)行信息號,時間戳、長度、內(nèi)容等),后臺顯示為22個字節(jié)(不算時間戳),發(fā)送效率提高了22/7-1=2倍。如果說明文字更多,提高效率更高。
假如另一條信息號為1009的消息顯示的時間戳為5002,則兩條消息顯示的時間戳相差2,如果前臺每次時鐘中斷間隔10ms,則前臺發(fā)送這2條消息時相隔了20個毫秒。
權(quán)利要求
1.一種對單片機(jī)運(yùn)行信息進(jìn)行觀察的方法,在單片機(jī)中運(yùn)行一前臺模塊,在PC機(jī)中運(yùn)行一后臺模塊,兩者通過串口連接,其特征在于,在所述前臺模塊中,對需要在程序的某個部位打印運(yùn)行信息時,將運(yùn)行信息號和數(shù)據(jù)部分作為參數(shù)調(diào)用前臺模塊的入口函數(shù),并在該函數(shù)中封裝幀頭信息后,調(diào)用前后臺通訊函數(shù)將其發(fā)送到后臺模塊;發(fā)送函數(shù)將運(yùn)行信息幀放入底層驅(qū)動的消息發(fā)送隊(duì)列中,啟動發(fā)送中斷;在所述后臺模塊中,解析幀頭信息,并根據(jù)預(yù)先設(shè)置的對照表和規(guī)則還原成包含說明文字和數(shù)據(jù)內(nèi)容的完整的消息顯示出來。
2.權(quán)利要求1所述的對單片機(jī)運(yùn)行信息進(jìn)行觀察的方法,其特征在于,所述幀頭信息包括信息號、時間戳和信息長度。
3.權(quán)利要求1所述的對單片機(jī)運(yùn)行信息進(jìn)行觀察的方法,其特征在于,所述前后臺發(fā)送函數(shù)的發(fā)送方法為發(fā)送函數(shù)將運(yùn)行信息幀放入底層驅(qū)動的消息發(fā)送隊(duì)列中,然后啟動發(fā)送中斷;發(fā)送隊(duì)列采用單循環(huán)隊(duì)列方式進(jìn)行管理,發(fā)送中斷服務(wù)程序檢測到消息發(fā)送隊(duì)列不空,則采用中斷方式從隊(duì)列中取數(shù)據(jù)向外發(fā)送,直到發(fā)完為止。
4.權(quán)利要求1所述的對單片機(jī)運(yùn)行信息進(jìn)行觀察的方法,其特征在于,后臺模塊的工作過程為在開始運(yùn)行時,從文件中讀入對照表,在收到消息后,根據(jù)運(yùn)行信息在對照表中查找對應(yīng)的解析條目,用對應(yīng)的規(guī)則進(jìn)行解析,最后打上時間戳,顯示給用戶。
全文摘要
一種實(shí)現(xiàn)單片機(jī)運(yùn)行信息觀察的方法在單片機(jī)中運(yùn)行一前臺模塊,在PC機(jī)中運(yùn)行一后臺模塊,兩者通過串口連接;當(dāng)用戶需要在程序的某個部位打印運(yùn)行信息時,將運(yùn)行信息號和數(shù)據(jù)部分作為參數(shù)調(diào)用該模塊的入口函數(shù)。在該函數(shù)中封裝幀頭(運(yùn)行信息號、時間戳、長度),調(diào)用前后臺通訊函數(shù)發(fā)送。后臺系統(tǒng)在解析到收到的一幀為運(yùn)行信息觀察的消息后,送到相應(yīng)后臺模塊處理。后臺模塊首先解析幀頭,取出運(yùn)行信息號和時間戳。根據(jù)解析方法的對照表,還原成包含說明文字和數(shù)據(jù)內(nèi)容的完整消息,連同時間戳顯示給用戶。由于前臺每一次時鐘中斷中時間戳加一,所以根據(jù)時鐘中斷一次的具體時間,用戶可以由時間戳計算出各條消息之間的時序關(guān)系。
文檔編號G06F11/00GK1545029SQ20031011219
公開日2004年11月10日 申請日期2003年11月14日 優(yōu)先權(quán)日2003年11月14日
發(fā)明者周志雄, 張彥春, 謝志雄, 崔卓 申請人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1