使用TCP 串列埠與板子進行網路通訊

2021-10-07 06:30:39 字數 1467 閱讀 7283

最近做了乙個嵌入式的project,大概要求就是做乙個client端,乙個sensor端,兩者通過tcp/udp進行通訊,然後在client端輸入不同的命令sensor需做出不同的處理,此處理可以用模擬的方法進行,比如要做乙個溫度感測器,則可以在sensor裡寫個隨機數生成器,最後將client的c**封裝成dll,做出乙個gui介面程式。

我們的主要解決方法如下:

1.sensor和client端的通訊我們第一次採用的是udp,但由於tcp會通過三次握手建立連線,因此相比udp更加可靠,而且本專案要實現的是溫度採集,並不需要傳輸大量資料,所以對傳輸速度要求並不是太高。鑑於以上情況,我們採用了tcp通訊(我其實懶得改,但趙同學堅持採用tcp,最後也是由趙同學完成了這部份任務,在此特別感謝趙同學的辛苦付出,哈哈)。

2.關於溫度採集,剛開始我們採用的是產生隨機數的方法得到溫度值,但因為我寒假的時候剛好買了個51,上面恰好帶有ds18b20,所以奈不住想試試的心,就在sensor裡呼叫api寫了個串列埠跟板子進行通訊。

3.gui,此處不是我做的,等我同學寫出來後我再更新,哈哈

然後這個project還有兩個不足:一是我用的51板子,而大多數同學都只有老師給的stm32,所以後面有時間的話我會做個32的程式來,二是序列通訊原理的可靠性改進,主要是幀格式定義、組裝與解析這一部分還沒有做,打算在第三次迭代時把這部分做了,然後我會將原始碼update到gitee上,後面的改進也會及時更新到上面去,大家有興趣的可以看看。

gitee連線

最後直觀顯示一下我們實現的功能:

(1)第一次輸入除"start"之外的命令時,會提示「please press 『start』」,直到輸入為"start",顯示「sensor start!」,同時板子上的d1亮,表示開啟成功

(2)輸入過"start"後,如果輸入"init",則會對板子初始化,即數碼管全滅,若輸入"read",板子上的數碼管會顯示溫度(因為最近天氣比較冷,所以預設溫度大於24度就報警),同時也會把溫度值送給client端,若輸入其他命令,則顯示「command dose not exist"

(3)若輸入"quit",則顯示"quit!",同時數碼管和d1燈全滅

乙個WCF使用TCP協議進行通協的例子

之前寫的例子都是基於http協議的,但在區域網環境下,我希望可以獲取更高的傳輸效能和更低的服務端資源占用,所以我嘗試使用tcp協議來進行傳輸。網上的例子都講得非常複雜,但終於讓我找到乙個簡單的實現方法,記錄如下 一 建立wcf服務 首先建立乙個wcf服務庫,名稱為 wcfservice 解決方案名稱...

網路tcp基本概念與使用

socket 簡稱套接字 是程序間通訊的一種方式,它與其他程序間通訊的乙個主要不同是 它能實現不同主機間的程序間通訊,socket屬於全雙工。關於建立套接字的引數說明 socket.socket addressfamily,type address family 可以選擇 af inet 用於 in...

使用wireshark進行網路報文抓取與分析

wireshark 前稱ethereal 是乙個免費的網路報文分析軟體。網路報文分析軟體的功能是抓取網路報文,並逐層顯示報文中各欄位取值。網路報文分析軟體有個形象的名字 嗅探工具 像乙隻獵狗,忠實地守候在介面旁,抓獲進出該進口的報文,分析其中攜帶的資訊,判斷是否有異常,是網路故障原因分析的乙個有力工...