LINUX实验报告 800字优秀word范文 16页.docx
- 文档编号:5444458
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:13
- 大小:18.85KB
LINUX实验报告 800字优秀word范文 16页.docx
《LINUX实验报告 800字优秀word范文 16页.docx》由会员分享,可在线阅读,更多相关《LINUX实验报告 800字优秀word范文 16页.docx(13页珍藏版)》请在冰豆网上搜索。
LINUX实验报告800字优秀word范文16页
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!
==本文为word格式,下载后可方便编辑和修改!
==
LINUX实验报告(800字)
本科生实验报告
实验课程多传感器信息融合技术学院名称信息科学与技术学院专业名称物联网工程学生姓名何月明学生学号201X13060307指导教师赖武刚实验地点6B607实验成绩
二〇14年11月二〇14年12月
题目1.按键控制蜂鸣器增减
一、实验要求。
(1)按键1:
启动/停止蜂鸣器。
按键2:
增加频率10Hz按键3:
减小频率10Hz按键8:
退出程序。
(2)程序初始化完成后,蜂鸣器的默认状态是停止。
二、实验流程图。
三、实验步骤。
首先明白实验的要求,从按键,数据采集去考虑程序的写法。
则程序可如下:
#include
#include
#definePWM_IOCTL_SET_FREQ#definePWM_IOCTL_STOP#define
ESC_KEY
staticintgetch(void){
structtermiosoldt,newt;intch;if(!
isatty(STDIN_FILENO)){
fprintf(stderr,"thisproblemterminal\n");
exit
(1);
should1
0x1bberunata
}
//saveterminalsetting
if(tcgetattr(STDIN_FILENO,&oldt)<0){
perror("save
theterminalsetting");
exit
(1);}
//setterminalasneed
terminal");
exit
(1);}
newt=oldt;
newt.c_lflag&=~(ICANON|ECHO);
if(tcsetattr(STDIN_FILENO,TCSANOW,&newt)<0){
perror("set
ch=getchar();open_buzzer();
perror("restorethetermialsetting");//restoretermialsetting
if(tcsetattr(STDIN_FILENO,TCSANOW,&oldt)<0){
returnch;}
staticintfd=-1;
staticvoidclose_buzzer(void);staticvoidopen_buzzer(void){fd=open("/dev/pwm",0);if(fd<0){
pwm_buzzerdevice");
}
//anyfunctionexitcallwillstopthebuzzeratexit(close_buzzer);
}
staticvoidclose_buzzer(void){
exit
(1);}
perror("open
exit
(1);
if(fd>=0){
ioctl(fd,
PWM_IOCTL_STOP);
2)<0){}
staticvoidset_buzzer_freq(intfreq){
//thisIOCTLcommandisthekeytosetfrequencyintret=ioctl(fd,PWM_IOCTL_SET_FREQ,freq);if(ret<0){
perror("set
perror("ioctl2:
");}
}
close(fd);fd=-1;
if(ioctl(fd,
thefrequencyofthebuzzer");}
}
staticvoidstop_buzzer(void){intret=ioctl(fd,PWM_IOCTL_STOP);if(ret<0){
thebuzzer");}
if(ioctl(fd,2)<0){
perror("ioctl2:
");}}
intmain(intargc,char**argv)
exit
(1);
perror("stop
exit
(1);
{
intfreq=1000;intbuttons_fd;inti;
intkey;
charcurrent_buttons[8];intcount_of_changed_key;
charbutons[8]={'0','0','0','0','0','0','0','0'};
buttons_fd=open("/dev/buttons",0);
if(buttons_fd<0){
printf("open
devicebuttons");
}
fd=open("/dev/pwm",0);if(fd<0)
exit
(1);
{
pwm_buzzerdevice");}
while
(1)
{
printf("\tFreq=%d\n",freq);
if(read(buttons_fd,current_buttons,size
current_buttons)!
=sizofcurrent_buttons)
perror("readbutons:
");
perror("open
exit
(1);
of
{
exit
(1);}for
(i=0;i<8;i++)1:
if(buttons[i]!
=current_buttons[i])
buttons[i]=current_buttons[i];
if(buttons[i]=='1')key=i+1;
switch(key)
set_buzzer_freq(freq);
{
{}}{
case
if(freq<201X0)
freq+=10;
set_buzzer_freq(freq);
if(freq>11)
freq-=10;
set_buzzer_freq(freq);
break;
case8:
stop_buzzer();break;case2:
break;case3:
exit(0);
default:
break;c}
}
}
题目2.模拟电压采集报警
一、实验要求。
功能:
(1)按键1:
启动/停止ADC,按键8:
退出程序。
(2)程序初始化完成后,ADC的默认状态是停止。
(3)ADC工作时,每秒采样一次电压,采集的数据写入文件adcdata.dat
文件保存。
(4)当ADC采样值超过1.5V的时候,蜂鸣器报警。
二、流程图。
三、实验步骤。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#definePWM_IOCTL_SET_FREQ
#definePWM_IOCTL_STOP
#defineBUFFER_SIZE1024
#defineESC_KEY0x1b10
#defineADCWR_FILE_NAME"adcdata.dat"
staticintfd=-1;
staticvoidclose_buzzer(void);
staticvoidopen_buzzer(void)
{
fd=open("/dev/pwm",0);if(fd<0){perror("openpwm_buzzerdevice");exit
(1);
}
//anyfunctionexitcallwillstopthebuzzeratexit(close_buzzer);
staticvoidclose_buzzer(void)
{
}
staticvoidset_buzzer_freq(intfreq)
{
}
staticvoidstop_buzzer(void)
{//thisIOCTLcommandisthekeytosetfrequencyintret=ioctl(fd,PWM_IOCTL_SET_FREQ,freq);if(ret<0){}perror("setthefrequencyofthebuzzer");exit
(1);if(fd>=0){}ioctl(fd,PWM_IOCTL_STOP);if(ioctl(fd,2)<0){}close(fd);fd=-1;perror("ioctl2:
");
}if(ret<0){}perror("stopthebuzzer");exit
(1);
intmain(void)
{intkey=0;
intfreq=1000;charbuttons[8]={'0','0','0','0','0','0','0','0'};charcurrent_buttons[8];intcount_of_changed_key;inti;intlen;charbuffer[30];intadc_wr;intflag1;intflag2;unsignedcharbuff[BUFFER_SIZE];fprintf(stderr,"pressCtrl-Ctostop\n");intadc_fd=open("/dev/adc",0);if(adc_fd<0){}perror("openADCdevice:
");return1;
intbuttons_fd=open("/dev/buttons",O_NONBLOCK);
if(buttons_fd<0){
}exit
(1);intpwm_fd=open("/dev/pwm",0);if(pwm_fd<0){}while
(1){
perror("openpwm_buzzerdevice");exit
(1);
printf("\tFreq=!
!
%d\n",key);intlen=read(buttons_fd,current_buttons,sizeofcurrent_buttons);
printf("len:
%d",len);for(flag2=0;flag2<10;flag2++){for(i=0;i<8;i++){if(buttons[i]!
=current_buttons[i]){}buttons[i]=current_buttons[i];if(buttons[i]=='1')key=i+1;usleep(10*1000);}
}{}switch(key)case1:
if(flag1==0){}else{}flag1=0;flag1=1;break;case8:
close(adc_fd);exit(0);break;key=0;}if(flag1==1){printf("\tFreq=!
!
!
%d\n",key);len=read(adc_fd,buffer,sizeofbuffer-1);
adc_wr=open(ADCWR_FILE_NAME,O_WRONLY|O_CREAT|O_APPEND,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
if(len>0){
}
}
}
if(len>1500){set_buzzer_freq(freq);}else{buffer[len]='\0';intvalue=-1;sscanf(buffer,"%d",&value);printf("ADCValue:
%d\n",value);write(adc_wr,buffer,len);}else{perror("readADCdevice:
");return1;}
题目3.串口数据保存
一、实验要求。
(1)PC(ubuntu)串口(COM2)定时(0.1s)通过发送字符串“COMData:
num\n”,
其中num是指的是序号,每次发送序号加1,共计发送100次。
(2)ARM(实验板)串口COM2接收PC(ubuntu)发过来的数据,将数据写入到
comdata.dat的文件保存。
二、实验流程图。
三、实验步骤。
Read可读文件:
#include
#include
#include
#include
#include
#include
#include"uart_api.h"
#defineADCWR_FILE_NAME"adcdata2.dat"
intmain(void)
{
perror("open_port");}return1;intfd;intadc_wr;charbuff[BUFFER_SIZE];if((fd=open_port(TARGET_COM_PORT))<0){
{perror("set_com_config");}do{memset(buff,return1;0,BUFFER_SIZE);
if(read(fd,buff,BUFFER_SIZE)>0)
adc_wr=open(ADCWR_FILE_NAME,O_WRONLY|O_CREAT|O_APPEND,{S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH););
write(adc_wr,buff,sizeof(buff));}while(strncmp(buff,"quit",4));}
}
Write可写文件:
#include
#include
#include
#include
#include
#include
#include"uart_api.h"
intmain(void)
{
intfd;charbuff[BUFFER_SIZE];chars[20];inti;close(fd);return0;
if((fd=open_port(HOST_COM_PORT))<0){perror("open_port");
}
if(set_com_config(fd,115200,8,'N',1)<0){
perror("set_com_config");
}
for(i=0;i<100;i++)
{
0,BUFFER_SIZE);
20);return1;return1;memset(buff,memset(s,0,
sprintf(s,"%d",i);/*memcpy(buff,"COMData:
",BUFFER_SIZE);*/strcpy(buff,"COMData:
");strcat(buff,s);/*if(fgets(buff,BUFFER_SIZE,stdin)==NULL)
perror("fgets");break;}*/write(fd,{buff,strlen(buff));
1000);
}usleep(100*
}strcpy(buff,"quit");write(fd,buff,strlen(buff));close(fd);return0;
编程设计题:
ADC数据网络传输程序
一、实验要求。
(1)读取ADC频率为50次每秒.
(2)当读取了50次数据再通过TCP发送数据。
(3)PC和ARM程序需要做网络传输包的计数器。
(每次传输的数据(50字节)
叫一个网络包。
)
(4)PC服务端需要将接收的网络包数和数据打印出来,并保存到文件名为
adc_tcp文件中。
二、实验流程图。
三、实验步骤。
在pc建立tcpserver端,接收arm实验板发送的数据。
在arm实验板上采集adc数据,在通过tcp将adc采集的数据发送到pc。
则client端:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#definePORT4321
#defineBUFFER_SIZE1024
intmain(intargc,char*argv[])
{
intsockfd,sendbytes;charbuf[BUFFER_SIZE];chars1[300];chars2[20];structhostent*host;structsockaddr_inserv_addr;charbuffer[30];inti;intk=0;
Text\n");
if(argc<3){fprintf(stderr,"USAGE:
./clientHostname(oripaddress)exit
(1);}/*地址解析函数*/if((host=gethostbyname(argv[1]))==NULL){perror("gethostbyname");exit
(1);}
memset(s1,0,300);memset(s2,0,20);/*sprintf(buf,"%s",argv[2]);*//*创建socket*/if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){perror("socket");}/*设置sockaddr_in结构体中相关参数*/serv_addr.sin_family=AF_INET;serv_addr.sin_port=htons(PORT);serv_addr.sin_addr=*((structin_addr*)host->h_addr);bzero(&(serv_addr.sin_zero),8);exit
(1);
/*调用connect函数主动发起对服务器端的连接*/if(connect(sockfd,(structsockaddr*)&serv_addr,sizeof(structsockaddr))==-1)
{
perror("connect");
}
intadc_fd=open("/dev/adc",0);
if(adc_fd<0){
ADCdevice:
");
}
while
(1)
{
exit
(1);perror("openreturn1;k++;
read(adc_fd,buffer,sizeofbuffer-1);=-1;
sprintf(s2,"thenumber%-2d",k);
strcat(buf,s2);
for(i=0;i<50;i++)
buffer[len]='\0';
sscanf(buffer,"%d",&value);
printf("ADCValue:
%d\n",value);
sprintf(s1,"%4d",value);
strcat(buf,s1);intlen=
intvalue
{
usleep(20*1000);
/*发送消息给服务器端*/
((sendbytes=send(sockfd,buf,strlen(buf),0))==-1)
perror("send");
300);
0,sizeof(buf));}
close(sockfd);
exit(0);
}
if
{
exit
(1);}
memset(s1,0,memset(buf,
Server端:
#include
#definePORT#defineBUFFER_SIZE#defineMAX_QUE_CONN_NM
#defineADCWR_FILE_NAME"adc_tcp.data"
432110245
intmain(){
perror("socket");}
printf("Socketid=%d\n",sockfd);
exit
(1);
structsockaddr_inserver_sockaddr,client_sockaddr;intsin_size,recvbytes;intsockfd,client_fd;charbuf[BUFFER_SIZE];intadc_wr;
/*建立socket连接*/
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){
sizeof(i));
server_sockaddr.sin_family=AF_INET;serv
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LINUX实验报告 800字优秀word范文 16页 LINUX 实验 报告 800 优秀 word 范文 16