日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

除BUG记

發布時間:2023/12/10 编程问答 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 除BUG记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我負責一個模塊,功能比較簡單,就是測量環境溫、濕度,外加控制空調開/關、溫度設定。就是這么幾個功能,就反復試驗、修改,才達到穩定。在調試時,出現各種各樣的BUG,一些是編程時候出現的語法錯誤,一些是功能設計不合理的原因。其中有個BUG折騰了好久,今天終于發現原因,這還是別人幫助我才解決的。下面看看這除BUG的過程:

???

空調通訊方面問題比較多:

1、起初是有時候出現空調與模塊完全不能通訊的現象;

2、出現空調與模塊單邊通訊的現象,即空調收到模塊的指令,但模塊沒有收到空調返回的信息;

3、出現空調與模塊首次上電時,情況2發生,但不重啟的情況時,第二次之后完全通訊成功(雙邊通訊)的現象。

針對情況一,通過請教OMRON公司的技術人員,我了解到溫控器接收指令與發送指令之間必須有一定的時間間隔,大概有500ms就可以了。所以我在發送數據程序中加入了500ms的延時指令,問題1情況不在出現,但隨之而來的是問題2的頻繁出現。這個問題困擾了我很長時間。在現場我做了如下試驗:

首先,斷開溫控器與模塊之間的RS485連接,然后通過usb轉串口線把溫控器與調試所用的筆記本連接起來,然后通過通過串口調試助手調試溫控器,目的是為了驗證溫控器是否能夠正常工作。經過試驗,結果表明溫控器完全能夠正常工作。電氣連接示意圖如圖1

?

1 溫控器與上位機連接

接著,斷開筆記本與溫控器的連接,然后通過usb轉串口線把模塊與調試所用的筆記本連接起來,然后通過串口調試助手調試模塊,目的是為了測試模塊軟件是否正常。經過試驗,結果表明模塊能夠成功接收到串口助手發送過來的數據。電氣連接示意圖如圖2

2? 模塊與上位機連接

最后,重新連接溫控器與模塊,上電,設置溫度,情況2再次出現。電氣連接示意圖如圖3

3 溫控器與模塊連接

同時連接溫控器、模塊、筆記本時候,則溫控器與模塊之間能夠夠正常通信。電氣連接示意圖如圖4

4 溫控器與模塊、上位機連接

到此初步估計是由于RS485接線問題,經過詢問OMRON公司技術人員可知,11時,RS485總線終端電阻(約為120歐姆)可有可無。模塊上接有終端電阻,當我嘗試去掉該電阻時,針對圖3情況時,問題2得到解決。但出現問題3。

經過考慮,在模塊上電初始化中,我加入了向空調發送“開空調”程序,這段程序能夠保證每次模塊上電時都要重新開啟空調,以保證空調隨時進行接收別的指令(當空調處于“關”時,它是不工作的,即使空調已經上電)。問題3得以解決。

到這里,本以為可以結束了,其實還有很大的問題,如果在模塊上電之后才開空調的話,那么那個初始化中加入的指令就不會起作用,還是會出現問題3。這個方法治標不治本,后來,在一同事的幫助下,終于從根本上解決的問題。問題是這樣解決的,只在一個地方加了這么一條語句。

void beginSend(void)
{?
?uint8 i = 0;
?sendEnable();?//設為發送??
?TXSTAbits.TXEN = 1; //使能發送?
??? for(i=0; i< sendCount; i++)
??? {
?? TXREG? = sendBuf[i];??
?? while (!TXSTAbits.TRMT);?? //TSR為空時置TRMT = 1
??? }
??? receEnable();??? //設為接收
??? sendCount = 0;
??? receCount = 0;??? //這個很重要
??? TXSTAbits.TXEN = 0;
??? Delay10KTCYx(100);?? //延時500ms????
}

關于這個函數就不多解釋了。對比我這樣、那樣的測試,還是沒有找到錯誤的根本原因,人家只是看了一遍調試報告,就立馬找出了問題的所在。這固然有經驗的問題,但更多的是我自身對于問題的分析不夠冷靜、思維不夠嚴謹。還沒有形成自己的一套發現錯誤、分析錯誤、解決錯誤的思維體系。在遇到“比較怪”的情況時,就亂了方陣,試圖用窮舉法把可能出現錯誤的地方都測試一遍,這大大消耗了時間,并且本質上講并不能對解決問題有效的幫助。反而可能因為混亂一通的測試,遇到更多別的問題,最終偏離了正確解決問題的道路。

發現并找到一種合乎科學的編程習慣、除BUG思路是以后工作時的重中之重。

?

?

?

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的除BUG记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。