mfc多執行緒串列埠通訊 RSR232串列埠程式設計小記

2021-10-17 07:18:41 字數 1489 閱讀 9927

哎,莫名其妙地被老闆一步一步地帶進溝裡。。。從做理論逐步演變成搞技術了。。。

之前在工作中所涉及的程式設計幾乎都是數值計算(以及計算結果的畫圖),並且都是在linux環境下幹活的,早已習慣了在terminal中敲東西,從未涉及過桌面應用的開發,更別提什麼rs232串列埠了(直到不久前才知道這麼個玩意兒。。。)。

因為專案需要,我不得不參與其中的部分工作,於是乎開始在windows平台下開發應用程式。採用的開發環境是mfc,相關的開發任務也是從別人那接手的,是乙個usb控制程式,簡單說就是在pc端通過乙個usb模組(cypress3014)給fpga(控制硬體的)傳送、接收資料。這個控制程式的開發和我之前所熟悉的數值計算的開發差別相當大,著實費了我一番功夫才適應了新的開發模式(實際上主要事件都耗在對usb相關知識的學習上了,mfc這個程式設計環境的學習倒是很簡單)。

最近組裡要開展一系列的相機測試,其中乙個小環節是需要通過軟體來控制快門(**時間)。供貨商倒是提供了乙個控制軟體(很小的軟體,都不需要安裝),但是這個軟體沒法整合到我們測試時所用的軟體中,也沒有相關的開發文件,這就比較麻煩了。好在這個快門是用rs232串列埠與pc相連線的,因此只需要通過向串列埠傳送相關命令就可以對相機進行控制。試著用putty連線上了快門的串列埠,也成功地通過傳送命令控制了快門,但還不知道該如何在mfc中實現給快門傳送指令。

後來在網上搜尋,找到乙個有用的資源:

windows純c++實現串列埠通訊_touch_dream的部落格-csdn部落格_c++串列埠通訊​blog.csdn.net

於是照著該例子,在mfc中完整地敲了一遍**,也編譯成功了。但此時對如何進行串列埠除錯還是一無所知。。。

實踐出真知!

於是就在程式中寫了乙個測試函式,傳送「開啟」、「關閉」兩個指令給快門。然而,事與願違,快門沒動靜啊。。。想了想,先試試用putty和乙個串列埠除錯工具測試一下,在putty中傳送的那些指令,被串列埠除錯工具接收到之後到底顯示的是什麼?試試證明,串列埠除錯工具從putty端接收到的確實是指令對應的「字串」。。。

那為啥我在mfc中傳送指令後沒反應呢??於是我又將串列埠除錯工具連線到快門上,嘗試向其傳送指令,似乎直接傳送os(open shutter)一類的指令確實不行,沒辦法了,接著在網上搜尋吧。。。然後就找到了下面這個**裡的內容,原來需要在後面加'r'表示回車。。。

關於putty進行串列埠除錯_studying……-csdn部落格_putty 串列埠 無法輸入​blog.csdn.net

在mfc程式中簡單修改後,終於可以對快門進行控制了。。。

串列埠通訊 多執行緒簡單例項

rs 232串列埠 include reg52.h typedef unsigned char uint8 typedef unsigned int uint16 sbit s2 p2 1 sbit en p2 5 uint8 arg uint8 counter 0 void init void 微...

Qt下實現多執行緒串列埠通訊

qt下無論是 rs232 rs422 rs485 的串列埠通訊都可以使用統一的編碼實現。本文把每路串列埠的通訊各放在乙個執行緒中,使用 movetothread 的方式實現。用 serialport 類實現串列埠功能,widget 類呼叫串列埠。serialport.h如下 include incl...

Qt下實現多執行緒的串列埠通訊

qt下無論是rs232 rs422 rs485的串列埠通訊都可以使用統一的編碼實現。本文把每路串列埠的通訊各放在乙個執行緒中,使用movetothread的方式實現。用serialport類實現串列埠功能,widget類呼叫串列埠。serialport.h如下 include include inc...