1. 程式人生 > >有關於串列埠通訊程式的編寫

有關於串列埠通訊程式的編寫

dos/win95/win98的年代,作業系統對串列埠是不保護的,也就是說將串列埠的的資源完全開放給使用者,使用者可以用直接操作硬體的函式(比如說 TC2.0下的inport()outport()函式) 跟串列埠直接打交道,這時候使用者使用直接操作串列埠的函式怎樣"折磨"串列埠都是沒有問題的,作業系統根本就不管不問,對串列埠操作所造成的一切後果都是使用者一個人承擔的,這時候使用者對串列埠具有高度自由的支配權;但是,這種情況好景不長,從win2000作業系統開始,微軟為了"照顧好"計算機上的硬體,開始實施了對硬體的保護策略,也就是說任何使用者在他的作業系統下企圖操縱串列埠時必須經過他的同意方可進行,其實也就是變相的將使用者往必須使用他的通訊
api函式才能操作串列埠這條"羊腸小路"上趕(當然也有別的方法操作串列埠,但那些並非我等普通使用者能研究明白的),形象一點說就好像你想怎樣操作串列埠的意圖必須經過 win2000的翻譯(其實是win2000的裝置驅動程式)才能轉達給串列埠一樣,基於這一點我們說(其實是很多資料上說的)win2000下通過api 函式操作串列埠是具有"裝置無關性的",什麼意思呢?就是說你想怎樣操作串列埠就用相應的api函式告訴作業系統你想對串口乾什麼,然後作業系統就把你的意思轉告給串列埠讓其做出相應的動作,相對於dos/win95/win98下來說,據我理解也就相當於你原來寫的直接操作串列埠的函式在win2000下他替你完成了,但是你必須用
win2000通訊api函式清楚地向作業系統表達清楚你到底想幹什麼,所以說在這種情況下要想寫好串列埠驅動程式你就必須至少弄明白 win2000下的通訊api函式都是幹什麼的方可,囉裡囉唆嘮叨了這麼多... ...sorry, 還沒完呢,至少還有一件事我想說,原來在dos/win95/win98系統下有好多高手用c/c++對串列埠進行直接操作是非常熟練的,尤其是dos時代turbo 2.0操作串列埠的高手他們寫的串列埠驅動程式直到win98的時候還用的非常洋洋得意,但是到了win2000的時候,他們的程式突然不好使了,而他們有的可能還會因為知識結構上的滯後始終弄不明白怎麼回事兒,兄弟們,你們該明白了吧?閒話少敘,下面介紹筆者寫串列埠通訊函式時用到的各個
api函式----- ----