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

正文內(nèi)容

基于bs的遠(yuǎn)程查詢系統(tǒng)的設(shè)計(jì)畢業(yè)設(shè)計(jì)-文庫吧資料

2025-06-24 17:03本頁面
  

【正文】 ss family,AF_xxx*/ char sa_data[14]。(3)套接口地址結(jié)構(gòu)。使用tcp/ip協(xié)議通信時(shí),最常見的應(yīng)用模式流程如下圖所示: SocketBindSocketListenAcceptConnect 建立連接ReadWrite 數(shù)據(jù)流 WriteRead 數(shù)據(jù)流CloseClose為了和多個客戶通信,服務(wù)器端一般在accept返回后創(chuàng)建一個新的進(jìn)程進(jìn)行與客戶端的通信,父進(jìn)程則回到accpet調(diào)用處等待另一個連接。以該模式編程時(shí),服務(wù)器有一個進(jìn)程或多個進(jìn)程(本設(shè)計(jì)采用的是多個線程,這在下面將給予介紹)在指定的端口等待客戶來連接,服務(wù)器程序等待客戶的連接信息,一旦連接上之后,就可以按約定的數(shù)據(jù)交換方法和格式進(jìn)行數(shù)據(jù)流傳輸。(2)套接口Socket使用簡介。 使用系統(tǒng)調(diào)用socket,我們可以得到socket描述符,然后可以使用send和recv調(diào)用而與其它的程序通信。 Socket 套接口增加了網(wǎng)絡(luò)通信操作的抽象定義,與文件操作一樣,每個打開的socket都對應(yīng)一個整數(shù),我們稱它為socket描述符,該整數(shù)也是socket描述符在文件描述符表中的索引值。(1)套接口Socket概念簡介。由于我們的嵌入式設(shè)備采用了uClinux操作系統(tǒng),它本身支持網(wǎng)絡(luò)通訊,提供的是10M網(wǎng)卡,我們只需要遵循TCP/IP協(xié)議接收和發(fā)送內(nèi)容即可,不需了解其他內(nèi)容。RS485的直連距離和傳送速率雖然有所提高,但是相對于百兆以太網(wǎng)來說還是相距甚遠(yuǎn)。如圖所示 客戶端 服務(wù)器端 Socket socket,bind,listenConnect(阻塞 SYN J accept(阻塞) SYN K,ack J+1Connect返回 ack K+1 Accept返回(2)網(wǎng)絡(luò)通訊與傳統(tǒng)通信方式的區(qū)別 傳統(tǒng)的串口通訊方式主要有RS232和RS485兩種,他們的直連距離和傳送速率都不高。如圖所示 用戶進(jìn)程用戶進(jìn)程用戶進(jìn)程用戶進(jìn)程 應(yīng)用層TCPUDP 運(yùn)輸層ICMPIPIGMP 網(wǎng)絡(luò)層ARP硬件接口RARP 鏈路層 傳輸介質(zhì) 本設(shè)計(jì)采用的是tcp協(xié)議傳輸數(shù)據(jù),因此在此簡要介紹一下tcp建立連接的過程。計(jì)算機(jī)網(wǎng)絡(luò)已經(jīng)滲透到社會生活的各個方面。(1)計(jì)算機(jī)網(wǎng)絡(luò)的概念。因?yàn)閿?shù)據(jù)量不大,而且我們信任網(wǎng)絡(luò)的可靠性,不會產(chǎn)生長時(shí)間癱瘓。網(wǎng)絡(luò)如果暫時(shí)產(chǎn)生故障,那么在故障期內(nèi)嵌入式設(shè)備采集的數(shù)據(jù)必須暫時(shí)保存,待到網(wǎng)絡(luò)正常后在一起發(fā)送給pc上位機(jī)。 由于數(shù)據(jù)通訊模塊的具體實(shí)現(xiàn)方法是采用socket編程,因此將此模塊具體實(shí)現(xiàn)放在后面介紹socket編程的部分講解。 同時(shí)由于linux下并不支持itoa或者ftoa函數(shù),由于linux不支持相應(yīng)的庫,所以采用sprintf函數(shù)將數(shù)值轉(zhuǎn)化為字符串。這種消息以ipad開頭。第二種,冷庫數(shù)據(jù)(冷庫ip,溫度),這種消息以data開頭。嵌入式系統(tǒng)發(fā)給pc上位機(jī)的數(shù)據(jù)包有三種。 (4)數(shù)據(jù)通訊模塊。 minflag=0。 maxflag=1。 } else { printf(set maxflag,open led\n)。 munacate(sendbuffer1)。 if(maxflag==1) { printf(enter temprature higher,display,alarm\n)??梢缘綑C(jī)房查看。蜂鳴器開啟,而且lcd顯示屏上將出現(xiàn)故障提示字樣(溫度過高或過低)。 else *(char *)0x02000000=0x00。在工業(yè)冷庫測控系統(tǒng)中,當(dāng)溫度超高時(shí)應(yīng)該采用開啟壓縮機(jī),溫度過低時(shí)關(guān)閉壓縮機(jī),由于實(shí)驗(yàn)條件的限制,開關(guān)壓縮機(jī)的操作我們采用開關(guān)led燈來模擬。 close(fd)。 bzero(amp。 erase_spaces(cfbuffer)。 } lseek(fd,bitflag+2,0)。c,1)。 39。c,1)。 lseek(fd,1,1)。 bzero(amp。 erase_spaces(cfbuffer)。 } lseek(fd,1,0)。c,1)。 39。c,1)。 lseek(fd,1,0)。本模塊分為兩個部分,一個是最大值最小值的讀取,采用的方法和采樣頻率相似,都是由pc上位機(jī)發(fā)送給嵌入式設(shè)備,寫入config文件,然后即可從文件中讀取。 }} (3)數(shù)據(jù)控制模塊。 loop_delay。 } else display_flag2。 munacate(sendbuffer)。 if(display_flag2==0) { printf(anti3 is %d\n,value)。 sprintf(sendbuffer,%d,value)。 } data /= 32。 loop_delay。 data+=rADCDAT。 // AIN3 while(!(rADCCON amp。 get_index 16。data = 0。 while(1) { int value。 erase_spaces(flagbuf)。c,1)。) spaceflag++。|spaceflag!=2) { if(c==39。 while(c!=39。 read(fd,amp。 rCLKCON=0x7ff8。 char sendbuffer[MAXDATASIZE]。 int get_index。 void Test_Adc(void){ int loop_delay,fd,spaceflag=0,display_flag1=100,display_flag2。a/,所以用a/d轉(zhuǎn)換模塊要實(shí)現(xiàn)長時(shí)間的采集就要采用一直采集,但是知道要求時(shí)間才將數(shù)據(jù)傳輸給下一個模塊。上位機(jī)將相應(yīng)的參數(shù)設(shè)置(包括采樣頻率,最大值最小值等)發(fā)給嵌入式設(shè)備,嵌入式設(shè)備將其寫入文件config然后再從此文件中讀出,無論何時(shí)改變參數(shù)設(shè)置,都可以保持嵌入式設(shè)備按照最新的采樣頻率進(jìn)行采樣。工業(yè)應(yīng)用中的采樣頻率應(yīng)該是隨著冷庫中的物品而有所差別,不能一概而論。實(shí)現(xiàn)中會遇到的主要問題有:第一,在現(xiàn)實(shí)應(yīng)用中,數(shù)據(jù)采集應(yīng)該是通過傳感器、變送器傳輸?shù)角度胧皆O(shè)備中,再進(jìn)行a/d轉(zhuǎn)換,但由于實(shí)驗(yàn)設(shè)備的限制,在本設(shè)計(jì)中直接采用實(shí)驗(yàn)箱上的a/d轉(zhuǎn)換模塊模擬此過程。 (2)數(shù)據(jù)采集模塊。然后回到數(shù)據(jù)采集模塊,如此循環(huán),直到關(guān)機(jī)或程序異常退出。這個程序要在開機(jī)狀態(tài)下循環(huán)執(zhí)行,因此是一個循環(huán)調(diào)用的過程,三個模塊的程序?qū)ハ嗾{(diào)用。 (1)總體設(shè)計(jì)。2.應(yīng)用程序設(shè)計(jì) 由于嵌入式設(shè)備中的程序不能像pc上位機(jī)中的程序那樣方便修改,所以在設(shè)計(jì)時(shí)要充分考慮到靈活性,參數(shù)都要采用可以修改的方式,而修改的方法是從pc機(jī)上的界面中設(shè)置專門的界面,然后將新信息發(fā)送給嵌入式系統(tǒng),將其寫到文件中,當(dāng)嵌入式設(shè)備用到這些參數(shù)的時(shí)候可以從文件讀取。最后重新編譯uClinux。再次編譯ad,編譯ad并更新文件系統(tǒng),make clean可以清除過去編譯留下的二進(jìn)制文件,.elf文件,.gdb文件,以免影響此次編譯。他將后臺運(yùn)行ad,不影響其他程序的運(yùn)行。這就需要編輯romfs中的啟動腳本文件,該文件為:/home/cvtech/jx44b0/uClinuxdist/romfs/etc/rc使用vi編輯器編輯,在該文件最后添加如下腳本:/bin/ad該腳本將啟動后運(yùn)行ad,直到程序退出。clean: rm f $(EXEC) *.elf *.gdb *.o其次配置ad自動運(yùn)行。genromfs v V ROMdisk f ../uClinuxdist/images/ d ../uClinuxdist/romfs⑦,uClinux核心鏈接時(shí)自動將該文件鏈接到映像文件中。$(CC) $(LDFLAGS) o $ $(OBJS) $(LDLIBS$(LDLIBS_$))⑤拷貝ad映像文件到romfs中。CC=armelfgccLD=armelfldEXEC=adOBJS=CFLAGS+=LDFLAGS+= Wl,elf2fltall:$(EXEC)$(EXEC):$(OBJS) $(CC) $(LDFLAGS) o $ $(OBJS) $(LDLIBS$(LDLIBS_$)) cp $(EXEC) ../uClinuxdist/romfs/bin genromfs v V ROMdisk f ../uClinuxdist/images/ d ../uClinuxdist/romfs $(LD) r o ../uClinuxdist/clean: rm f $(EXEC) *.elf *.gdb *.o$(OBJS):下面簡要介紹一下各個部分的含義①所采用的編譯器和鏈接器CC=armelfgccLD=armelfld②生成的執(zhí)行文件和鏈接過程中的目標(biāo)文件EXEC=adOBJS=③編譯和鏈接的參數(shù),其中”Wl,elf2flt”是必須的,他告訴編譯器產(chǎn)生flt格式的執(zhí)行文件。 ,保存在/home/cvtech/jx44b0/ad目錄中。其命令為:genromfs –v –V “ROMdisk” –f ../uClinuxdist/images/ –d ../uClinuxdist/romfs前一個目錄是生成的映像文件名(包括路徑),后一個是文件系統(tǒng)根目錄。 在/home/cvtech/jx44b0/uClinuxdist/目錄下執(zhí)行:make menuconfig并選擇Customize Vendor/User Setting后,將打開文件系統(tǒng)配置菜單,用戶可以自由定制。 (2)uClinux根文件系統(tǒng)的制作 uClinux發(fā)行版本中包含所有跟文件系統(tǒng)應(yīng)用程序的所有源程序,并可配置以進(jìn)行文件系統(tǒng)的裁剪。Romfs文件系統(tǒng)不支持動態(tài)擦寫保存,對于系統(tǒng)需要動態(tài)保存的數(shù)據(jù)采用虛擬RAM盤的方法進(jìn)行處理(RAM盤將采用ext2文件系統(tǒng))。 本課題采用的是romfs文件系統(tǒng),它的特點(diǎn)如下:Romfs文件系統(tǒng)是一個精簡的只讀文件系統(tǒng)。(三)、uClinux下應(yīng)用程序的設(shè)計(jì)1.uClinux下的文件系統(tǒng)及應(yīng)用程序設(shè)計(jì)方法 (1)文件系統(tǒng)簡介 隨著Linux的不斷發(fā)展,它所支持的文件格式系統(tǒng)也在迅速擴(kuò)充。在內(nèi)核編譯的過程中,將會調(diào)用此Makefile文件,此文件的作用是構(gòu)成Root文件系統(tǒng),并進(jìn)行壓縮。保存后顯示內(nèi)核配置選項(xiàng),各項(xiàng)意義如下表: 鍵入命令make dep建立依賴關(guān)系鍵入命令make zImage編譯內(nèi)核生成的uClinux映像文件保存在/home/cvtech/jx44b0/uClinuxdist/images目錄下。(4)編譯uClinux內(nèi)核鍵入命令cd /home/cvtech/jx44b0/uClinuxdist/ make menuconfig啟動菜單配置工具后,選擇Load an Alternate Configuration File選項(xiàng),然后確認(rèn)。(3)uClinux源代碼的安裝 ,在Redhat下將該文件拷貝到/home/cvtech/jx44b0目錄下,然后在該目錄下執(zhí)行tar zxvf 。得到這個文件以后,執(zhí)行以下命令:sh 。將主機(jī)系統(tǒng)(運(yùn)行編譯器的系統(tǒng))和目標(biāo)系統(tǒng)(產(chǎn)生的程序?qū)⒃谄渖线\(yùn)行的系統(tǒng))不兼容時(shí),該過程就叫做交叉編譯。因此操作系統(tǒng)在運(yùn)行時(shí)必須初始化特定目標(biāo)板的器件。②基于平臺的移植 這種移植相對于處理器的移植而言所處的開發(fā)層次更高,主要在板級上進(jìn)行。另外從編寫應(yīng)用的角度來看,還必須提供函數(shù)庫。這是最主要也是最困難的一步。然后通過jx44b0提供的BootLoader將該文件下載到目標(biāo)板并運(yùn)行。在主機(jī)的Red Hat Linux操作系統(tǒng)下安裝uClinuxdist發(fā)行包以及交叉編譯器armelftools。3.uClinux的移植。隨著M68K系列微處理器延續(xù)到ColdFire系列微處理器,uclinux主要也就集中應(yīng)用在ColdFire微處理器上。在很多工程師的共同努力工作下,Linux經(jīng)過改進(jìn)以后可以在這些沒有MMU的微處理器上運(yùn)行,uClinux就是其中最著名的發(fā)行版本之一。Linux操作系統(tǒng)從誕生之初就是一個免費(fèi)的操作系統(tǒng),可初期的Linux版本確不能直接運(yùn)行于傳統(tǒng)的工業(yè)控制用微處理器,因?yàn)楣I(yè)控制上大量使用的微處理器一般不需要內(nèi)存管理的功能,所以一般的都不會有MMU。2.u
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1