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

正文內(nèi)容

基于bs的遠(yuǎn)程查詢系統(tǒng)的設(shè)計(jì)_畢業(yè)設(shè)計(jì)(編輯修改稿)

2025-08-16 08:43 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 2 文件系統(tǒng))。 Jx44b0 uClinux 系統(tǒng)采用的就是 romfs 文件系統(tǒng)。 ( 2) uClinux 根文 件系統(tǒng)的制作 uClinux 發(fā)行版本中包含所有跟文件系統(tǒng)應(yīng)用程序的所有源程序,并可配置以進(jìn)行文件系統(tǒng)的裁剪。文件系統(tǒng)源代碼位于 /home/cvtech/jx44b0/uClinuxdist/us er 目錄下。 在 /home/cvtech/jx44b0/uClinuxdist/目錄下執(zhí)行: make menuconfig 并選擇Customize Vendor/User Setting 后,將打開文件系統(tǒng)配置菜單,用戶可以自由定制。然后執(zhí)行 make 編譯內(nèi)核和文件系統(tǒng),編譯后的文件系統(tǒng)位于/home/cvtech/jx44b0/uClinuxdist/romfs 目錄中,然后通過(guò) genromfs 程序生成文件系統(tǒng)映像文件 /home/cvtech/jx44b0/uClinuxdist/images/。其命令為:genromfs –v –V “ROMdisk” –f ../uClinuxdist/images/ –d ../uClinuxdist/romfs 前一個(gè)目錄是生成的映像文件名(包括路徑),后一個(gè)是文件系統(tǒng)根目錄。 ( 3) uClinux 下應(yīng)用程序的設(shè)計(jì)方法 下面結(jié) 合我所設(shè)計(jì)的具體程序分析 uClinux 下應(yīng)用程序的設(shè)計(jì)方法,我的源程序的文件名為 。 首先用 gedit 工具編輯源程序 ,保存在 /home/cvtech/jx44b0/ad 目錄中。 然后編寫 Makefile 文件,使用 vi 編輯工具編輯 Makefile 文件,如下所示并保存于 /home/cvtech/jx44b0/ad 目錄中。 CC=armelfgcc LD=armelfld EXEC=ad OBJS= CFLAGS+= LDFLAGS+= Wl,elf2flt all:$(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/binary ../uClinuxdist/images/ clean: rm f $(EXEC) *.elf *.gdb *.o $(OBJS): 下面簡(jiǎn)要介紹一下各個(gè)部分的含義 ① 所采用的編譯器和鏈接器 CC=armelfgcc LD=armelfld ② 生成的執(zhí)行文件和鏈接過(guò)程中的目標(biāo)文件 EXEC=ad OBJS= ③ 編譯和鏈接的參數(shù),其中 ”Wl,elf2flt”是必須的,他告訴編譯器產(chǎn)生 flt格式的執(zhí)行文件。 CFLAGS+= LDFLAGS+= Wl,elf2flt ④編譯命令,執(zhí)行完成將生成 ad映像文件。 $(CC) $(LDFLAGS) o $@ $(OBJS) $(LDLIBS$(LDLIBS_$@)) ⑤拷 貝 ad映像文件到 romfs中。 cp $(EXEC) ../uClinuxdist/romfs/bin ⑥生成 romfs映像。 genromfs v V ROMdisk f ../uClinuxdist/images/ d ../uClinuxdist/romfs ⑦將 romfs映像轉(zhuǎn)換成 binary的 , uClinux核心鏈接時(shí)自動(dòng)將該文件鏈接到映像文件中。 $(LD) r o ../uClinuxdist/binary ../uClinuxdist/images/ ⑧清除。 clean: rm f $(EXEC) *.elf *.gdb *.o 其次配置 ad自動(dòng)運(yùn)行。因?yàn)榍度胧皆O(shè)備上的程序應(yīng)該是一直運(yùn)行的,即只要嵌入式設(shè)備開機(jī)就要一直運(yùn)行,所以要將 ad程序配置為開機(jī)自動(dòng)運(yùn)行。這就需要編輯 romfs中的啟動(dòng)腳本文件,該文件為: /home/cvtech/jx44b0/uClinuxdist/romfs/etc/rc 使用 vi編輯器編輯,在該文件最后添加如下腳本: /bin/ad該腳本將啟動(dòng)后運(yùn)行 ad,直到程序退出。或者 /bin/ad amp。他將后臺(tái)運(yùn)行 ad,不影響其他程序的運(yùn)行。本設(shè)計(jì)采用這種方法,可以不影響其他程序的運(yùn)行。 再次編譯 ad,編譯 ad并更新文件系統(tǒng), make clean可以清除過(guò)去編譯留下的二進(jìn)制文件, .elf文件, .gdb文件,以免影響此次編譯。 Make命令就尋找 makefile文件并執(zhí)行。最后重新編譯 uClinux。接著將生成的 zImage映像下載到目標(biāo)版,然后啟動(dòng) uClinux, ad程序就會(huì)自動(dòng)運(yùn)行了。 2.應(yīng)用程序設(shè)計(jì) 由于嵌入式設(shè)備中的程序不能像 pc 上 位機(jī)中的程序那樣方便修改,所以在設(shè)計(jì)時(shí)要充分考慮到靈活性,參數(shù)都要采用可以修改的方式,而修改的方法是從pc 機(jī)上的界面中設(shè)置專門的界面,然后將新信息發(fā)送給嵌入式系統(tǒng),將其寫到文件中, 當(dāng)嵌入式 設(shè)備用到這些參數(shù) 的時(shí)候可以從文件讀取 。后面的冷庫(kù)配置參數(shù),服務(wù)器 ip 地址都是采用此方法。 ( 1)總體設(shè)計(jì)。 嵌入式應(yīng)用程序要實(shí)現(xiàn)的主要功能就是對(duì)冷庫(kù)溫度數(shù)據(jù)的測(cè)量和控制以及傳輸。這個(gè)程序要在開機(jī)狀態(tài)下循環(huán)執(zhí)行,因此是一個(gè)循環(huán)調(diào)用的過(guò)程,三個(gè)模塊的程序?qū)?huì)互相調(diào)用。 首先是數(shù)據(jù)采集模塊數(shù)據(jù),數(shù)據(jù)采集是用實(shí)驗(yàn)箱上的 ad 轉(zhuǎn) 換模塊模擬實(shí)現(xiàn),它按照固定的時(shí)間間隔采集了數(shù)據(jù)之后就調(diào)用數(shù)據(jù)控制模塊,數(shù)據(jù)控制模塊將會(huì)根據(jù)所采集的數(shù)據(jù)值采取相應(yīng)的控制操作,然后調(diào)用傳輸模塊,將數(shù)據(jù)傳送給上位機(jī)。然后回到數(shù)據(jù)采集模塊,如此循環(huán),直到關(guān)機(jī)或程序異常退出。 本模塊應(yīng)當(dāng)盡量考慮到工業(yè)應(yīng)用中的實(shí)際情況,各種參數(shù)應(yīng)當(dāng)設(shè)計(jì)為可以自由修改,這樣可以擴(kuò)大本模塊的應(yīng)用范圍。 ( 2)數(shù)據(jù)采集模塊。 本模塊實(shí)現(xiàn)的主要功能是數(shù)據(jù)采集。實(shí)現(xiàn)中會(huì)遇到的主要問(wèn)題有: 第一,在現(xiàn)實(shí)應(yīng)用中,數(shù)據(jù)采集應(yīng)該是通過(guò)傳感器、變送器傳輸?shù)角度胧皆O(shè)備中,再進(jìn)行 a/d 轉(zhuǎn)換,但由于實(shí) 驗(yàn)設(shè)備的限制,在本設(shè)計(jì)中直接采用實(shí)驗(yàn)箱上的 a/d 轉(zhuǎn)換模塊模擬此過(guò)程。 第二,采樣頻率的讀取。工業(yè)應(yīng)用中的采樣頻率應(yīng)該是隨著冷庫(kù)中的物品而有所差別,不能一概而論。因此需要從上位機(jī)的數(shù)據(jù)庫(kù)中讀出相應(yīng)的冷庫(kù)中存放的物品,并按相應(yīng)的采樣頻率采樣。上位機(jī)將相應(yīng)的參數(shù)設(shè)置(包括采樣頻率,最大值最小值等)發(fā)給嵌入式設(shè)備,嵌入式設(shè)備將其寫入文件 config 然后再?gòu)拇宋募凶x出,無(wú)論何時(shí)改變參數(shù)設(shè)置,都可以保持嵌入式設(shè)備按照最新的采樣頻率進(jìn)行采樣。 第三,采樣時(shí)間間隔的具體實(shí)現(xiàn)過(guò)程。 a/d 轉(zhuǎn)換模塊中采樣的最大時(shí)間間隔也只有 左右,所以用 a/d 轉(zhuǎn)換模塊要實(shí)現(xiàn)長(zhǎng)時(shí)間的采集就要采用一直采集,但是知道要求時(shí)間才將數(shù)據(jù)傳輸給下一個(gè)模塊。讀出文件中要求的采樣間隔時(shí)間,例如:間隔時(shí)間為 300s,則 300/=2419354 則循環(huán)采樣 2419354次之后才可以將數(shù)據(jù)發(fā)送給數(shù)據(jù)控制模塊。 void Test_Adc(void) { int loop_delay,fd,spaceflag=0,display_flag1=100,display_flag2。 int data = 0。 int get_index。 char c。 char sendbuffer[MAXDATASIZE]。 char flagbuf[100]。 rCLKCON=0x7ff8。 if((fd=open(config,O_RDONLY))==1) fprintf(stderr,open failed\n)。 read(fd,amp。c,1)。 while(c!=39。 39。|spaceflag!=2) { if(c==39。 39。) spaceflag++。 else read(fd,amp。c,1)。 } read(fd,flagbuf,5)。 erase_spaces(flagbuf)。 display_flag2=atoi(flagbuf)。 while(1) { int value。 rADCPSR=0xff。 data = 0。 for(get_index = 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ù)和最大值最小值的設(shè)置采用相應(yīng)的措施。本模塊分為兩個(gè)部分,一個(gè)是最大值最小值的讀取,采用的方法和采樣頻率相似,都是由 pc 上位機(jī)發(fā)送給嵌入式設(shè)備,寫入 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ù)和最大值最小值來(lái)判斷應(yīng)該采用的措施。在工業(yè)冷庫(kù)測(cè)控系統(tǒng)中,當(dāng)溫度超高時(shí)應(yīng)該采用開啟壓縮機(jī),溫度過(guò)低時(shí)關(guān)閉壓縮機(jī),由于實(shí)驗(yàn)條件的限制,開關(guān)壓縮機(jī)的操作我們采用開關(guān) led 燈來(lái)模擬。程序如下: void led(int flag) { if(flag==1) *(char *)0x020xx000=0xFF。 else *(char *)0x020xx000=0x00。 } 這個(gè)部分還包括報(bào)警功能,當(dāng)溫度一直保持較高或較低溫度沒(méi)有按照預(yù)定降溫或升溫時(shí),即出現(xiàn)故障(故障原因 可能是因?yàn)閭鞲衅骰蛘邏嚎s機(jī)造成,這個(gè)超出本課題所研究的范疇),就應(yīng)該出現(xiàn)故障報(bào)警。蜂鳴器開啟,而且 lcd 顯示屏上將出現(xiàn)故障提示字樣(溫度過(guò)高或過(guò)低)。 報(bào)警除了上述表現(xiàn)外,還將會(huì)把信息通過(guò) socket 編程發(fā)送給 pc上位機(jī),在pc 機(jī)上也可顯示有嵌入式設(shè)備報(bào)警??梢缘綑C(jī)房查看。 當(dāng)數(shù)據(jù)大于最大值時(shí)的流程圖如下: n y n y 程序如下 : if(datamax) { printf(enter datamax\n)。 if(maxflag==1) { printf(enter temprature higher,display,alarm\n)。 display(溫度過(guò)高 )。 munacate(sendbuffer1)。 myalarm()。 } else { printf(set maxflag,open le
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1