閱讀須知:純粹是本人啊Jun作爲初學者的筆記和個人對其中知識的複習,大神請繞道。
實驗01:VS2015 對象瀏覽器的使用、簡單調試和斷點使用。
實驗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完成,如果有疑問或者在哪些地方有錯誤的,歡迎大家指出,共同學習,共同進步。
實驗01:VS2015 對象瀏覽器的使用、簡單調試和斷點使用。
實驗05:RS485串口通訊,串口指令的收發應用,完成串口基礎功能,github地址:實驗05
實驗06:窗體應用的最小化在Windows狀態欄中顯示托盤圖標
實驗07:Windows的註冊表的基本使用方法,文件流保存爲文本文件基礎用法
實驗08:利用GDI+技術生成簡單驗證碼,類似excel的數據折線圖、並保存爲圖片
實驗09:Access數據庫的創建、表創建、MD5加密,數據、圖片保存在數據庫的用法
實驗10:將DataGridView表單數據保存爲excel文件,表單的基本格式化
包含實驗06~實驗10的功能:github地址:實驗10