簡體   English   中英

rs232通訊經常出錯

[英]rs232 communication creates error frequently

我知道這個問題並不新鮮,可以通過Google搜索一些示例代碼/類來進行rs232通信。 但是,現在我已經在使用一個類。 但它有時有效,但通常卻無效。 通訊剛剛停止我將花費大量時間閱讀所有串行通訊概念並調試此代碼

我可以從SO那里得到一些幫助嗎?

謝謝,

PS:順便說一句,在我的項目中,我需要經常將字符串(字符數組)連續或在某些定義的實例中發送到另一個rs232終端。 錯誤可能是由於每次通信時不關閉,重新打開RS232 / COM手柄引起的嗎?

拜托,我已經包含了我的代碼

RS232.cpp RS232.hpp RS232_ 客戶

編輯01:

RS232_client是另一側寫的代碼。 我這邊是一台使用win7的PC,項目是用MSVS2008編譯的

關於我的代碼中的錯誤,有時是當我調用“ int RS232 :: Write(double * joints)”時,它會引發錯誤,並且傳輸停止,在PC端不顯示任何內容

Edit02:

就像@克里斯·斯特拉頓(Chris Stratton)所建議的那樣,我的問題可能是由於書面rs232類錯誤而沒有進行必要的檢查。 因此,我使用從CodeProject CSerial下載的另一個類測試了我的項目。 我把代碼放在這里供參考

Serial.cpp Serial.h

這就是我如何使此類適合我的代碼:

我的適應

因此,從PC端開始的過程是相同的,即發送字符串,等待讀取“ s”或“ S”,然后發送“ q \\ r”退出。

對於上面用此新代碼執行的3個步驟,我可以執行步驟1的OK,但是對於步驟2,它掛在那里,好像沒有引發(讀取)事件一樣

        // Wait for an event
        lLastError = serialPort.WaitEvent();   // it waits here forever!!!!
        if (lLastError != ERROR_SUCCESS)
            ShowError(serialPort.GetLastError(), _T("Unable to wait for a COM-port event."));

我終於可以擁有一個RS232模塊,該模塊可以釋放奇怪的突然停止。 在這里,我上傳了新版本的RS232.cpp

這兩個版本之間唯一的區別是在新的RS232_open()中,我不使用GetCommState。 而是由BuildCommDCBA使用一串設置baudr來設置配置

感謝您的幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM