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

正文內(nèi)容

串口設(shè)備遠(yuǎn)程監(jiān)控軟件設(shè)計與實現(xiàn)畢業(yè)論文-文庫吧資料

2025-06-29 07:11本頁面
  

【正文】 個狀態(tài)的狀態(tài)機,用于實現(xiàn)數(shù)據(jù)驗證:Waiting:數(shù)據(jù)等待狀態(tài),當(dāng)接受到數(shù)據(jù)時,則根據(jù)判斷流轉(zhuǎn)到下一個狀態(tài)BYTE_HEAD:幀頭驗證狀態(tài)BYTE_ADDR: 地址驗證狀態(tài)BYTE_CONTROL:控制字驗證狀態(tài)BYTE_LENGTH:數(shù)據(jù)長度驗證狀態(tài)BYTE_DATA:數(shù)據(jù)項驗證狀態(tài)BYTE_CRC:校驗碼驗證狀態(tài)整個狀態(tài)機的流轉(zhuǎn)過程如下圖所示圖 01:串口數(shù)據(jù)接收及驗證機制OnSocket()函數(shù)接收到字符數(shù)據(jù)以后,把接收到的字符存入到事先定義好的Buffer[]緩存數(shù)組。數(shù)據(jù)的驗證機制主要在實現(xiàn)定義好的OnCommunication()函數(shù)中實現(xiàn)。若接收到的數(shù)據(jù)與設(shè)備協(xié)議相符合,則對數(shù)據(jù)進(jìn)行解析處理。以GPS頻標(biāo)時標(biāo)設(shè)備為例,詳細(xì)介紹該過程。 本章通過學(xué)習(xí)底層通信原理及流式套接字編程模型等相關(guān)知識,在VC++中運用調(diào)用socket API中的函數(shù)進(jìn)行編程,來實現(xiàn)客戶端與服務(wù)器的數(shù)據(jù)互通。 }}8)數(shù)據(jù)發(fā)送: ::send(m_socket, (char*)szBuffer, len, 0)。 m_sendWay = SEND_BY_INTERNET。 SetDlgItemText(IDC_BUTTON_CONNECT, _T(斷開連接))。 OnCommunication((WPARAM)buf[i], 0)。 inRead。 int j = 0。 default: buffer[nRead] = 39。 case SOCKET_ERROR: if(GetLastError() != WSAEWOULDBLOCK) AfxMessageBox(Error occurred)。 TRACE(nRead: %d, nRead)。 nRead = ::recv(m_socket, buffer, 128, 0)。 CStringArray strArray。 BYTE buf[128] = {0}。 if(lParam==FD_READ) { TRACE(CGPSctrlView::OnReceive\n)。 ()。7)數(shù)據(jù)接收Void CGPSctrlView::OnSocket(WPARAM wParam,LPARAM lParam) // 有socket數(shù)據(jù)發(fā)來時,調(diào)用此函數(shù){ CString strText, str。6)連接服務(wù)器端connect(m_socket, (sockaddr*)amp。 = inet_addr((1))。4)設(shè)置套接字的阻塞模式:::WSAAsyncSelect(m_socket,thism_hWnd,WM_SOCKET,FD_READ|FD_CONNECT)。3)創(chuàng)建Socket套接字:m_socket=::socket(AF_INET,SOCK_STREAM,0)。 GetDlgItemText(IDC_EDIT_PORT,strPort)。data)。 //定義WSADATA結(jié)構(gòu)體對象 WORD w=MAKEWORD(2,0)。 Client Socket套接字創(chuàng)建在終端監(jiān)控軟件,當(dāng)用戶需要對串口設(shè)備通過網(wǎng)絡(luò)進(jìn)行控制時,點擊連接按鈕,終端軟件建立Client端套接字,實現(xiàn)與串口設(shè)備的通信。當(dāng)有新的設(shè)備需要監(jiān)控時,則在主應(yīng)用程序中新開辟一個線程,該線程用于專門處理新增加設(shè)備數(shù)據(jù)的收發(fā)。2)多線程接收實現(xiàn)當(dāng)串口設(shè)備較多時,則可以利用多線程處理各個設(shè)備數(shù)據(jù)的收發(fā)。OnSocket消息響應(yīng)函數(shù)添加步驟如下:定義Onsocket消息:define WM_SOCKET (WM_USER+100)定義OnSocket()消息響應(yīng)函數(shù):afx_msg void OnSocket(WPARAM wParam,LPARAM lParam)。s 標(biāo)識一個需要事件通知的套接口的描述符.hWnd 標(biāo)識一個在網(wǎng)絡(luò)事件發(fā)生時需要接收消息的窗口句柄.wMsg 在網(wǎng)絡(luò)事件發(fā)生時要接收的消息.lEvent位屏蔽碼,用于指明應(yīng)用程序感興趣的網(wǎng)絡(luò)事件集合.lEvent參數(shù)由下表中列出的值組成:FD_READ 欲接收讀準(zhǔn)備好的通知.FD_WRITE 欲接收寫準(zhǔn)備好的通知.FD_OOB 欲接收帶邊數(shù)據(jù)到達(dá)的通知.FD_ACCEPT 欲接收將要連接的通知.FD_CONNECT 欲接收已連接好的通知.FD_CLOSE 欲接收套接口關(guān)閉的通知.實際編程時,則根據(jù)需要注冊響應(yīng)的網(wǎng)絡(luò)事件。1)Socket消息響應(yīng)實現(xiàn)數(shù)據(jù)接收利用Socket消息響應(yīng)實現(xiàn)數(shù)據(jù)收發(fā),首先需要利用WSAAsyncSelect()注冊消息響應(yīng)類型。一種是通過WSAAsyncSelect()函數(shù)注冊Socket套接字消息響應(yīng)來進(jìn)行實現(xiàn),這是最普遍的。 Client接收數(shù)據(jù)處理 串口設(shè)備數(shù)據(jù)的收發(fā)以字符形式進(jìn)行??蛻魴C與服務(wù)器通信過程如圖53所示:圖 03:客戶機服務(wù)器底層通信過程 TCP Client端Socket的編程實現(xiàn) 串口聯(lián)網(wǎng)實現(xiàn)串口設(shè)備的網(wǎng)絡(luò)互聯(lián),其主要的編程在于實現(xiàn)Client端上位機的監(jiān)控設(shè)計。7)關(guān)閉套接字,關(guān)閉加載的套接字庫(closesocket()/WSACleanup())。6)返回,等待另一連接請求;5)用返回的套接字和客戶端進(jìn)行通信(send()/recv());4)請求到來后,接受連接請求,返回一個新的對應(yīng)于此次連接的套接字(accept());3)將套接字設(shè)置為監(jiān)聽模式等待連接請求(listen());2)綁定套接字到一個IP地址和一個端口上(bind());1)加載套接字庫,創(chuàng)建套接字(WSAStartup()/socket());基本的編程步驟如下:服務(wù)器端編程的步驟: sockets(套接字)編程有三種,流式套接字(SOCK_STREAM),數(shù)據(jù)報套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);基于TCP的socket編程是采用的流式套接字。 MFC下Socket編程基本步驟CArchive 類扮演的是一個數(shù)據(jù)緩沖區(qū)的角色,它通過 CSocketFile 類與一個套接字相聯(lián)系。CSocket 類支持流方式和數(shù)據(jù)報方式,但一般情況下用的更多的是流方式的數(shù)據(jù)通信。 它提供了一個類用以保留網(wǎng)絡(luò)編程的靈活性,而方便性則由CSocket 類來提供。 如果想利用 Windows Sockets 方便地處理 MFC 應(yīng)用程序中的多個網(wǎng)絡(luò)協(xié)議, 而又不想放棄靈活性, 可以考慮使用CAsyncSocket 。1) CAsyncSocket 類CAsyncSocket 類一對一地封裝 Windows Socket API。13)recvfrom 接收目標(biāo)地址傳來的數(shù)據(jù)信息函數(shù)原型:int recvfrom(IN SOCKET s,OUT char FAR * buf,IN int len,IN int flags,OUT struct sockaddr FAR * from,IN OUT int FAR * fromlen)。函數(shù)原型:int WSAAsyncSelect(SOCKET s,HWND hWnd, //接收網(wǎng)絡(luò)事件的窗口句柄unsigned int wMsg,//發(fā)送給窗口的網(wǎng)絡(luò)事件消息long lEvent //網(wǎng)絡(luò)消息)。返回值:接收到的字節(jié)數(shù)10)send 對已經(jīng)建立連接的 socket 發(fā)送數(shù)據(jù)信息函數(shù)原型:int send(SOCKET s,char FAR* buf, //發(fā)送數(shù)據(jù)緩沖區(qū)int len ,// 緩沖區(qū)長度int flags //有 MSG_PEEK 和 MSG_OOB)。函數(shù)原型:int connect(SOCKET s, // 將要連接的 socketconst struct sockaddr FAR* name, // 目標(biāo) socket 地址int namelen // 地址結(jié)構(gòu) sizeof)。8)connect 連接客戶端的 socket 到指定的網(wǎng)絡(luò)服務(wù)器。7) accept 接受一個 socket 的連接請求, 同時返回一個新的 socket ,新的 socket 用來在服務(wù)器與客戶端之間傳遞和接收信息。}。struct in_addr sin_addr。struct sockaddr_in{short sin_family。char sa_data[4]。4)closesocket 關(guān)閉套接字函數(shù)原型:int closesocket(SOCKET s //要關(guān)閉的套接字)。3)socket 用于建立 Sockets。endif} WSADATA, FAR * LPWSADATA。unsigned short iMaxUdpDg。char szSystemStatus[WSASYS_STATUS_LEN+1]。char szSystemStatus[WSASYS_STATUS_LEN+1]。char FAR * lpVendorInfo。ifdef _WIN64unsigned short iMaxSockets。主要的API函數(shù)如下:1) WSAStartup 調(diào)用 windows Socket DLL 函數(shù)原型 int WSAStartup(WORD wVersionRequested, // 應(yīng)用程序要求的 sockets 版本LPWSADATA lpWSAData //指向數(shù)據(jù)結(jié)構(gòu) WSDATA 的指針,//得到 windows Socket 的具體信息) ;WSDATA 定義如下:typedef struct WSAData {WORD wVersion。通信完成后,服務(wù)器和客戶機關(guān)閉套接字。當(dāng)服務(wù)器接收到來自客戶機的連接請求后,與客戶機建立連接。其主要的編程模型如下:圖 02:流式套接字編程模型在該模型中,服務(wù)器端創(chuàng)建并初始化套接字,監(jiān)聽來自客戶端的連接請求。流式套接字提供沒有記錄邊界的數(shù)據(jù)流,即字節(jié)流。MFC中對socket編程有很好的支持,這為物聯(lián)網(wǎng)串口設(shè)備遠(yuǎn)程監(jiān)控提供了便利。 MFC中TCP socket編程串口聯(lián)網(wǎng)網(wǎng)絡(luò)中,串口設(shè)備與PC端監(jiān)控軟件的通信,主要通過TCP socket套接字實現(xiàn)。以康海時代NC600系列串口服務(wù)器為例,其設(shè)置步驟如下:1) 用IE內(nèi)核的瀏覽器登錄串口服務(wù)器的IP地址,進(jìn)入設(shè)置主界面2) 在串口配置項里面配置好響應(yīng)設(shè)備串口的波特率燈參數(shù)。運行在PC的Client監(jiān)控終端,通過Socket與運行在串口服務(wù)器的Server端建立通信連接,進(jìn)而控制串口設(shè)備。其中串口服務(wù)器運行TCP Server端,PC監(jiān)控終端則設(shè)計為TCP Client端。第三章串口聯(lián)網(wǎng)服務(wù)器通訊底層 通信底層設(shè)計串口聯(lián)網(wǎng)軟件底層以其硬件架構(gòu)為基礎(chǔ)。軟件方面,介紹了編寫程序時所需要的VC++軟件,及MFC框架。M
點擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1