請問在 Vista下用 CreateFile() 開啟 SerialPort |
答題得分者是:JustinShen
|
kabaeva
一般會員 發表:1 回覆:2 積分:0 註冊:2007-10-02 發送簡訊給我 |
我正在寫一個程式要透過開啟 COM PORT 去把資料傳給 Bluetooth 的裝置。在 XP 上都可以正常的運作但是到 vista後,發生的情況很怪,我程式開啟後通常只有第一次可以成功把我的資料透過 COM PORT 送過去(有時候 timeout),只要成功送過一次資料後,就可以開始看 bluetooth 接收/傳送資料。但是bluetooth 斷線後,再開啟,我就無法 成功開啟 CreateFile() ,但是程式一重開,又會像一開始一樣可以成功使用CreateFile()開啟 COM port。感覺很像是我程是咬住 port 但是我不知道是甚麼原因 ? 我的 errcode = 5 這是權限出錯但是我不知道哪邊會有這樣的問題 ,而且我也有用管理者權限去跑。請問有人有類似的經驗嗎 ?
我的code : handle_ = ::CreateFile(devicename.c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ,NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED | FILE_FLAG_NO_BUFFERING, NULL); |
JustinShen
中階會員 發表:22 回覆:104 積分:80 註冊:2003-09-20 發送簡訊給我 |
|
kabaeva
一般會員 發表:1 回覆:2 積分:0 註冊:2007-10-02 發送簡訊給我 |
|
JustinShen
中階會員 發表:22 回覆:104 積分:80 註冊:2003-09-20 發送簡訊給我 |
|
kabaeva
一般會員 發表:1 回覆:2 積分:0 註冊:2007-10-02 發送簡訊給我 |
感謝你的方法 JustinShen 。的確是因為 vista 在 buffer 沒有清空造成沒關正確關閉,感謝你。
在這邊我是用 PurgeComm(handle_ , PURGE_RXABORT | PURGE_RXCLEAR | PURGE_TXABORT | PURGE_TXCLEAR); CancelIo(handle_); 這兩個函式幫忙清空,謝謝。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |