微機原理與系統設計筆記8 | 可編程並行介面晶元8255A&&可編程定時器、計時器晶元8253、8254

来源:https://www.cnblogs.com/Roboduster/archive/2023/02/22/17143211.html
-Advertisement-
Play Games

本部分介紹可編程並行介面晶元8255A&&可編程定時器、計時器晶元8253、8254,增加了一些具體系統的設計案例。 ...



  • 打算整理彙編語言與介面微機這方面的學習記錄。本部分介紹可編程並行介面晶元8255A&&可編程定時器、計時器晶元8253、8254,增加了一些具體系統的設計案例。

  • 參考資料

    • 西電《微機原理與系統設計》周佳社
    • 西交《微機原理與介面技術》
    • 課本《彙編語言與介面技術》王讓定
    • 小甲魚《彙編語言》

Part1 8255A

1. 有關並行介面

第一章就已經提過,外設和CPU之間不能直接進行數據交換,要增加介面電路,並行介面就是數據在多根線上同時傳送。並行介面的特點:

  • 具有埠寄存器
  • 與CPU和外設進行聯絡的控制端
  • 中斷控制端
  • 可編程器件提供多種工作方式供編程選擇。
1

常用的並行介面晶元是Intel 8255A。串列介面晶元是8250和8251。

2. 8255A的結構及其功能

2
  • PA0~PA7:埠A,連接外設

  • PC0~PC7:埠C,連接外設

  • PB0~PB7:埠B,連接外設

    這幾個埠輸入還是輸出是可編程的。

  • D0~D7:數據匯流排(雙向),連接CPU

  • VCC、GND、CSfei、RDfei、WRfei耳熟能詳了

  • 工作方式控制寄存器,可以OUT數據線寫,控制晶元工作方式

  • A0、A1:埠地址線,連接CPU

    有四個埠,A B C埠+ 工作方式控制寄存器

    CSfei A0 A1
    0 0 0 PA
    0 0 1 PB
    0 1 0 PC
    0 1 1 內部控制寄存器
    1 / / /

    因此也可以看出8086系統中,8255A的A1接地址線A2,A0接A1,高12位參加解碼。

    如果地址是偶地址,地址線A0也參加解碼,D0D7連接低八位數據線。奇地址則BHEfei參加解碼,D0D7連接高8位數據線。

  • RESET,複位端,高電平有效

    設備複位應當早於CPU複位。

3. 8255A工作方式及其控制字

3.1 工作方式

  • 工作方式0:無聯絡信號的輸入/輸出方式,等效於無條件輸入輸出方式,PA PB PC三個埠均可工作在工作方式0。

  • 工作方式1:有聯絡信號的輸入輸出方式,相當於查詢法、中斷法。只有PA和PB可工作在工作方式1。PC口來作聯絡信號線(A組使用高四位的PC,B組使用低四位PC)

  • 工作方式2:有聯絡信號的雙向方式,準雙向(半雙工),只有PA口可以工作在工作方式2。PB PC用於聯絡。

    • 註意,工作方式1是單向的。
    • PC可以進行位管理,也就是一位一位的賦值,而PB PA沒有這個功能

3.2 控制字

就是操作8255A內部的工作方式寄存器,類似於8259A的操作:

  • 首先CSfei=0,A0 A1=1 1,選中該寄存器埠

  • D7=1,說明要進行工作方式的選擇,也就是在寫控制字

    如果D7=0,8255A認為正在進行PC埠的位管理。此時D6D4無效,D3D1編碼PC的每一位。D0位表示將編碼PC的位賦予D0的值。

  • D6~D5:控制A組工作方式

    編碼 方式
    0 0 方式0
    0 1 方式1
    1 x 方式2
  • D4:設置A組的輸入輸出方向,0為輸出,1為輸入。

  • D3:控制A組的PC7~PC4的方向,0為輸出,1為輸入。

  • D2:控制B組的工作方式(只有兩種工作方式),0 方式0,1 方式1

  • D1:B組中PB口的方向,0 輸出,1 輸出

  • D0:控制B組的PC3~PC0的方向,0為輸出,1為輸入。


下麵講了P312頁的10.3:

  • A輸出,B輸入,工作在方式1。實現埠C低四位輸入的值從高4位輸出。

    可知控制字 D7~D0 應為:1000_0011

  • ;選中控制寄存器,寫入控制字
    MOV DX, 303H 
    MOV AL, 83H
    OUT DX, AL
    ; 選中PC埠
    MOV DX, 302H
    IN AL, DX
    MOV CL,4
    SHL AL,CL ; 左移4次,低四位移到高四位了
    OUT DX, AL; 輸出PC埠值
    

3.3 工作方式1

這部分好複雜啊,但是不是很難懂。先聽一遍再慢慢梳理。

再詳細講講工作方式1。此時三個埠的信號線分成了A B兩組。PC7PC4用作A組的聯絡信號,PC3PC0用作B組聯絡信號。

A. 輸入

輸入:來看下麵的圖,先以PB埠為例,(其實PA PB兩者除了控制字其他工作方式都一樣)

3
  • 結合下麵圖片中的時序來看。

  • 數據線PB0~PB7上有數據時,還要CPU知道,而外設通過STBfei將有效數據信號(選通信號,一個負脈衝,接在PC2信號線上)到來後,此時8255A將數據拿進來存放到輸入緩衝器。

  • 如果輸入緩衝器滿了,則應該告知設備不能再發送數據了,所以此時IBF信號(緩衝器滿信號,通過PC1輸出)置於高電平,告知設備。

    註意A組和B組各有一個輸入緩衝器。

    4
  • CPU一方可以通過兩種方式得知輸入緩衝器滿了。

    • 查詢法:可以通過RD埠讀IBF(其實是讀PC埠狀態,看PC1),如果IBF=1,則可以實施IN指令讀走數據。IBF變低,此時8255A就可以繼續接收外設的數據。

    • 中斷法:B組通過PC0-INTRB線向CPU發送中斷信號

      需要當8255A處於中斷允許狀態:見上圖結構的INTEB=1則中斷允許。RESET時INTEB清0。

      當IBFB和INTEB同時為1,則通過PC0發送中斷請求(1,高電平了)。CPU響應後進入中斷服務子程式讀出數據,再IRET返回。

      下麵看看INTE如何編程式控制制

      MOV DX,303H
      MOV AL,1XXXX110B;可以當做86H,也就是無效位都當0
      OUT DX,AL
      
      ;對PC2位置1,達到INTEB=1目的
      MOV AL,0xxx0101B
      OUT DX,AL;藉助<位管理>達到目的
      
      ...;一個小迴圈,等待中斷
      ; 中斷產生,CPU響應進入服務程式
      ; 讀出數據
      ; IRET返回
      

PA輸入與上面類似。只不過用到的硬體是另一組。值得註意的是,A組的中斷法那一步中,輸出的INTR連接的是PC3(理論上分給了B組)。這是因為A組分到的四根C線,兩根用於方式1的輸入信號通訊(STB和IBF信號),兩根用於方式1的輸出信號通訊,已經用光了。這也是PB埠不能工作在方式2的原因,線不夠用了。

A組工作在方式1富餘的PC6和PC7,可以作為兩根單獨的IO線來使用。

還有一點,A組的中斷屏蔽觸發器INTEA設置的位管理還有一點不同:可見輸入輸出的位管理的相應位不同。

5

B. 輸出

輸出:先看圖

6

  • 當CPU將數據輸出到PA埠,輸出緩衝器滿,8255A通過OBFfei埠低電平通知輸出設備緩衝器滿,同時OBFfei作為輸出設備的選通信號(STBfei)。

  • 設備收到選通信號,回答ACKfei信號(一個負脈衝),8255A收到後,OBFfei就又變高了。

    PC7:OBFfei

    PC6:ACKfei

  • 如何得知輸出緩衝器的情況?應當通過測試OBFfei信號是高電平來知道它是空的。這是查詢法。

  • 中斷法則8255A通過PC3(A組)輸出INTRA高電平信號。這個信號的產生過程與前面類似:

    • 編程設置INTEA為1,允許中斷。
    • 當OBFfei為1(空),則向中斷控制器 8259A/CPU 發送中斷
  • 與輸入對稱。空閑的PC5和PC4充當IO信號線。

3.4 工作方式二

只有PA埠可以工作在工作方式2:雙向方式。這就是方式1中A組輸入和輸出的綜合。

7

還剩PC0~PC2三根線,可以作為空閑IO線。

3.5 讀埠C狀態

方式0中,PC是數據埠,而在方式1和方式2中,C部分作為聯絡信號,所以讀取埠C,可以的值聯絡信號線的狀態,進而確定8255A當前的狀態。

8

4. 8255A與系統匯流排的連接

五種系統匯流排:8086最大模式、最小模式,8088最大模式、最小模式,PC/XT系統。

4.1 8086最小方式/最大方式

9
  • 少了RESET,與CPU的reset相連
10
  • 註意,上圖10.13的解碼電路少了IOR和IOW,應該加上(否則存儲器和IO的數據打架)
  • 註意,上面兩個圖預設都是偶地址

4.2 PC/XT匯流排

基本相同,可以略過。

11

5. 8255A的應用

  • A、B、C都工作在方式0輸出時,則相當於3片74LS374
  • A、B、C都工作在方式0輸入時,相當於3片74LS245/74LS244。

講解了P306 例10.1。

12
  • 假設採用A埠輸入,B埠輸出,且採取方式0。與匯流排連接關係如下:

    13

    解碼電路的地址為:0000_0010_1000_0xx,a0,同時還加上了M/IOfei

    上圖少畫了RESET。

  • A:方式0輸入,B:方式0輸出

    ; 輸入
    MOV DX,287H
    MOV AL,10010000B
    OUT DX, AL
    ; 輸出
    MOV DX,281H
    IN AL,DX
    NOT AL;二極體的電路決定0亮1滅,所以取個反
    MOV DX,285H
    OUT DX,AL
    ;如果加上延時再迴圈,就是亮滅亮滅...
    

P307的例10.3:

14
  • 首先設計硬體電路:

    15
  • 解碼電路的地址:0000_0000_0010_0XX0

  • 上圖缺少了IOR和IOW的解碼。應當與一下一起進入或門。

  • PA工作在方式0輸出,產生波形其實就是給0給1再加迴圈罷了。

; 設置A組方式0輸出
MOV AL,1000XXXX;可以用80H
;可以間接定址也可以直接定址
OUT 26H,AL

L2: 
	XOR AL,AL ;清零
	OUT 20H,AL;0000輸出
	MOV CX, 6
L1:
	INC AL
	OUT 20H, AL;0001輸出
	LOOP L1
	MOV AL,0FH
	OUT 20H,AL;1111H
	JMP L2

Part2 8253、8254

可編程計數器8253,8254的編程和應用。

1. 8253引腳功能

一個8253內部有3個16位計數器(計數器0~2),各有3個引腳:GAT0,CLK0,OUT0

  • CLK是輸入的計數時鐘信號,用來分頻,GAT用來控制是否計數,OUT 定時時間到後,輸出(或者說分頻輸出)。
  • 8253對時鐘信號CLK是在下降沿同步計數的。
  • 三個計數器可以級聯工作,以達到更大的分頻。
  • 16位計數器可以當8位計數器,可以選擇高8位或低8位。
  • 每個計數器6個工作方式。

下麵是埠的問題:每個計數器都對應1個狀態控制寄存器,所以一共3個寄存器埠,但這3個埠共用一個地址。

16 17
  • A1 A0:片內定址

  • CSfei:片選信號

    CSfei A1 A0 功能
    0 0 0 對計數器0操作
    此時OUT寫,就是計數器0的計數初值
    此時IN讀,則可以讀當前的計數值
    0 0 1 對計數器1操作
    0 1 0 對計數器2操作
    0 1 1 對內部方式控制寄存器操作
    • 註意,這裡 1 1 表示選中控制寄存器,而8253內部有3個控制寄存器,所以需要額外的標誌位來確定。

    • D7 D6:

      D7 D6 標誌
      0 0 控制寄存器1
      0 1 控制寄存器2
      1 0 控制寄存器3
      1 1 非法(8253)
      鎖存當前狀態值(8254)

8253和8254的區別:

  • 可接受的時鐘頻率不同,8254更大
  • 8254內部有狀態寄存器(因此上面表中需要鎖存),8253沒有
  • 沒有RESET.

2. 8253的內部組成與計數原理

以計數器0為例:

17
  • 首先有一個方式控制字寄存器,可以通過數據線寫入來控制。確定工作方式。

  • 計數初值寄存器CR(16位),所以數據線要寫兩次,先寫低八位,後寫高8位

  • 減法計數器CE,在寫入初值後的第一個時鐘下降沿(CLK信號),8253自動將CR值打入CE,如果GATE有效,CE就對外部CLK進行減法計數

    方式0~5,除了方式3,這個減法計數都是-1計數,而方式3是-2計數。

  • OL輸出鎖存器(16位):其值跟隨CE在變。可以通過IN指令將OL值讀出來(讀兩次),瞭解CE減到多少了。不過讀之前要向8253發送OL鎖存命令。讀走後OL開鎖,繼續跟著CE改變。

  • 狀態寄存器:寄存該計數器當前的狀態。可以IN讀出(也需要先鎖存)。8253內部沒有這個寄存器,8254有。

    小總結:A1-A0-CS 以信號1-1-0選中後,寫是寫到某個(這個某要看D7和D6)計數器的方式控制寄存器,讀讀的是計數器的狀態寄存器

3. 8253工作方式以及內部含義

19
  • 首先D7和D6已經講過了,用於選擇計數器。

    D7 D6 標誌
    0 0 控制寄存器1
    0 1 控制寄存器2
    1 0 控制寄存器3
    1 1 非法(8253)
    鎖存當前狀態值(8254)
  • D3 D2 D1:用於進行工作方式選擇,000101表示方式1方式5,110和111還表示方式2和方式3。(重點就是2和3)

    D3 D2 D1 方式 解釋
    0 0 0 0 CE減到0則停止,請求中斷
    0 0 1 1 單脈衝形成
    x 1 0 2 分頻器
    x 1 1 3 方波產生器
    1 0 0 4 選通信號產生,軟體觸發
    1 0 1 5 選通信號產生,硬體觸發
  • D0:計數進位選擇,D0=1表示計數初值採取BCD格式,D0=0表示二進位格式

  • D4 D5:表示讀寫格式

    D5 D4 解釋
    0 0 向OL發鎖存命令,需要結合D6 D7一起選中某個計數器的OL
    0 1 對低八位進行讀寫,8位計數器
    1 0 對高八位進行讀寫,8位計數器
    1 1 將選中的計數器設置為16位計數器

4. 8253工作方式

4.1 方式0

計數達到終值而發出中斷,舉例。假設占用300H~303H埠地址,以計數器0為例:

MOV DX,303H;方式控制寄存器
MOV AL,00110000B;選中00計數器,設置為16位計數器11,方式000,二進位計數0
OUT DX,AL;30H寫到計數器0的方式控制寄存器了
;寫信號一到來,工作方式確定,OUT引腳隨之確定,變為低電平。
;下麵向計數器0(對應埠300H)寫計數初值0005H
L2:MOV DX,300H
	MOV AX,0005H
	OUT DX, AL; 第二個寫信號,寫CR_LO
	XCHG AH,AL
	OUT DX, AL; 第三個寫信號,寫CR_H0

;初值寫完,OUT保持低電平
;CLK的上升沿時刻採集GATE信息,若為高電平,則可以計數。在下降沿時刻,CR值打入CE減法計數器。
;此後每到一個時鐘下降沿,CE-1
;CE減到0,OUT自動變為高電平,該上升沿可以向8259A提出中斷請求
;如果沒有繼續寫初值,OUT仍為高電平。

要給CR寫初值,下一定時周期才開始(意思是OUT仍保持高電平)。而CE沒有停止計數,繼續向下減。

L1:
	MOV DX,303H
	MOV AL,0000XXXXB
	OUT DX,AL;發OL命令,鎖存OL值
	MOV DX,300H
	IN AL,DX;讀出OL的低八位
	MOV AH,AL
	IN AL,DX;讀出OL的高八位
	XCHG AH,AL;高低位交換,OL此時==AX
	; 這樣可以查看OL是否減到了0
	; 上述過程在CPU內執行,與CE自減非同步,不好找到CE減到0的時刻,可以這麼判斷:
	CMP AX,5;與初值比較,如果該結果>0,即AX>5,說明已經減到0了
	JNA L1;不大於則繼續回去,鎖存查看比較
	
	JMP L2;重新寫初值,L2在上面

如果在方式0工作期間,GATE突然降為低電平,則在上升沿採集到後的下降沿停止CE計數。GATE恢復高電平後恢復計數。這樣可以延長定時時間。

此外,在CE還未減到0時重新寫初值,也能延長定時時間。

定時器可以用於看門狗的設計,設置CR計時初值大於程式運行時間,當CPU代碼的IP指針跑飛引起死機時,就會引起中斷進入中斷服務程式,可以設置重新回到程式起始處/程式某處,重新執行。

4.2 方式1

硬體觸發的單脈衝形成。

MOV DX,303H
MOV AL,00010010B;計數器00,設置為8位計數器01,方式001,二進位計數0
OUT DX, AL;控制寄存器寫入12H,out引腳電平變高
;寫初值
MOV DX,300H
MOV AL,4
OUT DX,AL;CRL=4,初值寫完了,因為是8位計數器
;當GATE上升沿到來(觸發),CLK檢測到後的第一個下降沿,CRL0的值打入CEL0,同時OUT電平降低。!單脈衝開始!
/*註意單脈衝指的是OUT的單脈衝*/
; CLK每來一個下降沿,CE-1,減到0則OUT的低電平結束,繼續變為高電平

可以看出,GATE控制了單脈衝的形成,而初值控制了單脈衝的寬度。

4.3 方式2

分頻器,分頻脈衝形成。還是結合代碼來看。

MOV DX,303H
MOV AL,01110100B;計數器1 16位計數11,方式2 010,二進位0
OUT DX,AL; 寫入74H,OUT引腳變為高電平

MOV DX,301H
MOV AX,0006H;初值需要計算
OUT DX,AL
XCHG AH,AL
OUT DX,AL ;CR初值寫完
;若GATE為高電平,則允許計數,下一個下降沿時CR值打入CE
;此後每個周期CE-1,減到1後OUT自動變低,保持一個周期後,OUT自動變高,此時CE正好到0。
;OUT變高後,CR再次打入CE,也就是重置為6,重覆執行。
;此時是6分頻。

同理,中途GATE變低,CE停止計數,但是當GATE恢復高電平的那個上升沿時,CE重置為初值。

4.4 方式3

方波產生器。

MOV DX,303H
MOV AL,36H;00110110B
OUT DX,AL;out高電平開始
MOV DX,300H
MOV AX,0006H
OUT DX,AL
XCHG AH,AL
OUT DX,AL ;至此初值寫完
;第一個下降沿,CR0打入CE減法器,!若為偶數直接打入!,每來一個時鐘CE-2,減到0則OUT自動降低
;此時CE重置為初值,繼續自減2,再次減到0後,OUT反轉為高電平,重覆進行
;可見如果是偶數,高低電平時間相等,也就是方波了


;如果是奇數。
;奇數變為偶數(-1)再從CR打入CE,但高電平減到0時會向後保持一個周期,造成高電平比低電平多1周期:正方波(n+1)/2,負方波(n-1)/2

5. 8253的應用

傳統藝能之與匯流排的連接方法其實與前幾個硬體沒什麼不同,所以略過。

P293的9.11題。需要兩個計數通道級聯。

20
  • MOV DX,83H
    MOV AL,00010100B
    OUT DX,AL
    MOV DX,80H
    MOV AL,100
    OUT DX,AL
    
  • 需要級聯,將計數器1的OUT連到計數器2的CLK,計數器1的CLK接系統時鐘1MHZ

    硬體連線程式管不了,需要電路上接好。

    
    ; 計數器1
    MOV DX,83H
    MOV AL,011101000B
    OUT DX,AL
    
    MOV DX,81H
    MOV AX,1000;分頻1000
    OUT DX,AL
    XCHG AL,AH
    OUT DX,AL
    
    ;計數器2
    MOV DX,AL
    MOV DX,83H
    MOV AL,10010110B
    OUT DX,AL
    MOV AL,100;分頻100
    OUT DX,AL
    

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. Ioc 與 DI Ioc 和DI 這兩個詞大家都應該比較熟悉,這兩者已經在各種開發語言各種框架中普遍使用,成為框架中的一種基本設施了。 Ioc 是控制反轉, Inversion of Control 的縮寫,DI 是依賴註入,Inject Dependency 的縮寫。 所謂控制反轉,反轉的是 ...
  • 概述 面臨一個複雜對象的創建工作,通常由各個部分的子對象用一定的演算法構成。子部件(對象)比較多,對象不能當作一個完整的對象或者產品使用(郵件:發件人,收件人、抄送人、主題、郵件內容)子部件需要按照一定的順序賦值才有一定的意義,在某個子部件沒有賦值之前,另一個子部件就無法賦值。 類圖 註:該類圖來源網 ...
  • 車家號作為一個PGC平臺,聚合了全網大多數汽車行業的專家及意見領袖,每天為用戶提供大量的汽車類優質內容。用戶日瀏覽量在幾千萬級,後端的介面也承載億級的日訪問量。 車家號WEB、API、後臺管理等系統採用 .net4.5進行開發。一直以來為用戶及調用方提供了穩定的服務。由於其只能運行於W... ...
  • Nginx負載均衡與代理 一、代理概述 代理:外賣/中介/中間商 用戶無法直接做某些事情,通過中介進行處理,這個中介就是代理 用戶 >代理 >web節點,後面只有一個節點,一般使用的是nginx代理功能即可,後面如果有多個節點(也就是集群)的話,需要使用nginx負載均衡功能 二、代理分類 | 代理 ...
  • 使用騰訊雲或者阿裡雲的伺服器配置MariaDB資料庫環境的時候,用Navicat遠程連接在Centos7的Linux上配置MariaDB資料庫環境的時候一直出錯誤代碼 "2002 - Can't connect to server on '' (10060)" 可能原因如下 1.是否有許可權訪問Mar ...
  • window系統下 按此鍵 執行此操作 Command + Shift + B 顯示或隱藏收藏夾欄 Command + Shift + C 打開開發人員工具 Command + D 將當前選項卡另存為收藏夾 Command + Shift + D 在新文件夾中將所有打開的標簽頁另存為收藏夾 Comm ...
  • 需求:批量獲取文本指定內容所在行以下內容(含當前行) 解決方案:使用Powershell腳本處理 案例: 獲取當前文件夾下所有txt文件 含文本"4"所在行以下內容(含當前行) 如果有多行包含文本"4",取第一個所在行以下內容(含當前行) 1.查看當前文件夾內容 2.右鍵執行腳本刪除文件指定內容所在 ...
  • 環境 CPU:Phytium,S2500/64 C00 內核版本:4.19.90-25.10 網訊網卡:txgbe 共兩台設備,光纖直連 復現步驟 設備A、B分別執行以下操作,即可復現 modprobe fcoe systemctl start lldpad systemctl start fcoe ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...