例如開啟同步串列埠:
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 ...