.NET編程技術——實驗04:RS485串口調試、基本控件使用、CRC算法應用

閱讀須知:純粹是本人啊Jun作爲初學者的筆記和個人對其中知識的複習,大神請繞道。微笑



實驗01:VS2015 對象瀏覽器的使用、簡單調試和斷點使用。

實驗04:RS485串口調試、基本控件使用、CRC算法應用

實驗05:RS485串口通訊,串口指令的收發應用,完成串口基礎功能,github地址:實驗05

實驗06:窗體應用的最小化在Windows狀態欄中顯示托盤圖標

實驗07:Windows的註冊表的基本使用方法,文件流保存爲文本文件基礎用法

實驗08:利用GDI+技術生成簡單驗證碼,類似excel的數據折線圖、並保存爲圖片

實驗09:Access數據庫的創建、表創建、MD5加密,數據、圖片保存在數據庫的用法

實驗10:將DataGridView表單數據保存爲excel文件,表單的基本格式化


包含實驗06~實驗10的功能:github地址:實驗10


前面的實驗02和實驗03很簡單,覺得沒什麼必要寫,就是對着書上的代碼抄,所以想了想,還是沒有寫出來,直接跳到實驗04了。


其實這門課開始的時候,老師就說打算在學期末以項目爲考覈內容,然後說要做一個串口調試助手和溫控監控系統,所以軟硬件結合了,所以想要做串口功能的還是有必要學習一下的,至少做起來不會從0開始。想起來,軟件工程開的課基本都是純軟件系列的課,實驗也是;但是這個老師總是出乎意料啊,不按套路走,作爲一名學生,有時也是需要換換口味才行。


好了,那麼先看一下實驗04的實驗內容

1、根據產品說明書,識別出溫度感應器和485USB轉換器,並接好線;

2、連上電腦,安裝驅動,然後在設備管理器中找到該設備,並檢查它的端口參數;

3、仔細閱讀該產品通訊的Modbus-RTS協議,獲取發送指令,理解指令中每個字節的含義;

4、通過Internet,瞭解CRC校驗的背景、原理和具體算法,自行建立一個Windows Form項目,實現CRC校驗算法,並需要和說明書上的一致;

5、從網上查找一款自己認爲最好的串口調試助手軟件,通過串口調試助手進行數據的收發實驗,基本要求要有手動收發和自動收發,數據格式要有16進制和ASCII碼,有指令存儲等功能;

6、能根據通訊協議,分析出收回數據中的溫度值;


可能電子系的同學對於通信協議會比較懂一些,他們一般玩51單片機和STM32 都會用到很多外設,然後進行配置都少不了串口調試助手,ok,那先來介紹一款比較好用的串口調試助手 —> 友善串口調試助手 , 界面做起來非常友好,大部分同學都已這個串口調試助手爲樣板,UI基本跟這個類似。


我們先前在淘寶統一買了RSDS5單溫度傳感器,溫度傳感器鏈接,價格略貴,50和一個USB轉RS485轉換頭,轉換頭。。。老師說期末就考這個,所以不得不買。。這個溫度傳感器主要還是防水的,我想遲點放在魚缸裏測完溫度就返回數據,直接在手機上可以看就好了。






那買回來了,首先在電腦就要下載RS485的驅動,最初說win10是不支持的,但是一些同學說了直接在魯大師下載就ok了,就是先插入上面那個USB轉RS485在電腦上,然後打開魯大師的驅動檢測就可以發現一個未知驅動,然後安裝這個未知驅動即可。




安裝驅動後,打開電腦的“設備管理器”就可以看到COM3,就是這個端口了。一般要記住是COM幾,不同電腦會有不同的COM編號。


ok,這些工作都搞掂後,那就來看題作答吧,第 1 和 第 2 題已經做完了這些步驟,看一下第 3 題


3、仔細閱讀該產品通訊的Modbus-RTS協議,獲取發送指令,理解指令中每個字節的含義;




這些指令我就不一一介紹了,可以在網上找資料。那麼來看一下第 4 題。


4、通過Internet,瞭解CRC校驗的背景、原理和具體算法,自行建立一個Windows Form項目,實現CRC校驗算法,並需要和說明書上的一致;


CRC是一種校驗方法,我也不多做介紹,主要做的是建立一個Windows Form項目,實現校驗算法纔是主要的。













那控件這一塊暫時講到這裏,之後還會有更多控件類型,慢慢理解這些用法,有人說:“拖控件的程序員

不是一名好的程序員”,但是我覺得對於 UI 沒有太在意的這一塊,拖曳控件還是很迅速就可以完成想要的

用戶界面,暫且不說 UI ,之後會有實驗會用到C#的GUI,我覺得吧,GUI是很折磨人的一種技能,

哎呀,有點不喜歡幹這個。


那來看一下CRC的校驗算法,網上有很多這些算法,主要有兩種,一種是數組匹配,另一種就是純計算的。

我用的是純計算的算法,數組匹配可以自行網上找,代碼如下


public  string CRCCalc(string data)  //CRC檢驗算法
{
    string[] datas = data.Split(' ');
    List<byte> bytedata = new List<byte>();

    foreach (string str in datas)
    {
        bytedata.Add(byte.Parse(str, System.Globalization.NumberStyles.AllowHexSpecifier));
    }
    byte[] crcbuf = bytedata.ToArray();
    //計算並填寫CRC校驗碼
    int crc = 0xffff;
    int len = crcbuf.Length;
    for (int n = 0; n < len; n++)
    {
        byte i;
        crc = crc ^ crcbuf[n];
        for (i = 0; i < 8; i++)
        {
            int TT;
            TT = crc & 1;
            crc = crc >> 1;
            crc = crc & 0x7fff;
            if (TT == 1)
            {
                crc = crc ^ 0xa001;
            }
            crc = crc & 0xffff;
        }
    }
    string[] redata = new string[2];
    redata[1] = Convert.ToString((byte)((crc >> 8) & 0xff), 16);
    redata[0] = Convert.ToString((byte)((crc & 0xff)), 16);
    if (redata[1].Length < 2)
        redata[1] = "0" + redata[1];
    if (redata[0].Length < 2)
        redata[0] = "0" + redata[0];

    return redata[0] + " " + redata[1];
}

ok,寫完CRC校驗的類了,那麼控件怎麼調用呢,很明顯上面的 button1_Click 事件就有代碼了。再看一波,

private void button1_Click(object sender, EventArgs e)
{
    string expression = this.textBox1.Text.Trim();
    this.textBox2.Text = this.CRCCalc(expression).ToString();//這裏就調用了CRCCalc校驗類
}



ok,點擊運行,看一下結果,輸入上面的發送指令:01 03 00 00 00 01,點擊檢驗,就會出現結果:84 0a,成功了。 



5、從網上查找一款自己認爲最好的串口調試助手軟件,通過串口調試助手進行數據的收發實驗,基本要求要有手動收發和自動收發,數據格式要有16進制和ASCII碼,有指令存儲等功能;


我找到的是友善串口調試助手,上面就有鏈接,可以自行下載,現在我就用我自己做好的串口調試助手演示一個吧。




看完是不是一下子就有動力學下去了,這個可是我做了一個學期的作品來的。雖然界面簡陋了一些,但是多點贊可以多支持哦。吐舌頭


實驗04完成奮鬥,如果有疑問或者在哪些地方有錯誤的,歡迎大家指出,共同學習,共同進步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章