[問題] 曾開過的serial port 1st WriteFile 成功

看板C_and_CPP作者 (= =)時間8年前 (2015/10/15 08:40), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Visual Studio 2013 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) WinAPI 問題(Question): 使用com0com在PC上面create了virtual的 COM3 與 COM4 (COM3 與 COM4 對接) 針對 COM4 使用 handleCOM4 = CreateFile() 後 --> CloseHandle() 關閉 之後 針對 COM3 使用 handleCOM3 = CreateFile() 後 SetCommState() 等初始化 第一次使用 WriteFile(handleCOM3, message, length, write_bytes, NULL) --> 寫入的 write_bytes 等於 length 第二次使用 WriteFile(handleCOM3, message, length, write_bytes, NULL) --> 寫入的 write_bytes = 0 另一個情況是 COM4 從來沒用CreateFile()開過的話 上面第一次WriteFile()的 bytes就會是 0 我原本的預期是,針對COM4的處理在關掉之後 理論上 COM3 可寫入的 bytes應該會一直都等於 0 可是這樣子實驗過後, 發現只要 COM4 曾經開過再關掉,第一次WriteFile()就會成功 (write_bytes=length) 但 COM4 如果從來沒開過,第一次WriteFile() 寫入長度就 = 0 原本以為是buffer的問題,但使用PurgeComm()清buffer還是有一樣的行為 不知道各位板上的神人們,有沒有解決的辦法? 或是小弟在寫法上面忽略的什麼地方 orz? 非常感謝各位大大! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.141.241 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1444869656.A.149.html

10/15 11:09, , 1F
再試了一下,第一次WriteFile最多寫入14 bytes成功
10/15 11:09, 1F

10/15 16:41, , 2F
看不懂你這樣玩弄OS的用意...
10/15 16:41, 2F
文章代碼(AID): #1M7lOO59 (C_and_CPP)