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

正文內容

基于bs的遠程查詢系統(tǒng)的設計畢業(yè)設計(編輯修改稿)

2025-07-15 17:03 本頁面
 

【文章內容簡介】 x = 0。 get_index 16。 get_index++) { rADCCON=0x1|(0x32)。 // AIN3 while(!(rADCCON amp。 0x40))。 data+=rADCDAT。 for(loop_delay=1000。 loop_delay。 loop_delay)。 } data /= 32。 value = trans_input(data)。 sprintf(sendbuffer,%d,value)。 //display_buffer[0] = value。 if(display_flag2==0) { printf(anti3 is %d\n,value)。 datacontrol(value)。 munacate(sendbuffer)。 display_flag2=atoi(flagbuf)。 } else display_flag2。 for(loop_delay=100000。 loop_delay。 loop_delay)。 }} (3)數(shù)據(jù)控制模塊。 數(shù)據(jù)控制模塊主要是根據(jù)采集到的數(shù)據(jù)和最大值最小值的設置采用相應的措施。本模塊分為兩個部分,一個是最大值最小值的讀取,采用的方法和采樣頻率相似,都是由pc上位機發(fā)送給嵌入式設備,寫入config文件,然后即可從文件中讀取。程序如下if((fd=open(config,O_RDONLY))==1) fprintf(stderr,open failed\n)。 lseek(fd,1,0)。 read(fd,amp。c,1)。 while(c!=39。 39。) { read(fd,amp。c,1)。 bitflag++。 } lseek(fd,1,0)。 read(fd,cfbuffer,bitflag)。 erase_spaces(cfbuffer)。 max=atoi(cfbuffer)。 bzero(amp。cfbuffer,sizeof(cfbuffer))。 lseek(fd,1,1)。 read(fd,amp。c,1)。 while(c!=39。 39。) { read(fd,amp。c,1)。 minbitflag++。 } lseek(fd,bitflag+2,0)。 read(fd,cfbuffer,minbitflag)。 erase_spaces(cfbuffer)。 min=atoi(cfbuffer)。 bzero(amp。cfbuffer,sizeof(cfbuffer))。 close(fd)。 另一部分是根據(jù)采集到的數(shù)據(jù)和最大值最小值來判斷應該采用的措施。在工業(yè)冷庫測控系統(tǒng)中,當溫度超高時應該采用開啟壓縮機,溫度過低時關閉壓縮機,由于實驗條件的限制,開關壓縮機的操作我們采用開關led燈來模擬。程序如下:void led(int flag){ if(flag==1) *(char *)0x02000000=0xFF。 else *(char *)0x02000000=0x00。} 這個部分還包括報警功能,當溫度一直保持較高或較低溫度沒有按照預定降溫或升溫時,即出現(xiàn)故障(故障原因可能是因為傳感器或者壓縮機造成,這個超出本課題所研究的范疇),就應該出現(xiàn)故障報警。蜂鳴器開啟,而且lcd顯示屏上將出現(xiàn)故障提示字樣(溫度過高或過低)。報警除了上述表現(xiàn)外,還將會把信息通過socket編程發(fā)送給pc上位機,在pc機上也可顯示有嵌入式設備報警??梢缘綑C房查看。 當數(shù)據(jù)大于最大值時的流程圖如下:datamax n y清屏,開壓縮機maxflag=1minfalg=0Maxflag=1 n y報警,告知pc機,在lcd上顯示結束程序如下:if(datamax) { printf(enter datamax\n)。 if(maxflag==1) { printf(enter temprature higher,display,alarm\n)。 display(溫度過高)。 munacate(sendbuffer1)。 myalarm()。 } else { printf(set maxflag,open led\n)。 lcd_clear_screen(WHITE)。 maxflag=1。 led(0)。 minflag=0。 } }小于的部分同理可知。 (4)數(shù)據(jù)通訊模塊。 這個模塊負責實現(xiàn)和pc上位機的通訊。嵌入式系統(tǒng)發(fā)給pc上位機的數(shù)據(jù)包有三種。第一種,警報(冷庫ip,溫度過高還是過低),這種消息以warn開頭。第二種,冷庫數(shù)據(jù)(冷庫ip,溫度),這種消息以data開頭。第三種,啟動時發(fā)送ip。這種消息以ipad開頭。由于發(fā)送的必須為字符串,所以要將數(shù)值型數(shù)據(jù)轉化為字符串。同時由于linux下并不支持itoa或者ftoa函數(shù),由于linux不支持相應的庫,所以采用sprintf函數(shù)將數(shù)值轉化為字符串。Sprintf函數(shù)的用法如下: int sprintf(char *str, char *format, variablelist)。 它與printf()函數(shù)不同之處是將按格式化規(guī)定的內容寫入str 指向的字符串中, 返回值等于寫入的字符個數(shù)。 由于數(shù)據(jù)通訊模塊的具體實現(xiàn)方法是采用socket編程,因此將此模塊具體實現(xiàn)放在后面介紹socket編程的部分講解。 數(shù)據(jù)通訊模塊還要涉及的一個操作就是暫時保存不能發(fā)送的數(shù)據(jù)。網絡如果暫時產生故障,那么在故障期內嵌入式設備采集的數(shù)據(jù)必須暫時保存,待到網絡正常后在一起發(fā)送給pc上位機。在這里我們不采用嵌入式內嵌數(shù)據(jù)庫,直接采用文件讀寫。因為數(shù)據(jù)量不大,而且我們信任網絡的可靠性,不會產生長時間癱瘓。三、嵌入式設備與pc上位機的通信(一)、Socket編程簡介1.網絡基礎知識。(1)計算機網絡的概念。 我們現(xiàn)在已經進入了一個以網絡為核心的信息時代。計算機網絡已經滲透到社會生活的各個方面?,F(xiàn)在計算機網絡普遍遵守的是tcp/ip協(xié)議集的協(xié)議,將網絡分為四層結構,即數(shù)據(jù)鏈路層,網絡層,運輸層和應用層。如圖所示 用戶進程用戶進程用戶進程用戶進程 應用層TCPUDP 運輸層ICMPIPIGMP 網絡層ARP硬件接口RARP 鏈路層 傳輸介質 本設計采用的是tcp協(xié)議傳輸數(shù)據(jù),因此在此簡要介紹一下tcp建立連接的過程。Tcp建立連接是一個三路握手的過程。如圖所示 客戶端 服務器端 Socket socket,bind,listenConnect(阻塞 SYN J accept(阻塞) SYN K,ack J+1Connect返回 ack K+1 Accept返回(2)網絡通訊與傳統(tǒng)通信方式的區(qū)別 傳統(tǒng)的串口通訊方式主要有RS232和RS485兩種,他們的直連距離和傳送速率都不高。RS232接口標準的直連距離僅為15米,傳送速率小于20Kb/s。RS485的直連距離和傳送速率雖然有所提高,但是相對于百兆以太網來說還是相距甚遠。 傳統(tǒng)的串口通訊方式的劣勢不只在傳送距離和速率上,在其方便性上也遠遠不如以太網通訊。由于我們的嵌入式設備采用了uClinux操作系統(tǒng),它本身支持網絡通訊,提供的是10M網卡,我們只需要遵循TCP/IP協(xié)議接收和發(fā)送內容即可,不需了解其他內容。2.Socket編程的概念。(1)套接口Socket概念簡介。 Socket是一種雙向的通訊端口,一對互聯(lián)的套接口提供通訊接口,使兩端都可以傳輸數(shù)據(jù),具體地說,Socket類似于UNIX下的管道,使用方法與雙工管道很類似。 Socket 套接口增加了網絡通信操作的抽象定義,與文件操作一樣,每個打開的socket都對應一個整數(shù),我們稱它為socket描述符,該整數(shù)也是socket描述符在文件描述符表中的索引值。只不過socket描述符在描述符表中的表項并不指向文件表,而是指向一個與該socket有關的數(shù)據(jù)結構。 使用系統(tǒng)調用socket,我們可以得到socket描述符,然后可以使用send和recv調用而與其它的程序通信。我們也可以使用一般的文件操作來調用read和write對socket描述符進行讀寫,從而與其它的程序進行通訊。(2)套接口Socket使用簡介。 網絡編程中最常見的是客戶/服務器模式。以該模式編程時,服務器有一個進程或多個進程(本設計采用的是多個線程,這在下面將給予介紹)在指定的端口等待客戶來連接,服務器程序等待客戶的連接信息,一旦連接上之后,就可以按約定的數(shù)據(jù)交換方法和格式進行數(shù)據(jù)流傳輸??蛻舳嗽谛枰臅r刻發(fā)出向服務端的連接請求。使用tcp/ip協(xié)議通信時,最常見的應用模式流程如下圖所示: SocketBindSocketListenAcceptConnect 建立連接ReadWrite 數(shù)據(jù)流 WriteRead 數(shù)據(jù)流CloseClose為了和多個客戶通信,服務器端一般在accept返回后創(chuàng)建一個新的進程進行與客戶端的通信,父進程則回到accpet調用處等待另一個連接??蛻舳诉M程一般先使用socket調用得到一個socket描述符,然后使用connect向指定的服務器上的指定端口發(fā)起連接,一旦連接成功返回,就說明已經建立了與服務器的連接,這時客戶段就可以通過socket描述符進行讀寫操作了。(3)套接口地址結構。 首先介紹的是通用套接口地址結構,在sys/中定義,其結構如下: struct sockaddr{ ussigned short sa_family。 /*address family,AF_xxx*/ char sa_data[14]。 /*14 bytes of protocol address*/ }。 其中,字段sa_family是協(xié)議族,指出通信協(xié)議類型,對于internet域的地址族為AF_INET。 字段sa_da存儲實際地址(不同的協(xié)議族地址格式不一樣)。(4)套接口編程的基本系統(tǒng)調用。 ①Socket函數(shù): 功能:系統(tǒng)調用socket來獲得一個socket描述符,調用格式如下: socket(int domain,int type,int protocol); socket 函數(shù)指定了協(xié)議族(IPvIPv6或unix)和套接口類型(字節(jié)流、數(shù)據(jù)報或原始套接口)。但并沒有指定本地協(xié)議地址或遠程協(xié)議地址。 ②bind 函數(shù):功能:給套接口分配一個本地協(xié)議地址int bind(int sockfd, const struct sockaddr *my_addr, int addrlen)。sockfd 是調用 socket 返回的文件描述符。my_addr 是指向數(shù)據(jù)結構 struct sockaddr 的指針,保存地址(即端口和 IP 地址) 信息。addrlen 設置為 sizeof(struct sockaddr)。讓內核自動處理地址ip和端口port = 0。 /* choose an unused port at random */ = INADDR_ANY。 /* use my IP address */bind( ) 自己選擇合適的端口:將0賦給 。自動填上他所運行的機器的 IP 地址: 設置為INADDR_ANY。③connect 函數(shù):功能:建立與TCP服務器的連接int connect(int sockfd, struct sockaddr *serv_addr, int addrlen)。serv_addr 是保存著目的地端口和 IP 地址的數(shù)據(jù)結構 struct sockaddrconnect 激發(fā) TCP的三路握手過程④listen 函數(shù)功能:將未連接主動套接口的轉換為被動套接口,指示內核接受對該套接口的連接請求。int listen(int sockfd, int backlog)。sockfd 是調用 socket() 返回的套接口文件描述符。backlog 是在進入隊列中允許的連接數(shù)目。如果當客戶的連接請求到來時,服務端的隊列已滿,則客戶請求被忽略,客戶tcp將重發(fā)連接請求。⑤acce
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1