freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)基于串行總線的運(yùn)行維護(hù)系統(tǒng)設(shè)計(jì)(編輯修改稿)

2025-07-25 10:13 本頁面
 

【文章內(nèi)容簡介】 面說到 MFC 是微軟對(duì) API 函數(shù)的專用 C++封裝,這種結(jié)合一方面讓用戶使用微軟的專業(yè) C++ SDK 來進(jìn)行 Win 下應(yīng)用程序的開發(fā)變得容易 ,因?yàn)?MFC 是對(duì) API 的封裝,微軟做了大量的工作,隱藏了好多程序開發(fā)人員在 Win 下用 C++ amp。 MFC 編制軟件時(shí)的大量內(nèi)節(jié),如應(yīng)用程序?qū)崿F(xiàn)消息的處理,設(shè)備環(huán)境繪圖,這種結(jié)合是以方便為目的的,必定要付出一定代價(jià)(這是微軟的一向作風(fēng)),因此就造成了 MFC 對(duì)類封裝中的一定程度的的冗余和迂回,但這是可以接受的。 動(dòng)態(tài)鏈接庫簡介動(dòng)態(tài)鏈接庫英文為 DLL,是 Dynamic Link Library 的縮寫形式,DLL 是一個(gè)包含可由多個(gè)程序同時(shí)使用的代碼和數(shù)據(jù)的庫,DLL 不是可執(zhí)行文件。動(dòng)態(tài)鏈接提供了一種方法,使進(jìn)程可以調(diào)用不屬于其可執(zhí)行代碼的函數(shù)。函數(shù)的可執(zhí)行代碼位于一個(gè) DLL 中,該 DLL 包含一個(gè)或多個(gè)已被編譯、鏈接并與使用它們的進(jìn)程分開存儲(chǔ)的函數(shù)。DLL 還有助于共享數(shù)據(jù)和資源。多個(gè)應(yīng)用程序可同時(shí)訪問內(nèi)存中單個(gè) DLL 副本的內(nèi)容。DLL 是一個(gè)包含可由多個(gè)程序同時(shí)使用的代碼和數(shù)據(jù)的庫動(dòng)態(tài)鏈接庫可以更為容易地將更新應(yīng)用于各個(gè)模塊,而不會(huì)影響該程序的其他部分。例如,您有一個(gè)大型網(wǎng)絡(luò)游戲,如果把整個(gè)數(shù)百 MB 甚至數(shù) GB 的游戲的代碼都放在一個(gè)應(yīng)用程序里,日后的修改工作將會(huì)十分費(fèi)時(shí),而如果把不同功能的代碼分別放在數(shù)個(gè)動(dòng)態(tài)鏈接庫(DLL)中,您無需重新生成或安裝整個(gè)程序就可以應(yīng)用更新。圖 ,說明了 Windows 操作系統(tǒng)中的一些作為 DLL 實(shí)現(xiàn)的文件。圖 需求分析 編寫的目的及背景以往公司的設(shè)備選用 PLC 及外購的輸入輸出板卡,設(shè)備的電氣成本一直居高不下,不僅給設(shè)備的維護(hù)帶來很多困難,而且容易被一些竟?fàn)帉?duì)手抄襲,現(xiàn)市場(chǎng)上很多公司仿模本公司的產(chǎn)品以較低的成本出售給客戶,給本公司帶來了很多不利的影響。日前尋求一種自主開發(fā)的自動(dòng)控制系統(tǒng),來取代外購的控制系統(tǒng)。 功能需求(1) 、對(duì)加熱溫度進(jìn)行檢測(cè)。(2) 、要求輸入輸出點(diǎn)數(shù)總數(shù)大于或等于 64 點(diǎn)。(3) 、具有 3 路脈寬調(diào)制信號(hào)。(4) 、能夠控制 1 軸步進(jìn)電機(jī)。(5) 、將接口做成動(dòng)態(tài)庫形式,以方便業(yè)務(wù)軟件的編寫。(6) 、編寫測(cè)試界面,以方便生產(chǎn)線員工在運(yùn)行業(yè)務(wù)軟件之前對(duì)電氣接線進(jìn)行檢查。 系統(tǒng)性能需求(1) 、系統(tǒng)時(shí)實(shí)性要求,即通信速率要求大于 100Kb/S。(2) 、穩(wěn)定性要求,對(duì)溫度檢測(cè)精度為正負(fù) 5 攝氏度,脈寬調(diào)范圍在 0~10000。(3) 、系統(tǒng)開發(fā)完成后,不間斷模擬運(yùn)行 30 天,不出現(xiàn)任何誤運(yùn)作。 系統(tǒng)分析 技術(shù)可行性本人 5 年以上自動(dòng)化設(shè)備上層軟件開發(fā)工作經(jīng)驗(yàn),電路基本功扎實(shí),動(dòng)手能力強(qiáng),能夠獨(dú)立調(diào)試代碼,熟練使用 Microsoft Visual Studio2022 等軟件工具,獨(dú)立設(shè)計(jì)過 8 軸120(包括輸入輸出)點(diǎn)時(shí)實(shí)控制系統(tǒng)。目前著手千兆以太網(wǎng)的上層接口軟件設(shè)計(jì)。 經(jīng)濟(jì)可行性由于本系統(tǒng)是個(gè)人為了通過實(shí)踐,使所學(xué)的理論知識(shí)和實(shí)際操作相結(jié)合,提高自己的實(shí)際開發(fā)能力而做的。而且自己擁有一臺(tái)完全可以用于開發(fā)本系統(tǒng)的計(jì)算機(jī),所用軟件全部都是免費(fèi)的,加上現(xiàn)在的互聯(lián)網(wǎng)資源豐富,學(xué)校的圖書館藏書有萬冊(cè),完全可以找到自己所需的資料,幾乎無成本。另外,每臺(tái)設(shè)備用自主開發(fā)的控制板卡取替外購的要節(jié)約人民幣 2 萬元,所以經(jīng)濟(jì)上是可行。 操作可行性硬件電路及底層代碼已有,只要將 USB 轉(zhuǎn) RS232 接入帶有 MCU 電路板上,即可以進(jìn)行上位機(jī)測(cè)試軟件的編寫與調(diào)試,日后制作 MCU 板與外圍電路價(jià)格也很低廉。有專門的測(cè)試軟件,在業(yè)務(wù)軟件運(yùn)行之前對(duì)電器線路進(jìn)行檢查。 功能模塊劃分圖 描述各模塊之間的關(guān)系:(1) 、MCU 使用 LPC2368 微處理器作為上位機(jī)的主控部件,此電路板功能包括: 8 位數(shù)字輸出、8 位數(shù)字輸入、5 路脈寬調(diào)制以及 RS232 通訊芯片以實(shí)現(xiàn) LPC2368 與上位機(jī)通信。(2) 、類 CCUART 封裝于 ,主要實(shí)現(xiàn)上位機(jī)與上位機(jī)通信。(3) 、類 CCommandWord 同樣裝于 ,主要實(shí)現(xiàn)命令的解析。(4) 、類 CInterFaceDlg,用戶界面對(duì)整個(gè)系統(tǒng)進(jìn)行人機(jī)交互。圖 4 系統(tǒng)的實(shí)現(xiàn) 運(yùn)用 API 函數(shù)實(shí)現(xiàn)串口操作 串口相關(guān) API 函數(shù)介紹WINDOWS 的 API 函數(shù)不僅提供了打開和讀寫通訊端口的操作方法,還提供了名目繁多的函數(shù)以支持對(duì)串行通訊的各種操作。常用函數(shù)及作用下:函數(shù)名 作用 CreateFile 打開串口 GetCommState 檢測(cè)串口設(shè)置 SetCommState 設(shè)置串口 BuilderCommDCB 用字符串中的值來填充設(shè)備控制塊 GetCommTimeouts 檢測(cè)通信超時(shí)設(shè)置 SetCommTimeouts 設(shè)置通信超時(shí)參數(shù) SetCommMask 設(shè)定被監(jiān)控事件 WaitCommEvent 等待被監(jiān)控事件發(fā)生 WaitForMultipleObjects 等待多個(gè)被監(jiān)測(cè)對(duì)象的結(jié)果 WriteFile 發(fā)送數(shù)據(jù) ReadFile 接收數(shù)據(jù) GetOverlappedResult 返回最后重疊(異步)操作結(jié)果 PurgeComm 清空串口緩沖區(qū),退出所有相關(guān)操作 CUart(DLL)LPC2368(硬件)CCommandWord(DLL)人機(jī)交互界面(PC)ClearCommError 更新串口狀態(tài)結(jié)構(gòu)體,并清除所有串口硬件錯(cuò)誤 CloseHandle 關(guān)閉串行口用 Windows API 編寫串口程序本身是有巨大優(yōu)點(diǎn)的,因?yàn)榭刂颇芰?huì)更強(qiáng),效率也會(huì)更高。 API 編寫串口,過程一般是這樣的:(1) 、創(chuàng)建串口句柄,用 CreateFile;(2) 、對(duì)串口的參數(shù)進(jìn)行設(shè)置,其中比較重要的是波特率(BaudRate) ,數(shù)據(jù)寬度(BytesBits) ,奇偶校驗(yàn)(Parity) ,停止位(StopBits) ,當(dāng)然,重要的還有端口號(hào)(Port) ;(3) 、然后對(duì)串口進(jìn)行相應(yīng)的讀寫操作,這時(shí)候用到 ReadFile 和 WriteFile 函數(shù);(4) 、讀寫結(jié)束后,要關(guān)閉串口句柄,用 CloseFile。 運(yùn)行維護(hù)系統(tǒng)中串口操作的實(shí)現(xiàn)在 文件中說明類 CUart 成員如下:define BUFSIZE 256 //定義環(huán)型緩沖區(qū)大小struct UartBuffer //定義數(shù)據(jù)包的結(jié)構(gòu){BYTE ReadPoint。BYTE WritePoint。BYTE FullFlag。BYTE CycleBuffer[BUFSIZE]。}。class AFX_CLASS_EXPORT CUart{public:CUart(void)。public:~CUart(void)。public:HANDLE m_hComm。//串口句柄OVERLAPPED m_sOverLapped。//定義overlapped(異步操作)結(jié)構(gòu)體COMSTAT m_sComStat。//定義串口狀態(tài)結(jié)構(gòu)體UartBuffer stBuffer。//定義接收緩沖區(qū)public:BOOL OpenComPort(char *chPortName)。//打開串口BOOL SetupBitRate(DWORD dwBaudRate)。//設(shè)置通信波特率BOOL SetupTimeout(DWORD dwRdInterval,DWORD dwRdTotalMul,DWORD dwRdTotalConst,DWORD dwWtTotalMul,DWORD dwWtTotalConst)。//設(shè)備串口超時(shí)DWORD ReceiveChar(void)。//讀緩沖區(qū)數(shù)據(jù)void WriteChar(BYTE* chTXBuffer,DWORD dwSendCount)。//將數(shù)據(jù)寫向發(fā)送緩沖區(qū) 通訊協(xié)議的建立 上位機(jī)與下位機(jī)指命解析如表 建立上位與下位機(jī)命令解析,如上位機(jī)發(fā)送 0x00000101,最低 8 位(bit0bit7) ,為命令位,01 為向下位機(jī)發(fā)送寫數(shù)字輸出指令,其次 8 位(bit818 )數(shù)據(jù)位第 1 參數(shù),如 01 為寫數(shù)字輸出 1 號(hào)端口。Bit7 = 0 為讀狀態(tài),Bit7 = 1 為寫數(shù)據(jù) 參數(shù)功能 命令字Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Bit8 to Bit31置位數(shù)字輸出 0x01 0 0 0 0 0 0 0 0      清零數(shù)字輸出 0x02 0 1 0 0 0 0 0 0      設(shè)置數(shù)模值 0x03 1 1 0 0 0 0 0 0      設(shè)置脈寬調(diào)制 0x04 0 0 1 0 0 0 0 0 2 參數(shù)    停止脈寬調(diào)制 0x05 1 0 1 0 0 0 0 0      設(shè)置馬達(dá)方向 0x06 0 1 1 0 0 0 0 0      設(shè)置馬達(dá)速度 0x07 1 1 1 0 0 0 0 0      設(shè)置馬達(dá)位移 0x08 0 0 0 1 0 0 0 0      運(yùn)行馬達(dá) 0x09 1 0 0 1 0 0 0 0      停止馬達(dá) 0x0A 0 1 0 1 0 0 0 0      保留 0x0B 1 1 0 1 0 0 0 0      保留 0x0C 0 0 1 1 0 0 0 0                               獲取數(shù)字輸出 0x81 1 0 0 0 0 0 0 1      獲取數(shù)字輸入 0x82 0 1 0 0 0 0 0 1      獲取數(shù)模值 0x83 1 1 0 0 0 0 0 1      獲取模數(shù)值 0x84 0 0 1 0 0 0 0 1 2 參數(shù)    獲取脈寬調(diào)制 0x85 1 0 1 0 0 0 0 1 2 參數(shù)    獲取馬達(dá)速度 0x86 0 1 1 0 0 0 0 1      獲取馬達(dá)位置 0x87 1 1 1 0 0 0 0 1      獲取馬達(dá)方向 0x88 0 0 0 1 0 0 0 1      保留 0x89 1 0 0 1 0 0 0 1      保留 0x8A 0 1 0 1 0 0 0 1      表 上位機(jī)與下位機(jī)通信操作流程圖如圖 為上位機(jī)與下位機(jī)通信機(jī)制圖圖 數(shù)據(jù)交換層代碼的封裝(1) 、通過調(diào)用 WINDOWS 的讀與文件 API 來對(duì)串口進(jìn)行操作,對(duì)這些操作封裝成類CUart。(2) 、將 CCommandWord 擴(kuò)展了上位機(jī)與上位機(jī)的數(shù)據(jù)操作。擴(kuò)展功能函數(shù)如下:class AFX_CLASS_EXPORT CCommandWord{public:CCommandWord(void)。public:~CCommandWord(void)。public:BOOL SetDataOutPut(DWORD PortNum)。\\置位數(shù)字輸出BOOL ClrDataOutPut(DWORD PortNum)。\\清零數(shù)字輸出DWORD GetDataOutPut(void)。 \\獲得數(shù)字輸出狀態(tài)DWORD GetDataInPut(void)。 \\獲得數(shù)字輸入狀態(tài)BOOL SetPWM(DWORD PortNum)。 \\設(shè)置脈寬調(diào)制DWORD GetPWM(DWORD PortNum)。 \\獲得脈寬調(diào)制值DWORD GetAD(DWORD PortNum)。 \\獲得模擬轉(zhuǎn)換數(shù)字值BOOL SetDA(DWORD PortNum)。 \\設(shè)置數(shù)字轉(zhuǎn)換模擬值DWORD GetDA(DWORD PortNum)。 \\獲得數(shù)字轉(zhuǎn)換模擬值BOOL SetMotorLoop(void)。\\ 電機(jī)開始循環(huán)運(yùn)行BOOL StopMotorLoop(void)。\\ 停止電機(jī)循環(huán)運(yùn)行BOOL JogMotorForward(void)。 \\ 點(diǎn)動(dòng)電機(jī)正向運(yùn)行BOOL JogMotorReserve(void)。 \\ 點(diǎn)動(dòng)電機(jī)反向運(yùn)行BOOL SetMotorZero(void)。 \\ 點(diǎn)動(dòng)電機(jī)設(shè)置零位BOOL SetMotorInstance(DWORD instance)。 \\ 設(shè)置電機(jī)運(yùn)動(dòng)距離BOOL SetMotorMaxSpeed(DWORD maxSpeed)。 \\ 設(shè)置電機(jī)運(yùn)動(dòng)最大速度BOOL SetMotorDecSpeed(DWORD addSpeed)。 \\ 設(shè)置電機(jī)加減速度BOOL SetMotorInitSpeed(DWORD initSpeed)。 \\ 設(shè)置電機(jī)運(yùn)動(dòng)初始速度BOOL SetMotorStopSpeed(DWORD stopSpeed)。 \\ 設(shè)置電機(jī)運(yùn)動(dòng)停止速度public:CUart* CommandUart。//定義CUart 成員}。(3) 、將(1)與(2)的兩個(gè)類封裝在 文件中以方便上業(yè)務(wù)軟件的調(diào)用。 用戶界面層的實(shí)現(xiàn) 打開與關(guān)閉串口圖 包括打開與關(guān)閉串口、對(duì)信息欄內(nèi)容進(jìn)行清空與測(cè)試串口。消息函數(shù)如下:(1) 、
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1