C 串列埠操作以及串列埠模擬測試

2021-07-25 21:31:10 字數 1309 閱讀 1676

例如開啟同步串列埠:

m_hcomm = createfilea(szport, /* 裝置名,com1,com2等 /

generic_read | generic_write, /* 訪問模式,可同時讀寫 /

0, /* 共享模式,0表示不共享 /

null, /* 安全性設定,一般使用null /

open_existing, /* 該引數表示裝置必須存在,否則建立失敗 /

0, 0);

note:串列埠只能被開啟一次。如果串列埠已經被別的裝置或者串列埠除錯軟體開啟占用,那麼再次嘗試在程式開啟時,就會開啟失敗!

(2)配置串列埠

串列埠的引數配置:通過com口的裝置控制塊dcb進行。在修改串列埠引數之前,應該先使用getcommonstate獲取dcb的初始配置,修改完後,使用setcommonstate設定引數。

bool getcommstate(

handle hfile, //標識通訊埠的控制代碼

lpdcb lpdcb //指向乙個裝置控制塊(dcb結構)的指標

); setcommstate函式設定com口的裝置控制塊:

bool setcommstate(

handle hfile,

lpdcb lpdcb

); 程式仍需要設定io緩衝區的大小和io超時。

io緩衝區的設定:

bool setupcomm(

handle hfile, // 通訊裝置的控制代碼

dword dwinqueue, // 輸入緩衝區的大小(位元組數)

dword dwoutqueue // 輸出緩衝區的大小(位元組數)

); io超時設定:通過getcommtimeouts和setcommtimeouts函式來操作結構體:commtimeouts。

typedef struct _commtimeouts commtimeouts,*lpcommtimeouts;

讀總超時=readtotaltimeoutmultiplier×10+readtotaltimeoutconstant

幾點說明:

● 如果所有寫超時引數均為0,那麼就不使用寫超時。

● 如果readintervaltimeout為0,那麼就不使用讀間隔超時。

● 如果readtotaltimeoutmultiplier 和 readtotaltimeoutconstant 都為0,則不使用讀總超時。

● 如果讀間隔超時被設定成maxdword並且讀時間係數和讀時間常量都為0,那麼在讀一次輸入緩衝區的內容後讀操作就立即返回,而不管是否讀入了要求的字元。

c 操作串列埠

這個類是除錯過的,可以使用這個類是除錯過的,可以使用 對串列埠進行操作的類,其中包括寫和讀操作 public class serialclass 建構函式,public serialclass string comportname 建構函式,可以自定義串列埠的初始化引數 需要操作的com口名稱 co...

GPIO模擬串列埠

模擬串列埠 串列埠預設的1byte資料格式為 暫不考慮校驗位 1bit起始位 8bit資料位 1bit停止位,起始位 s 為低電平,停止位 t 為高電平。具體格式如下圖所示 若波特率為9600,每s傳輸9600bd。二進位制下波特率等於位元率。則可看成每s傳輸9600bit。1 9600 104 u...

模擬串列埠輸出

最近在除錯hardfault handler輸出日誌資訊時候獲得了vincent幫助,感謝 1 void delay uart5 uint16 t cnt 2 1 void hardfault handler void uart5 384002 60 gpioc bsrr 0x0001 12 61 ...