C 學習 專案實戰之串列埠通訊工具一

2021-10-01 15:31:24 字數 2569 閱讀 1635

寫在結尾

有段時間沒更新文章了,剛開始考事業編制複習,結果也沒考過,後來公司有乙個比較急的專案,花了大概乙個月左右的時間,想著忙完後更新,忙完後突發奇想想要去考研,就買了一些複習的書,複習了半個月才知道,報名時間早過了,要報名也要等到明年**月份了吧,所以開始慢慢恢復文章的更新

用**實現串列埠通訊其實很簡單,上**

serialport serialport =

newserialport()

;serialport.portname =

"com10"

;serialport.baudrate =

9600

;serialport.stopbits = stopbits.one;

serialport.databits =8;

serialport.parity = parity.none;

serialport.readtimeout =-1

;serialport.rtsenable =

true

;serialport.datareceived +=

newserialdatareceivedeventhandler

(serialport_datareceived)

;

簡單吧,例項化串列埠類,設定基礎引數:串口號,波特率,資料位,停止位,校驗方式(順序不對應,不要照抄)前三個引數比較好理解,串口號就是串列埠的id,波特率就是資料傳輸的速度,資料位就是乙個資料幾位,後兩個難理解的我就直接跳過了,因為這些引數都是硬體設定好提供的,跟你的**關係不大。重要的是最後兩段**,rtsenable的作用是啟用請求傳送,datareceived則是接受資料事件。

然後就open()就行了,如果打不開有兩種可能,一:串列埠被占用了,二:串列埠無效,也就是說你的引數設定的有問題。如果開啟成功了,那麼恭喜你,你已經是乙個精通串列埠通訊的大神了(滑稽)。還有就是別忘記用完之後close(),做個有始有終的人。

private

void

send

(string command)

catch

(exception ex)

}else

}

路人甲:這**有點多,看不懂啊

我:那就…

system.text.utf8encoding utf8 =

newsystem.text.utf8encoding()

;byte[

] sendcommands = utf8.

getbytes

("command"

+"\r\n");

serialport.

write

(sendcommands,

0, sendcommands.length)

;

這三段**也就涉及到了,我之前沒說的關於串列埠通訊的又一大特點,串列埠通訊是通過位元組來通訊的,乙個位元組兩位,所以前面才要設定資料位數,八位代表乙個完整的資料有八位,也就是四個位元組。(這是我設定的,不代表所有的)

另乙個要點就是每段命令結尾都要加上"\r\n",具體原理我也不知道,我的理解,這是乙個約定俗成命令結束標誌位,因為串列埠通訊是通過位元組來通訊的,沒有乙個標誌位,你就不能確定這部分位元組是不是一段完整的命令。

接受資料也很簡單,我們之前設定引數的同時建立了乙個,接受事件

private

void

serialport_datareceived

(object sender, serialdatareceivedeventargs e)

catch

(exception ex)

}

這裡我就不簡化**了,我覺的如果你要成為乙個程式設計師,try catch是一定要會用的,特別是寫一些未知結果的**,這會大大的提高**的可執行性。

接下來講解一下主要的**,bytestoread屬性表示快取區有多少個位元組讓上位機讀,然後通過read(byte buffer, int offset, int count);來讀取這些位元組,之後要做的就是處理這些位元組,我這邊已知裝置上傳的資料時字串型別的,所以通過getstring直接轉型別就可以了。這樣乙個完整的串列埠通訊就完成了,怎麼樣簡單吧!

結尾和大家聊一下考研的事情吧,我工作一年半,但真正開始接觸c#大概半年事件左右,換了兩份工作,慢慢感覺學歷對乙個人的影響還是挺大的,所以就想著能不能嘗試一下考研,開始也就是三分鐘熱度,什麼都沒了解,買了幾本考研的書開始看,但是學著學著問題就來了,考研分全職在職,全職就是跟讀書一樣,基本上沒時間工作了,在職比較寬鬆,但是學費卻是全職的十倍左右,我反思了一下自己的情況,好像兩種都不太合適,因為一些財務上的不自由,我大概有乙個禮拜的迷茫期吧,覺得好像不考研的話,工作就這樣了,慢慢靠經驗累積,要麼就是考事業編制求穩定,但總覺的學歷像乙個魚刺一樣卡在我的喉嚨裡,有點難受,總感覺跟那些學歷比我好的人有差距,但是考吧,首先難考不說,就算萬幸考上了能讀完這個研究生麼。。。然後我就放棄了,該幹嘛幹嘛,直到今天上午我才想明白,我一直把考研當作乙個結果,一直在想有沒有能力承擔這個結果,其實考研是乙個過程,乙個提高自己,建立自信的過程,就算最後考沒考上我覺得都是對我自己的一種歷練。加油把,同學們!

C 學習 專案實戰之串列埠通訊工具三

寫在結尾 不學不知道,一學嚇一跳,乙個禮拜之前做完了這個串列埠通訊工具,感覺自己牛的不行,因為工作原因,一直沒做實況測試,所以一直沉浸在我是高手的感覺中。這兩天做了一些實況測試,我的媽,問題一大堆。因為測試的失敗,我又花了乙個小時,找到serialport的官方文件並仔細的閱讀了一邊,其實大多數方法...

zigbee學習之串列埠通訊

糾錯 u0dbuf傳送緩衝區,但是我在中文手冊手冊上沒有找的到這個暫存器,手冊上只有u0buf,u0buf編譯會出錯,我去查了下英文手冊,才發現原來是翻譯人員翻譯錯誤了,只有u0dbuf,建議看英文手冊。串列埠通訊 p 2 接收端 p 3傳送端 微控制器和電腦的電頻不同,通過pl2303轉換,這是針...

C 串列埠通訊學習筆記(7 17)

分布類 partial class 類的宣告可以分割成幾個分部類的宣告。每個分部類的宣告都含有一些類成員的宣告。類的分部類宣告可以在同一檔案中也可以在不同檔案中。每個區域性宣告必須被標為partial class,而不是單獨的關鍵字class,分部類宣告看起來和普通類宣告相同,除了那個附加型別修飾符...