LinuxAD采樣多線程_第1頁(yè)
LinuxAD采樣多線程_第2頁(yè)
LinuxAD采樣多線程_第3頁(yè)
LinuxAD采樣多線程_第4頁(yè)
LinuxAD采樣多線程_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、嵌入式系統(tǒng)原理及應(yīng)用實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)六 多線程實(shí)驗(yàn)和AD實(shí)驗(yàn) 院 (系) 專(zhuān) 業(yè) 小組成員 成 績(jī) 指導(dǎo)教師 年 月一實(shí)驗(yàn)要求1. 參考實(shí)驗(yàn)指導(dǎo)書(shū)多線程實(shí)驗(yàn)和AD實(shí)驗(yàn),分析源碼。2. 編寫(xiě)AD采集多線程程序,實(shí)現(xiàn)以下功能:1) 線程1:在循環(huán)中對(duì)指定的AD通道進(jìn)行轉(zhuǎn)換和顯示,顯示格式為:ADx = *.*V 。其中x為通道號(hào)0-2,初始值為0。每循環(huán)一次延時(shí)300ms。2) 線程2:接受用戶輸入,當(dāng)輸入數(shù)值0-2時(shí)表示指定AD通道線程1的通道號(hào)要隨指定值改變; 當(dāng)輸入字符S時(shí)顯示暫停;輸入ESC時(shí)程序終止退出。輸入其他鍵值時(shí)維持原狀。3. 擴(kuò)展部分:將線程1分為2個(gè)線程,一個(gè)用來(lái)計(jì)算,一個(gè)用來(lái)顯示

2、。2.1 實(shí)驗(yàn)步驟1 將編成完的程序打包放入虛擬機(jī)192.168.0.10/arm2410s;2 將arm2410s掛載到開(kāi)發(fā)板中新建的host文件夾里3 進(jìn)入到虛擬機(jī)的文件夾里make,生成.o文件4 進(jìn)入串口連接開(kāi)發(fā)板中運(yùn)行三實(shí)驗(yàn)程序/*by threewater<threewaterup->*/#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/ioctl.h>#include <

3、;pthread.h>#include <fcntl.h>#include "s3c2410-adc.h"#define ADC_DEV"/dev/adc/0raw"static int adc_fd = -1;static int init_ADdevice(void)if(adc_fd=open(ADC_DEV, O_RDWR)<0)printf("Error opening %s adc devicen", ADC_DEV);return -1;static int GetADresult(int cha

4、nnel)int PRESCALE=0XFF;int data=ADC_WRITE(channel, PRESCALE);write(adc_fd, &data, sizeof(data);read(adc_fd, &data, sizeof(data);return data;static int stop=0;int adc_num;int ch; /*esc退出*/static void* comMonitor(void* data)while(1)if (ch = 27)stop=1;exit(1);break;return NULL;/*采樣02路A/D值*/int

5、adn;int pausenum=0;void *show(void* data)float d;while( adn=0|adn=1|adn=2 )/采樣02路A/D值while(stop=0)while(pausenum=0)d=(float)GetADresult(adn)*3.3)/1024.0;printf("CH%d=%8.4fvt",adn,d);usleep(1);printf("r");break;/*a,b,c顯示02路*/void *input(void* data)char chr;pthread_t th_show;while(

6、1)scanf("%c",&chr);chr = getchar();if (chr = 48|chr=49|chr=50)/a,b,c-02路adc_num=chr;adn=adc_num-48;/*if (chr = 48|chr=49|chr=50)adc_num=chr;adn=adc_num-48;/*/*if (chr=43)adc_num=chr;adn=0;if (chr=38)adc_num=chr;adn=1;if (chr=77)adc_num=chr;adn=2;*/else if(chr=115)/s停止pausenum=1;else if

7、(chr=27)/esc退出ch=chr;stop=1;else if(chr!=115)/任意鍵繼續(xù)pausenum=0;/break;/*/int main(void)int i;float d;pthread_t th_com,th_show,th_input;void * retval;/set s3c44b0 AD register and start ADif(init_ADdevice()<0)return -1;/* Create the threads */pthread_create(&th_com, NULL, comMonitor, 0);pthread_

8、create(&th_input, NULL, input, 0);printf("nget the key inputn");pthread_create(&th_show, NULL, show, 0);/* Wait until producer and consumer finish. */pthread_join(th_input, &retval);pthread_join(th_show, &retval);pthread_join(th_com, &retval);printf("n");retur

9、n 0;三實(shí)驗(yàn)結(jié)果四實(shí)驗(yàn)總結(jié)4.1實(shí)驗(yàn)完成效果v 可以實(shí)現(xiàn)多線程AD采樣效果;v 當(dāng)輸入數(shù)值1、2、3時(shí)表示指定AD通道線程1的通道號(hào)要隨指定值改變; 當(dāng)輸入字符s時(shí)顯示暫停;當(dāng)輸入任意字符時(shí)重新開(kāi)始;輸入ESC時(shí)程序終止退出。輸入其他鍵值時(shí)維持原狀;v 可以實(shí)現(xiàn)暫停、重新開(kāi)始、退出功能;v 分為3個(gè)線程,一個(gè)用來(lái)獲取鍵值,一個(gè)用來(lái)顯示,一個(gè)用來(lái)退出。4.2實(shí)驗(yàn)總結(jié)在本次實(shí)驗(yàn)過(guò)程中,遇到了許多問(wèn)題,開(kāi)始時(shí),不能實(shí)現(xiàn)鍵入數(shù)字來(lái)指定AD通道線程的通道號(hào),只能實(shí)現(xiàn)通過(guò)字母h、j、k來(lái)指定AD通道線程的通道號(hào),原因是獲取鍵值的字符串,開(kāi)始時(shí)設(shè)置為整型,后面將其改為字符char來(lái)獲取鍵值后,就可以通過(guò)鍵入數(shù)字來(lái)指定AD通道線程的通道號(hào)。通過(guò)本次實(shí)驗(yàn),提高了我使用軟件編程(C語(yǔ)言)的能力,使我的邏輯思維更加清晰,也讓我體會(huì)到了編程的樂(lè)趣; 設(shè)計(jì)之前要構(gòu)思好大致方向,設(shè)計(jì)中出現(xiàn)錯(cuò)誤要反復(fù)調(diào)試,可以設(shè)計(jì)一小部分,然后調(diào)試一小部分,可以使問(wèn)題簡(jiǎn)單化; 在課堂上學(xué)習(xí)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論