-
我以前用MSComm控件寫了串口程序,感覺不是很好用。突然斷電,重起就會出現(xiàn)問題。錯誤提示:port already open!
這次想用Win32 API操作串口,是不是比MSComm控件好用? Win32 API操作232串口,邊讀邊發(fā)數(shù)據(jù),編程時需要注意什么嗎?
請大蝦們指教?。?
手機新出的賺錢方式,第一批成都人已經(jīng)賺嗨了!廣告 美勝商務(wù) · 燨燚
問題點數(shù):50分
回復(fù)次數(shù)18
引用 ? 舉報 ? 樓主
fronz
-
一般來說,用API寫出完整無缺的好程序,我覺得比較難。
當(dāng)然是大多都是水平問題和很多細節(jié)問題,以前寫過同步方式的,98下工作非常好,但換系統(tǒng)后出現(xiàn)問題。 目前的觀念是用異步方式,編程用多線程。
你可以參考這個帖子的討論。 http://community.csdn.net/Expert/TopicView3.asp?id=5631034
引用 ? 舉報 ? #1 得分:18
菜牛
-
控件最終都是通過API實現(xiàn)的,只不過包裝一下而已。
引用 ? 舉報 ? #2 得分:2
我是一個小兵,在戰(zhàn)場上拼命!
-
我現(xiàn)在水平一般,是不是還是用MSComm控件比較好?
MSComm控件與API沒什么區(qū)別嗎? 摟主
引用 ? 舉報 ? #3 得分:0
至尊寶寶[男]
-
fronz() —— 誤人子弟!
樓主選用 Win32 API 是絕對正確的!
引用 ? 舉報 ? #4 得分:18
瑯琊榜
-
API好用一點,反正都是自己設(shè)計的代碼,出什么問題可以自己修改
成都小哥手機賺錢方式,第一批人已經(jīng)賺嗨了!廣告 騰銳 · 燨燚
引用 ? 舉報 ? #5 得分:2
fronz
-
to:zaodt(至尊寶寶:我就在你身旁,關(guān)心永遠不打烊!)
選用 Win32 API 是絕對正確的! 用API寫出完整無缺的好程序,我覺得比較難。
這兩句有矛盾么?
我當(dāng)然主張用API串口編程。在原來的那個討論貼中也是如此,只是覺得寫的很滿意比較困難一些(比用MS控件)。
引用 ? 舉報 ? #6 得分:0
fronz
-
建議樓主先用一些好的封裝類編串口程序。比如CSerialPort類,里面也都有API函數(shù)的調(diào)用。
慢慢自己再用API寫符合自己要求的專用代碼,
引用 ? 舉報 ? #7 得分:0
我是一個小兵,在戰(zhàn)場上拼命!
-
CSerialPort類??
找不到,可以給我嗎? 我的郵箱:beibei.hou@163.com
=========================== 摟主
引用 ? 舉報 ? #8 得分:0
hchack
-
自己鍛煉著寫一下,未必就不是好事
引用 ? 舉報 ? #9 得分:2
fronz
-
剛發(fā)了一份,收一下,
成都25歲美女辭去工作去做這個,月入30K,驚呆他人!!廣告 康之弘 · 燨燚
引用 ? 舉報 ? #10 得分:0
i_love_pc
-
其實都差不多,用api相對麻煩一些。
通常在打開串口之前要判斷它是否已經(jīng)被打開或者被占用。
引用 ? 舉報 ? #11 得分:2
zcp126
-
到codeproject.com上找pj.nauter的cserialport類吧,用的人一大堆.
引用 ? 舉報 ? #12 得分:2
至尊寶寶[男]
-
串行通信是最簡單的通信方式,如果說這個難的話,那什么USB、網(wǎng)絡(luò)都不要做了!
API 多線程 操作串行口,你可以把程序做的很細、很強!
而且,程序發(fā)布的時候,又沒有那么多拖拖拉拉的東西!
引用 ? 舉報 ? #13 得分:0
jixingzhong
-
控件只是一個包裝。
但是因為這個包裝, 用起來自然簡單多了。
通常我的觀點是, 掌握 API,使用空間【學(xué)習(xí)根本的,但是使用的確實相對簡單的】
引用 ? 舉報 ? #14 得分:4
jixingzhong
-
使用空間
==》 使用控件
汗
2018手機新出的賺錢方式,第一批成都人已經(jīng)賺嗨了!廣告 利成 · 燨燚
引用 ? 舉報 ? #15 得分:0
fronz
-
呵呵,說了一句“用API寫出完整無缺的好程序,我覺得比較難?!?br>就“誤人子弟”了,
說中國話也要有邏輯,特別是對程序員,如果我犯了邏輯錯誤,那會比我犯了概念錯誤更覺得羞愧。
關(guān)于直接用API自己寫難不難,是另外的問題,所以我只說了“我覺得比較難”,這只是個人看法。所有的網(wǎng)友,問問題也不過就是聽個建議。
串口編程,可以說我做了不少,也比較關(guān)注這個技術(shù),個人覺得還是很難用API寫出很完美的程序,很多的細節(jié)需要注意,DCB設(shè)置、線程間數(shù)據(jù)共享、緩沖區(qū)設(shè)置等等等等,很多,而且用API寫最簡單的同步方式串口程序時確實存在問題,而OverLapped方式也確實復(fù)雜很多,這些都是我親身遇到過的。所以我建議樓主參考我推薦的帖子中jhs1982419()提供的一些資料。如果有心還可以去搜索一些。
根據(jù)我的了解,目前國內(nèi)搞儀器串口控制的大部分的中小企業(yè)都是用VB調(diào)用MS控件寫的,少部分是借助封裝類或其他控件寫,用API直接寫更少,何況用多線程的話必須考慮同步方式在跨平臺方面出現(xiàn)的問題??梢赃@么說,能根據(jù)需要用API寫出很流暢自如的串口程序,那么你可以很驕傲地去搞儀器控制的企業(yè)應(yīng)聘去了。而且你可以對招聘者說,你跟龔建偉一樣牛。:)
以上全都是個人意見,供大家參考。
引用 ? 舉報 ? #16 得分:0
至尊寶寶[男]
-
那是你自己的理解吧!
如果說用VC 編寫程序還要用 MSCOMM 控件的話,那還不如用VB得了。
VB豈不是更簡單?
說白了,MSCOMM 控件其實是提供給 VC 以外的其它開發(fā)工具使用的。
我曾經(jīng)用PowerBuilder開發(fā)程序,用到了這個控件,原因是PB無法操作串行口,這也是沒有辦法。
樓上所說的難處無非是多線程的處理,跟串行口的操作無關(guān)。
不過,話又說回來了,如果你不深入VC 編程,那你的水平又怎么提高。
想做出好的程序,多線程這關(guān)必須要闖過!
引用 ? 舉報 ? #17 得分:0
fronz
-
我來解讀一下你的“程序”吧
那是你自己的理解吧! -----不錯,我所說的都是我的理解,難不成你的說法是大家普遍的認知?
如果說用VC 編寫程序還要用 MSCOMM 控件的話,那還不如用VB得了。 VB豈不是更簡單?說白了,MSCOMM 控件其實是提供給 VC 以外的其它開發(fā)工具使用的。 ----似乎我還在誤人子弟?甚至鼓勵樓主用VB調(diào)MSCOMM控件?你到底知道不知道我所說的類似CSerial,CSerialPort這類的串口封裝類與你所說的MSCOMM控件有何不同?怪不得你從PB搞出來的。
我曾經(jīng)用PowerBuilder開發(fā)程序,用到了這個控件,原因是PB無法操作串行口,這也是沒有辦法。 樓上所說的難處無非是多線程的處理,跟串行口的操作無關(guān)。 -------樓主讀寫串口程序再加上前臺操作,就本問題來說,可以說和多線程無關(guān)么?既然多線程本身復(fù)雜,那么直接寫的那些串口讀寫的API函數(shù)不需考慮多線程問題么?用封裝好的寫多線程不清晰簡單一些么?
不過,話又說回來了,如果你不深入VC 編程,那你的水平又怎么提高。 --------提高,這個說到點上了,當(dāng)然需要提高,怎么提高?這是方法問題,有具體API函數(shù)的封裝類的現(xiàn)成的源代碼作為學(xué)習(xí)途徑,不是一種提高方法么?
想做出好的程序,多線程這關(guān)必須要闖過!------后后,這個還用說么?看來你是過關(guān)了,那么恭喜了,你可以不誤人子弟了。
|