[問題] VC++使用Readfile讀RS232的問題

看板C_and_CPP (C/C++)作者 (Zerocks)時間16年前 (2010/05/18 00:26), 編輯推噓0(0010)
留言10則, 3人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 因為需要不斷地在背景取得來自RS232的資料 因此我將com port的handler寫在object中 然後把object的指標傳給thread去執行 thread就只負責從RS232讀取資料,然後把資料寫進object裡面 因為要跟同學進行整合,因此一邊就只有寫cpp,另一邊寫vc++ cpp同一段的程式碼 在DevC++跟Code::Blocks跑起來讀到的資料正常 把cpp的程式碼整合到VC++的專案之後 (cpp的程式碼完全沒動的移過去) 在VC++ 2008上跑出來的結果就很不一定 用自己的桌機(Vista)跑的結果會正常 用實驗室的筆電(WinXP)跑出來的值就會差很多 例如某個值原本應該是85 在筆電上面跑出來可能就多了10000多或是更多 然後如果readfile()那一行前後 單純的宣告幾個變數(例如int abc;這樣而已 跑出來的值又不一樣了 希望的正確結果: 在VC++抓到的rs232的值能跟在devC++抓到的值一樣 有問題的CODE: int rc; DWORD cBytes; WORD ch2; while(){ rc=ReadFile(obj->h_RS232,&ch2,1,&cBytes,NULL); ... } 煩請各位版友給予指教m(_ _)m -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.227.146

05/18 09:48, , 1F
連上後先用GetCommState比較自己的電腦和實驗室的設定
05/18 09:48, 1F

05/18 15:21, , 2F
我也想知道這是什麼問題
05/18 15:21, 2F

05/18 15:21, , 3F
我獨立寫一個RS232讀寫的程式可以run
05/18 15:21, 3F

05/18 15:21, , 4F
但是整合進整個專案,讀到的數值就是大到很奇怪
05/18 15:21, 4F

05/18 15:21, , 5F
也不知道可以從哪debug 哭哭
05/18 15:21, 5F

05/18 21:19, , 6F
結果我們選擇改用Socket來傳值 orz 感謝一樓的板友
05/18 21:19, 6F

05/18 21:20, , 7F
GetCommState BaudRate, StopBits, Parity, 那些都一樣
05/18 21:20, 7F

05/20 10:13, , 8F
改用Socket傳變成跑太慢 |||
05/20 10:13, 8F

05/20 10:13, , 9F
後來將ch2改成宣告為byte就正確的抓到值了
05/20 10:13, 9F

05/20 10:15, , 10F
更正BYTE
05/20 10:15, 10F
文章代碼(AID): #1ByMuf0a (C_and_CPP)
文章代碼(AID): #1ByMuf0a (C_and_CPP)