《嵌入式系统》实验报告指导书(含答案)

《嵌入式系统》实验报告指导书(含答案)
《嵌入式系统》实验报告指导书(含答案)

实验一熟悉嵌入式LINUX开发环境

1、实验目的

熟悉UP-TECHPXA270-S的开发环境。学会WINDOWS环境与嵌入式Linu环境共享资源的基本方法。

2、实验内容

学习UP-TECHPXA270-S系统的使用、XP和虚拟机之间传送文件方法以及UP-TECHPXA270-S和虚拟机之间共享目录的建立方法。

3、预备知识

了解UP-TECHPXA270-S的基本结构和配置,Linux基本知识。

4、实验设备

硬件:UP-TECHPXA270-S开发板、PC机(内存500M以上)。

软件:PC机操作系统RADHAND LINUX 9+MIMICOM+RAM LINUX操作系统

5、实验步骤

(1)、在虚拟机下练习Linux常用命令。(注意以下操作只能在[root@BC root]#,也就是root文件夹下运行,不然会导致系统不能启动)

a. 学习命令通过“man ***”和“*** --help”得到的命令使用方法。

b.学习并掌握如下命令:

ls,cd ,pwd,cat,more,less,mkdir, rmdir ,rm,mv,cp,tar,ifconfig

(2)、XP与虚拟机之间传送文件(Samba服务器建立、网络设置、文件传送);(3)、了解系统资源和连线;

(4)、开发板与虚拟机之间共享目录建立(设置NFS、开发板IP设置、目录挂载),挂载文件;

(5)vi(vim)的使用

(6)输入qt,启动桌面,按CTRL+C退出

6、实验报告要求

(1)、XP和虚拟机之间传送文件步骤;

虚拟机共享XP文件:

选择虚拟机设置,设置要共享的文件

启动Linux

进入/mnt/hgfs即可看到共享文件夹

服务器设置——samba服务器(设置需要共享的目录)

XP共享虚拟机文件:

服务器设置——samba服务器(设置需要共享的目录)

确保网络的PING通(即在同一局域网):

1.虚拟机的19

2.168.1.234(RH9)

2.XP的为192.168.1.125

3.在XP 下点击开始-》运行(\\192.168.1.234)

4.用户名bc密码123456

以上实现了Linux虚拟机(RH9)和XP的文件的共享

(2)、开发板与虚拟机之间建立共享目录以及文件挂载步骤;

1.服务器设置——nfs服务器(设置需要共享的目录)

2.设置开发板的ip地址:ifconfig eth0 192.168.1.5

3.在实验箱终端里输入mount -t nfs -o nolock 192.168.1.

234:/up-techpxa270/exp /mnt/nfs

4./mnt/nfs即为共享目录

(3)、请画出虚拟机、PC机和ARM实验箱之间的硬件连接图;

(4)、在Linux中怎样配置网络;

系统设置->网络,在新的选项卡中

(5)、实验中遇到的问题与解决过程。

第一个实验相对简单些就是熟悉实验环境,然后练习了文件挂载,学会了开发板和虚拟机之间传送文件的方法。挂载时我觉得难点是容易忽略IP的配置,若两者IP不在同一局域网,则挂载不成功。最后是练习VI编辑器的使用,VI 编辑器在上学期学过,这次只是重新熟悉下。

实验二嵌入式LINUX系统的编程

1、实验目的

熟悉UP-TECHPXA270-S下Linux的开发环境,了解GNU/make工具的工作原理。学会使用makefile管理项目,学会编写一个Makefile文件。熟悉arm-linux-gcc交叉编译的使用,了解嵌入式开发的基本过程。

2、实验内容

新建一个目录,编写几个源文件,使用makefile 管理项目。学习在linux 下的编程和编译过程,以及UP-TECHPXA270-S 开发板开发环境的设置。下载已经编译好的文件到UP-TECHPXA270-S 开发板中运行。

3、预备知识

C 语言的基础知识、程序调试的基础知识和方法,LINUX 的基本操作。

4、实验设备及工具(包括软件调试工具)

硬件:UP-TECHPXA270-S 嵌入式开发板、PC 机Pentumn500 以上, 硬盘10G 以上。

软件:PC 机操作系统REDHAT LINUX 9.0 +MINICOM + ARM-LINUX 开发环境

5、实验步骤

(1)、建立工作目录

(2)、编写程序源代码

(3)、编写makefile 文件

(4)、编译应用程序

(5)、下载调试

(6)、写一个简单的工程,并输出自己的姓名和学号,利用Makefile管理工程,并写出Makefile文件,进行调试。

6、实验报告要求

(1)、写清每步实验步骤的具体操作内容。

1.建立工作目录:

先挂载:服务器设置——nfs服务器(设置需要共享的目录)

设置开发板的ip地址:ifconfig eth0 192.168.1.5

在实验箱终端里输入

mount -t nfs -o nolock 192.168.1. 234:/up-techpxa270/exp /mnt/nfs /mnt/nfs即为共享目录

在/mnt/nfs下建立自己的目录:mkdir cz

2.编写程序源代码

使用VI编辑器在工作目录写入源代码

3.编写makefile 文件

使用 vi makefile命令来编写makefile文件

4.编译应用程序

使用编译命令:make –f makefile 来编译程序

5.下载调试

在宿主PC上启动NFS服务并设置共享目录。就可进行两者通信了。

6.写一个简单的工程,并输出自己的姓名和学号,利用Makefile管理工程,并写出Makefile文件,进行调试。

(2)、简述Makefile文件的规则。

Makefile文件 Makefile 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。

makefile是一个make的规则描述脚本文件,包括四种类型行:目标行、命令行、宏定义行和make伪指令行(如“include”)。makefile文件中注释以“#”开头。当一行写不下时,可以用续行符“\”转入下一行。

(3)、简述调试情况。

先是*.h和*.c文件的编写,最后是makefile文件编写。写好makefile文件amake 后,用命令:make –f amake进行编译,但是一直提示一个错误,说是amake 文件第6行出错,然后使用vi amake命令进行amake文件修改,但还是出错,花了半个多小时都没成功,后来重新编写amake文件才得以编译成功。我猜测是第一次写amake文件时,加入了不能识别的字符。

实验三串行端口程序设计

1、实验目的

了解在Linux 环境下串行程序设计的基本方法;

掌握终端的主要属性及设置方法;熟悉终端IO 函数的使用;完成串口的收发处理。

2、实验内容

读懂程序源代码,学习终端IO 函数tcgetattr(), tcsetattr(),tcflush()的使用方法,学习将多线程编程应用到串口的接收和发送程序设计中。

3、预备知识

有 C 语言基础;掌握 Makefile 的编写和使用;掌握 Linux 下的程序编译与交叉编译过程

4、实验设备及工具

硬件:UP-TECHPXA270-S 嵌入式开发板、PC 机Pentumn500 以上, 硬盘10G 以上。软件:PC 机操作系统REDHAT LINUX 9.0 +MINICOM + ARM-LINUX 开发环境

5、实验步骤

(1)、将E盘下的03_tty复制到D:\PXA270\Share下;将虚拟机的共享打开;

(2)、主机A的虚拟机添加串口,主机A的COM1与实验箱ttyS1相连,实验箱ttyS0与另一台PC机B相连;

(3)、将每台虚拟机linux的/up-techpxa270/exp/basic/03_tty删除,将两台主机的D:\PXA270\Share\03_tty复制到虚拟机linux下的/up-techpxa270/exp/basic下;

(4)、进入/up-techpxa270/exp/basic/03_tty 目录,使用vi 编辑器或其他编辑器阅读理解serial_rcv和serial_send的源代码。

(5)、分别编译serial_rcv和serial_send下的源文件生成可执行文件。

(6)、自主选择作为发送端或接收端,并修改相应的代码。

(7)、挂载PC机B的/up-techpxa270/exp到开发板的/mnt/nfs。

(8)、在开发板和PC机Alinux下运行可执行程序,一个发送数据,一个接收数据。

(9)、修改程序,使发送端发送一个特定字符给接收端,且发送端回显一个字符或一句话。

6、实验报告要求

(1)、写清每步实验步骤的具体操作内容。

1.将E盘下的03_tty复制到D:\PXA270\Share下;将虚拟机的共享打开:打开虚拟机,选择red hat 的设置,在“选项”的选项卡下打开虚拟机共享

2.主机A的虚拟机添加串口,主机A的COM1与实验箱ttyS1相连,实验箱ttyS0与另一台PC机B相连;

3.将每台虚拟机linux的/up-techpxa270/exp/basic/03_tty删除,分

别将两台主机的D:\PXA270\Share\03_tty复制到虚拟机linux下的/up-techpxa270/exp/basic下;

4.进入/up-techpxa270/exp/basic/03_tty 目录,使用vi 编辑器或其他编辑器阅读理解serial_rcv和serial_send的源代码。

5.分别编译serial_rcv和serial_send下的源文件生成可执行文件。使用make 命令在linux平台编译

6.自主选择作为发送端或接收端,并修改相应的代码。

7.挂载PC机B的/up-techpxa270/exp到开发板的/mnt/nfs。

服务器设置——nfs服务器(设置需要共享的目录),设置开发板的ip地址:ifconfig eth0 192.168.1.5,在实验箱终端里输入mount -t nfs -o nolock 192.168.1. 234:/up-techpxa270/exp /mnt/nfs ,/mnt/nfs即为共享目录

8.在开发板和PC机Alinux下运行可执行程序,一个发送数据,一个接收数据。

运行程序:./serial

9.修改程序,使发送端发送一个特定字符给接收端,且发送端回显一个字符或一句话。

while(1)

{

*serial_buf = getchar();

if(getchar()==’a’){

printf(“hello world!\n”);}

write(serial_fd, serial_buf, 1);

}

(2)、232串行通讯的数据格式是什么?

(3)、串行通讯最少需要几根线,分别如何连接?

最少需要3根线,分别是RXD(接收数据)、TXD(发送数据)、GND(信号地)。AB的地线相连,A的RXD接B的TXD,B的RXD接A的TXD。

(4)、分析Makefile文件。

CROSS=arm-linux- //交叉编译

CC=$(CROSS)gcc //GCC交叉编译器

CPP=$(CROSS)g++ //G++交叉编译

INSTALL=install

BIN=/usr/local/bin

WARNINGS = -Os -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow

-Wpointer-arith -Wcast-qual -Winline -I.

CFLAGS= -O2 $(WARNINGS)

MATH_LIB=-lm

LIBS= $(MATH_LIB) –lpthread //引用库文件

OBJ= serial.o main.o

TARGET=serial //目标文件

all: $(TARGET) $(OBJ)

//下面一层层开始编译

# Applications:

serial: $(OBJ)

$(CC) $(CFLAGS) -o $(TARGET) $(OBJ) $(LIBS)

main.o: main.c

$(CC) $(CFLAGS) -c -o $@ $<

serial.o: serial.c serial.h

$(CC) $(CFLAGS) -c -o $@ $<

//清除中间文件

clean:

@echo "Cleaning up directory."

rm -f *.a *.o $(TARGET)

(5)、简述调试情况。

接收端开始不能运行,发现是Makefile错误。去掉#CROSS=arm-linux-之前的#即可编译。运行时,发送端输入一个字符并按下回车键,接收端可以显示出这个字符。然后是修改程序,使发送端发送一个特定字符给接收端,且发送端回显一个字符或一句话。发送端可以回显,但是接收端会多出一个字符,我猜测是由于缓冲区没有清除的原因。

实验四多线程应用程序设计

1、实验目的

了解多线程程序设计的基本原理,学习pthread库函数的使用。

2、实验内容

读懂pthread.c的源代码,熟悉几个重要的PTHREAD库函数的使用。掌握共享锁和信号量的使用方法。

3、预备知识

熟练使用C语言,掌握在Linux下常用编辑器的使用,掌握Makefile的编写和使用,掌握Linux下的程序编译与交叉编译过程。

4、实验设备及工具

硬件:UP-TECHPXA270-S 嵌入式实验仪,PC 机pentumn500 以上, 硬盘10G 以上软件:PC 机操作系统REDHAT LINUX 9.0 +MINICOM + AMRLINUX 开发环境

5、实验步骤

(1)进入exp/basic/02_pthread目录,使用vi编辑器或其他编辑器阅读理解源代码;

(2)运行make产生pthread可执行文件;

(3)切换到minicom终端窗口,使用NFS mount开发主机的/up-techpxa270到/mnt 目录;

(4)进入/mnt/exp/basic/02_pthread目录,运行./pthread,观察运行结果的正确性,若显示结果太快,可以用以下命令输出显示结果到pthread.txt文

件./pthread >pthread.txt,然后再用cat pthread.txt查看文件内容,结合程序分析结果;

(5)加入一个新的线程用于处理键盘输入,并在按特定字符时终止所有线程。

6、实验报告要求

(1)写清每步实验步骤及具体操作内容;

1.进入exp/basic/02_pthread目录,使用VI命令即可打开源代码进行阅读

2.运行make产生pthread可执行文件

3.挂载:服务器设置——nfs服务器(设置需要共享的目录),设置开发板的ip地址:ifconfig eth0 192.168.1.5,在实验箱终端里输入mount -t nfs -o nolock 192.168.1. 234:/up-techpxa270/exp /mnt/nfs ,/mnt/nfs即为共享目录

4.进入/mnt/exp/basic/02_pthread目录,运行./pthread,观察运行结果的正确性,若显示结果太快,可以用以下命令输出显示结果到pthread.txt文件./pthread >pthread.txt,然后再用cat pthread.txt查看文件内容,结合程序分析结果;

最后的结果:

put-->998

put-->999

producer stopped!

993-->get

994-->get

995-->get

996-->get

997-->get

998-->get

999-->get

consumer stopped!

5.加入一个新的线程用于处理键盘输入,并在按特定字符时终止所有线程。void listener(void *data)

{

if(getch()=’q’){

pthread_cancel(id1);

pthread_cancel(id2);}

pthread_exit(0);

}

(2)写出程序pthread.c的分析;

#include

#include

#include

#include "pthread.h"

#define BUFFER_SIZE 16

/* 设置一个整数的圆形缓冲区*/

struct prodcons {

int buffer[BUFFER_SIZE]; /* 缓冲区数组*/

pthread_mutex_t lock; /* 互斥锁*/

int readpos, writepos; /* 读写的位置*/

pthread_cond_t notempty; /* 缓冲区非空信号pthread_cond_t notfull; /*缓冲区非满信号*/

};

/*--------------------------------------------------------*/

/*初始化缓冲区*/

void init(struct prodcons * b)

{

pthread_mutex_init(&b->lock, NULL); /*初始化后处于解锁状态*/

pthread_cond_init(&b->notempty, NULL); /*指针为空时默认状态*/ pthread_cond_init(&b->notfull, NULL);

b->readpos = 0;

b->writepos = 0;

}

/*--------------------------------------------------------*/

/* 向缓冲区中写入一个整数*/

void put(struct prodcons * b, int data)

{

pthread_mutex_lock(&b->lock);

/*等待缓冲区非满*/

while ((b->writepos + 1) % BUFFER_SIZE == b->printf("wait for not full\n");

pthread_cond_wait(&b->notfull, &b->lock);

}

/*写数据并且指针前移*/

b->buffer[b->writepos] = data;

b->writepos++;

if (b->writepos >= BUFFER_SIZE) b->writepos = /*设置缓冲区非空信号*/ pthread_cond_signal(&b->notempty);

pthread_mutex_unlock(&b->lock);

}

/*--------------------------------------------------------*/

/*从缓冲区中读出一个整数*/

int get(struct prodcons * b)

{

int data;

pthread_mutex_lock(&b->lock);

/* 等待缓冲区非空*/

while (b->writepos == b->readpos) {

printf("wait for not empty\n");

pthread_cond_wait(&b->notempty, &b->lock);

}

/* 读数据并且指针前移*/

data = b->buffer[b->readpos];

b->readpos++;

if (b->readpos >= BUFFER_SIZE) b->readpos = 0;

/* 设置缓冲区非满信号*/

pthread_cond_signal(&b->notfull);

pthread_mutex_unlock(&b->lock);

return data;

}

/*--------------------------------------------------------*/

#define OVER (-1)

struct prodcons buffer;

/*--------------------------------------------------------*/

void * producer(void * data) /*生产者进程函数*/

{

int n;

for (n = 0; n < 1000; n++) {

printf(" put-->%d\n", n);

put(&buffer, n);

}

put(&buffer, OVER);

printf("producer stopped!\n");

return NULL;

}

/*--------------------------------------------------------*/ void * consumer(void * data) /*消费者进程函数*/

{

int d;

while (1) {

d = get(&buffer);

if (d == OVER ) break;

printf(" %d-->get\n", d);

}

printf("consumer stopped!\n");

return NULL;

}

/*--------------------------------------------------------*/ int main(void)

{

pthread_t th_a, th_b;

void * retval; /*存储被等待线程的返回值*/

init(&buffer);

pthread_create(&th_a, NULL, producer, 0);

pthread_create(&th_b, NULL, consumer, 0);

/* 等待生产者和消费者结束*/

pthread_join(th_a, &retval);

pthread_join(th_b, &retval);

return 0;

}

(3) 写出修改后的代码并加以说明;

void listener(void *data)

{

if(getch()=’q’){

pthread_cancel(id1);

pthread_cancel(id2);}

pthread_exit(0);

}

在main函数中:

int main(void)

{

pthread_t th_a, th_b,th_a;

void * retval;

init(&buffer);

pthread_create(&th_a, NULL, producer, 0);

pthread_create(&th_b, NULL, consumer, 0);

pthread_create(&th_c, NULL, listener, 0);

/* 等待生产者和消费者结束*/

pthread_join(th_a, &retval);

pthread_join(th_b, &retval);

pthread_join(th_c, &retval);

return 0;

}

(4)实验中遇到的问题与解决过程?

实验时先是看懂代码,其中有很多函数都没见过,更没用过,先是网上查资料,看API文档,逐一的看懂函数。然后是整体思路的理解,消费者怎么工作,生产者怎么工作,他们是怎么互斥的。然后是改正代码实现:加入一个新的线程用于处理键盘输入,并在按“q“时终止所有线程。开始为了接收按键用了但是linux下没有这个库函数,问了其他同学,才发现自己将问题想复杂了,直接用getch()即可,然后经过调试就完成了实验任务。

实验五内核驱动设计入门-模块方式驱动实验

1、实验目的

学习在LINUX 下进行驱动设计的原理;掌握使用模块方式进行驱动开发调试的过程。

2、实验内容

在PC 机上编写简单的虚拟硬件驱动程序并进行调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。

3、预备知识

有 C 语言基础;

掌握 Makefile 的编写和使用;

掌握 Linux 下的程序编译与交叉编译过程。

有驱动开发的基本知识。

4、实验设备及工具

硬件:PC 机pentumn500 以上, 硬盘40G 以上,内存大于128M。

软件:PC 机操作系统REDHAT LINUX 9.0 +MINICOM + AMRLINUX 开发环境

5、实验步骤

(1) 认真阅读实验原理,理解驱动的体系结构

(2) 熟悉程序源代码及Makefile

(/up-techpxa270/exp/drivers/01_moddriver)

(3) 编译程序

(4) 程序挂载

(5) 驱动调试插入模块insmod hello.ko

(6) 删除模块 rmmod hello.ko

(7) 分析demo.c

我们可以直接使用cat /dev/demo 调用驱动的read 函数,测试读过程。

6、实验报告要求

(1)、写清每步实验步骤的具体操作内容。

1.认真阅读实验原理,理解驱动的体系结构

2.进入/up-techpxa270/exp/drivers/01_moddriver目录,使用vi命令打开源代码和Makefile

3.使用make命令编译程序

4. 程序挂载:

服务器设置——nfs服务器(设置需要共享的目录),设置开发板的ip地址:ifconfig eth0 192.168.1.5,在实验箱终端里输入mount -t nfs -o nolock 192.168.1. 234:/up-techpxa270/exp /mnt/nfs ,/mnt/nfs即为共享目录

5.插入模块:命令insmod hello.ko

6.删除模块:命令rmmod hello.ko

7.分析demo.c:使用vi打开demo.c文件,并对照实验指导书分析各个函数的功能。

(2)、模块与应用程序的区别?

1.应用程序是从头到尾执行单个任务;模块却只是预先注册自己以便服务于将来的某个请求,其中,函数init_module(模块的入口)的任务是为以后调用模块函数预先做准备,函数cleanup_module(模块的第二入口)是在模块卸载时调用。

2.应用程序可以调用它未定义的函数,因为在连接过程能够解析外部引用从而使用适当的函数库;模块仅仅被连接到内核,因此它仅能调用有内核导出的函数(如printk),而没有任何可连接的库。

3.应用程序开发过程中的段错误是无害的,并且总是可以使用调试器跟踪到源代码中的问题所在;内核模块的一个错误即使不对整个系统是致命的,也至少会对当前进程造成致命错误。

4.应用程序运行于用户空间,处理器禁止其对硬件的直接访问以及对内存的未授权访问;内核模块运行于内核空间,可以进行所有操作。

5.应用程序一般不必担心发生其他情况而改变它的运行环境;内核模块编程则必须考虑并发问题的处理。

(3)、编译、调试情况。

编译后,插入模块:insmod hello.ko,可在开发板上显示 hello world!

删除模块:rmmod hello.ko,删除模版时也会显示一句话。

实验六 Qt/E应用程序设计

1、实验目的

1. 了解在Linux下安装Qt以及Qt/Embedded的基本步骤;

2. 学会在嵌入式设备上Qt/E平台下使用Virtual framebuffer显示程序结果;

2、实验内容

1. 在Linux下编译和使用Qt/E平台;

2. 在Qt/E平台下编译和运行一个程序使用Virtual framebuffer显示运行结果;并且运行结果可以在实验箱上显示。

3、预备知识

1. 熟悉使用C++语言程序设计;

2. 掌握Linux下常用编辑器的使用;

3. 掌握Linux下程序编译;

4. 熟悉Qt程序设计;

4、实验室设备和工具

硬件:PC机Pentumn500以上, 硬盘10G以上。

软件:PC机操作系统REDHAT LINUX 9.0 +MINICOM + ARM-LINUX开发环境

5、实验步骤

(1)解压安装包并设置环境变量

(2)编译Qt/Embedded

(3)查看运行结果

(4)在开发板上看运行结果

6、实验报告要求

(1)、写出具体实验流程及操作内容

1. 解压安装包并设置环境变量

安装Tmake

cd ~/pxa270Qt

tar –xzf tmake-1.13.tar.gz

export TMAKEDIR=$PWD/tmake-1.13

安装Qt 2.3.2

cd ~/pxa270Qt

tar –xzf qt-x11-2.3.2.tar.gz

export QT2DIR=$PWD/qt-2.3.2

安装Qt/Embedded

cd ~/pxa270Qt

tar –xzf qt-embedded-2.3.10-free.tar.export QTEDIR=$PWD/qt-2.3.10

2. 编译Qt/Embedded

Build Qt2.3.2

cd $QT2DIR

export TMAKEPATH=$TMAKEDIR/lib/linux-g++

export QTDIR=$QT2DIR

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

./configure -no-xft

make

mkdir $QTEDIR/bin

cp bin/uic $QTEDIR/bin/

Build Qvfb

export TMAKEPATH=$TMAKEDIR/lib/linux-g++

export QTDIR=$QT2DIR

export PATH=$QTDIR/bin:$PATH:$TMAKEDIR/bin

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

cd $QTEDIR/tools/qvfb

tmake -o Makefile qvfb.pro

make

mv qvfb $QTEDIR/bin/

Build Qt/Embedded

cd $QTEDIR

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++

export QTDIR=$QTEDIR

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

./configure -no-xft -qvfb -depths 4,8,16,32

make

3.查看运行结果

在Virtual framebuffer 上运行:

export QTDIR=$QTEDIR

export PATH=$QTEDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTEDIR/lib:$QT2DIR/lib:$LD_LIBRARY_PATH

cd $QTEDIR/examples/launcher

qvfb -width 640 -height 480 &

sleep 10

./launcher –qws

4.在开发板上看运行结果

(2)、简述调试情况

按着实验指导书一步步来,若操作错误则从头开始。

在/root/pxa270Qt/qt-2.3.10/examples下建立一个新目录,在其下编辑hello.cpp源文件,注意将源程序中argv后面”[]”去掉。

生成工程文件(.pro)。

生成Makefile文件。

输入make,生成可执行文件hello。

输入./hello –qws在Virtual framebuffer上显示效果。

(3)、实验中遇到的问题与解决过程。

解压安装包并设置环境变量、编译Qt/Embedded的过程中错一个地方就不会有结果,所以这两个步骤要特别仔细认真。在Linux编译的过程中,不要去停止它,强行停止会发生错误。运行时,系统提示不支持32位颜色,可以在设置中更改。

链表实验报告

C语言程序设计实验报告 实验一:链表的基本操作一·实验目的 1.掌握链表的建立方法 2.掌握链表中节点的查找与删除 3.掌握输出链表节点的方法 4.掌握链表节点排序的一种方法 5.掌握C语言创建菜单的方法 6.掌握结构化程序设计的方法 二·实验环境 1.硬件环境:当前所有电脑硬件环境均支持 2.软件环境:Visual C++6.0 三.函数功能 1. CreateList // 声明创建链表函数 2.TraverseList // 声明遍历链表函数 3. InsertList // 声明链表插入函数 4.DeleteTheList // 声明删除整个链表函数 5. FindList // 声明链表查询函数 四.程序流程图 五.程序代码 #include #include typedef int Elemtype; typedef int Status; typedef struct node//定义存储节点 { int data;//数据域 struct node *next;//结构体指针 } *linklist,node;//结构体变量,结构体名称 linklist creat (int n)//创建单链表 { linklist head,r,p;//定义头指针r,p,指针 int x,i; head=(node *)malloc(sizeof(node));//生成头结点

r=head;//r指向头结点 printf("输入数字:\n"); for(i=n;i>0;i--)//for 循环用于生成第一个节点并读入数据{ scanf("%d",&x); p=(node *)malloc(sizeof(node)); p->data=x;//读入第一个节点的数据 r->next=p;//把第一个节点连在头结点的后面 r=p;//循环以便于生成第二个节点 } r->next=0;//生成链表后的断开符 return head;//返回头指针 } void output (linklist head)//输出链表 { linklist p; p=head->next; do { printf("%3d",p->data); p=p->next; } while(p); printf("\n") } Status insert ( linklist &l,int i, Elemtype e)//插入操作 { int j=0; linklist p=l,s; while(jnext; ++j; } if(!p || j>i-1) return -1; else { s=(node *)malloc(sizeof(node)); s->data=e; s->next=p->next; p->next=s; return 1; } } Status delect ( linklist &l,int i, Elemtype &e)//删除操作 { int j=0; linklist p=l,q; while(jnext) { p=p->next; ++j; } if(!p->next || j>i-1) return -1;

测试技术实验指导书及实验报告2006级用汇总

矿压测试技术实验指导书 学号: 班级: 姓名: 安徽理工大学 能源与安全学院采矿工程实验室

实验一常用矿山压力仪器原理及使用方法 第一部分观测岩层移动的部分仪器 ☆深基点钻孔多点位移计 一、结构简介 深基点钻孔多点位移计是监测巷道在掘进和受采动影响的整个服务期间,围岩内部变形随时间变化情况的一种仪器。 深基点钻孔多点位移包括孔内固定装置、孔中连接钢丝绳、孔口测读装置组成。每套位移计内有5~6个测点。其结构及其安装如图1所示。 二、安装方法 1.在巷道两帮及顶板各钻出φ32的钻孔。 2.将带有连接钢丝绳的孔内固定装置,由远及近分别用安装圆管将其推至所要求的深度。(每个钻孔布置5~6个测点,分别为;6m、5m、4m、3m、2m、lm或12m、10m、8m、6m、4m、2m)。 3.将孔口测读装置,用水泥药圈或木条固定在孔口。 4。拉紧每个测点的钢丝绳,将孔口测读装置上的测尺推至l00mm左右的位置后,由螺丝将钢丝绳与测尺固定在一起。 三、测试方法 安装后先读出每个测点的初读数,以后每次读得的数值与初读数之差,即为测点的位移值。当读数将到零刻度时,松开螺丝,使测尺再回到l00mm左右的位置,重新读出初读数。 ☆顶板离层指示仪 一、结构简介: 顶板离层指示仪是监测顶板锚杆范围内及锚固范围外离层值大小的一种监测仪器,在顶板钻孔中布置两个测点,一个在围岩深部稳定处,一个在锚杆端部围岩中。离层值就是围岩中两测点之间以及锚杆端部围岩与巷道顶板表面间的相对位移值。顶板离层指示仪由孔内固定装置、测量钢丝绳及孔口显示装置组成如图1所示。

二、安装方法: 1.在巷道顶板钻出φ32的钻孔,孔深由要求而定。 2.将带有长钢丝绳的孔内固定装置用安装杆推到所要求的位置;抽出安装杆后再将带有短钢丝绳的孔内固定装置推到所要求的位置。 3.将孔口显示装置用木条固定在孔口(在显示装置与钻孔间要留有钢丝绳运动的间隙)。 4.将钢丝绳拉紧后,用螺丝将其分别与孔口显示装置中的圆管相连接,且使其显示读数超过零刻度线。 三、测读方法: 孔口测读装置上所显示的颜色,反映出顶板离层的范围及所处状态,显示数值表示顶板的离层量。☆DY—82型顶板动态仪 一、用途 DY-82型顶板动态仪是一种机械式高灵敏位移计。用于监测顶底板移近量、移近速度,进行采场“初次来压”和“周期来压”的预报,探测超前支撑压力高 峰位置,监测顶板活动及其它相对位移的测量。 二、技术特征 (1)灵敏度(mm) 0.01 (2)精度(%) 粗读±1,微读±2.5 (3)量程(mm) 0~200 (4)使用高度(mm) 1000~3000 三、原理、结构 其结构和安装见图。仪器的核心部件是齿条6、指针8 以及与指针相连的齿轮、微读数刻线盘9、齿条下端带有读 数横刻线的游标和粗读数刻度管11。 当动态仪安装在顶底板之间时,依靠压力弹簧7产生的 弹力而站立。安好后记下读数(初读数)并由手表读出时间。 粗读数由游标10的横刻线在刻度管11上的位置读出,每小 格2毫米,每大格(标有“1”、“22'’等)为10毫米,微读数 由指针8在刻线盘9的位置读出,每小格为0.01毫米(共200 小格,对应2毫米)。粗读数加微读数即为此时刻的读数。当 顶底板移近时,通过压杆3压缩压力弹簧7,推动齿条6下 移,带动齿轮,齿轮带动指针8顺时针方向旋转,顶底板每 移近0.01毫米,指针转过1小格;同时齿条下端游标随齿条 下移,读数增大。后次读数减去前次读数,即为这段时间内的顶底板移近量。除以经过的时间,即得

VB实验报告8

台州学院 《VB程序设计》实验报告实验八:图形的绘制 班级:14制药3班 学号: 姓名: 实验日期:2015.6.5

一、实验目的和要求 1.掌握Visual Basic 容器坐标系的设计方法; 2.熟练掌握Pset、Line和Circle方法的格式及其使用; 3.掌握与图形有关的常用属性,方法。 二、实验主要仪器和设备 计算机一台,Windows XP / Win7操作系统,Visual Basic环境。 三、实验内容 实验8.1 下列程序运行时,先输入各公司月销售额,然后单击命令按钮,图片框中将显示各公司销售额的圆饼图(如图8-1所示)。要求:在文本框中只能输入数字字符;在圆饼图中分别用红、绿、篮色显示A、B、C公司的扇区填充色。 图8-1 程序运行时的界面 四、实验原始纪录 实验8.1 程序的界面设计。

程序代码。 Const pi = 3.1415926 Private Sub Command1_Click() Dim a As Integer, b As Integer, c As Integer, d As Integer a = Text1.Text b = Text2.Text c = Text3.Text d = a + b + c Picture1.FillStyle = 0 Picture1.FillColor = vbRed Picture1.Circle (2000, 2000), 1000, vbBlack, -2 * pi, -(a / d) * pi * 2 Picture1.FillColor = vbGreen Picture1.Circle (2000, 2000), 1000, vbBlack, -(a / d) * pi * 2, -((a + b) / d) * pi * 2 Picture1.FillColor = vbBlue Picture1.Circle (2000, 2000), 1000, vbBlack, -((a + b) / d) * pi * 2, -pi * 2 End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0 End If End Sub Private Sub Text2_KeyPress(KeyAscii As Integer) If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0 End If End Sub Private Sub Text3_KeyPress(KeyAscii As Integer) If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0 End If End Sub 五、实验结果及分析 实验8.1运行结果。

基于蒙特卡洛模拟的概率型量本利分析

基于蒙特卡洛模拟的概率型量本利分析 量本利分析是管理会计中的重要方法,其中确定型量本利分析由于其简单实用受到实务工作者的偏爱,但是由于经济环境与市场因素的复杂性,为了更加客观真实地反映企业经营的财务状况,国内一些权威《管理会计》教材引入随机变量对此进行分析。对于概率型量本利分析,国内一些教材对此讲解比较简单,基本上介绍的是期望值方法,但该方法所揭示的信息量很少,从某种意义上讲反映的是总体大样本的统计规律,很少能够反映某一具体经济活动的可能面临的风险状况,这样很可能对决策者产生误导。基于上述原因,本文应用随机蒙特卡洛(MonteCarlo)模拟对该类问题进行探讨,拓展量本利方法的前提假设,以适应不确定与风险环境的经济活动分析。 二、蒙特卡洛模拟原理及步骤 (一)蒙特卡洛模拟原理经济生活中存在大量的不确定与风险问题,很多确定性问题实际上是不确定与风险型问题的特例与简化,财务管理、管理会计中同样也存在大量的不确定与风险型问题,由于该问题比较复杂,一般教材对此问题涉及较少,但利用蒙特卡洛模拟可以揭示不确定与风险型问题的统计规律,还原一个真实的经济与管理客观面貌。思想汇报/sixianghuibao/ 与常用确定性的数值计算方法不同,蒙特卡洛模拟是用来解决工程和经济中的非确定性问题,通过成千上万次的模拟,涵盖相应的可能

概率分布空间,从而获得一定概率下的不同数据和频度分布,通过对大量样本值的统计分析,得到满足一定精度的结果,因此蒙特卡洛模拟是进行不确定与风险型问题的有力武器。 1、由于蒙特卡洛模拟是以实验为基础的,因此可以成为财务人员进行风险分析的“实验库”,获得大量有关财务风险等方面的信息,弥补确定型分析手段的不足,避免对不确定与风险决策问题的误导; 2、财务管理、管理会计中存在大量的不确定与风险型问题,目前大多数教材很少涉及这类问题,通过蒙特卡洛模拟,可以对其进行有效分析,解决常用决策方法所无法解决的难题,更加全面深入地分析不确定与风险型问题。 (二)蒙特卡洛模拟步骤以概率型量本利分析为例,蒙特卡洛模拟的分析步骤如下: 1、分析评价参数的特征,如企业经营中的销售数量、销售价格、产品生产的变动成本以及固定成本等,并根据历史资料或专家意见,确定随机变量的某些统计参数; 2、按照一定的参数分布规律,在计算机上产生随机数,如利用EXCEL 提供的RAND函数,模拟量本利分析的概率分布,并利用VLOOKUP 寻找对应概率分布下的销售数量、销售价格、产品生产的变动成本以及固定成本等参数;作文/zuowen/ 3、建立管理会计的数学模型,对于概率型量本利分析有如下关系式,产品利润=产品销售数量×(产品单位销售价格-单位变动成本)-固定成本,这里需要说明的是以上分析参数不是确定型的,是依据某些概

单链表实验报告

计算机与信息技术学院综合性、设计性实验报告 一、实验目的 (1)熟悉顺序表的创建、取值、查找、插入、删除等算法,模块化程序设计方法。 二、实验仪器或设备 (1)硬件设备:CPU为Pentium 4 以上的计算机,内存2G以上 (2)配置软件:Microsoft Windows 7 与VC++6.0 三、总体设计(设计原理、设计方案及流程等) 设计原理: 单链表属于线性表,线性表的存储结构的特点是:用一组任意存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。因此,对于某个元素来说,不仅需要存储其本身的信息,还需要存储一个指示其直接后继的信息。 设计方案: 采用模块化设计的方法,设计各个程序段,最终通过主函数实现各个程序段的功能。设计时,需要考虑用户输入非法数值,所以要在程序中写入说可以处理非法数值的代码。 设计流程: 1. 引入所需的头文件; 2. 定义状态值; 3. 写入顺序表的各种操作的代码; 写入主函数,分别调用各个函数。在调用函数时,采用if结构进行判断输 入值是否非法,从而执行相应的程序 四、实验步骤(包括主要步骤、代码分析等) #include // EOF(=A Z 或F6),NULL #in clude // srand( ) ,rand( ),exit (n) #in clude // malloc( ),alloc( ),realloc() 等 #in clude // INT_MAX 等 #in clude #in clude #in clude // floor(),ceil( ),abs() #in clude // cout,ci n #in clude // clock( ),CLK_TCK,clock_t #defi ne TRUE 1 #defi ne FALSE 0 #defi ne OK 1 #defi ne ERROR 0 #defi ne INFEASIBLE -1

混凝土结构实验指导书及实验报告(学生用)

土木工程学院 《混凝土结构设计基本原理》实验指导书 及实验报告 适用专业:土木工程周淼 编 班级::学 号: 理工大学 2018 年9 月

实验一钢筋混凝土梁受弯性能试验 一、实验目的 1.了解适筋梁的受力过程和破坏特征; 2.验证钢筋混凝土受弯构件正截面强度理论和计算公式; 3.掌握钢筋混凝土受弯构件的实验方法及荷载、应变、挠度、裂缝宽度等数据的测试技术 和有关仪器的使用方法; 4.培养学生对钢筋混凝土基本构件的初步实验分析能力。 二、基本原理当梁中纵向受力钢筋的配筋率适中时,梁正截面受弯破坏过程表现为典型的三个阶段:第一阶段——弹性阶段(I阶段):当荷载较小时,混凝土梁如同两种弹性材料组成的组合梁,梁截面的应力呈线性分布,卸载后几乎无残余变形。当梁受拉区混凝土的最大拉应力达到混凝土的抗拉强度,且最大的混凝土拉应变超过混凝土的极限受拉应变时,在纯弯段某一薄弱截面出现首条垂直裂缝。梁开裂标志着第一阶段的结束。此时,梁纯弯段截面承担的弯矩M cr称为开裂弯矩。第二阶段——带裂缝工作阶段(II阶段):梁开裂后,裂缝处混凝土退出工作,钢筋应力急增,且通过粘结力向未开裂的混凝土传递拉应力,使得梁中继续出现拉裂缝。压区混凝土中压应力也由线性分布转化为非线性分布。当受拉钢筋屈服时标志着第二阶段的结束。此时梁纯弯段截面承担的弯矩M y称为屈服弯矩。第三阶段——破坏阶段(III阶段):钢筋屈服后,在很小的荷载增量下,梁会产生很大的变形。裂缝的高度和宽度进一步发展,中和轴不断上移,压区混凝土应力分布曲线渐趋丰满。当受压区混凝土的最大压应变达到混凝土的极限压应变时,压区混凝土压碎,梁正截面受弯破坏。此时,梁承担的弯矩M u 称为极限弯矩。适筋梁的破坏始于纵筋屈服,终于混凝土压碎。整个过程要经历相当大的变形,破坏前有明显的预兆。这种破坏称为适筋破坏,属于延性破坏。 三、试验装置

VB实验报告(含答案)

实验报告 课程名称_程序设计基础Visual Basic_ 班级______ ______姓名_____ ____

实验一 VB环境和创建一个简单的VB程序 一.实验目的: 1.了解VB系统对计算机软件、硬件的要求。 2.掌握启动和退出VB的方法。 3.了解和使用VB集成开发环境各窗口、菜单的一般功能。 4.熟悉建立、编辑、运行、保存一个简单的VB应用程序的全过程。 5.了解文本框、标签框、命令按钮的构造及其属性、事件和方法。 二.实验内容: 1.设计一个简单的应用程序,要求在窗体上画一个文本框、一个标签和两个命令按钮编一程序,并把命令按钮分别设置为”显示”和”清除”。程序运行后,单击”显示”按钮,在文本框中输出一行信息;单击”清除”按钮,则清除文本框中的内容,运行界面如图所示。 图实验1-1 运行界面 三.实验结果:对象属性设置 对象属性属性值说明 caption我的第一个vb程序窗体Form1 caption请输入姓名标签Label1 text““文本框Text1 caption显示命令按钮Command1 caption清除命令按钮Command2 四.实验思考: 1.标签label控件设置的属性代码有哪些 =“请输入姓名” =24 =True 2.两个按钮所使用的是什么事件代码分别是什么 Private Sub Command1_Click() =“姓名”

实验二简单程序设计数据类型及常用内部函数的简单应用 一.实验目的: 1.掌握Visual Basic数据类型的基本概念。 2.掌握用Visual Basic的各种运算符及表达式。 3.学习使用Visual Basic内部函数和数据输入、输出方法。 4.掌握命令按钮、文本框和标签。 5.设计顺序程序。 二.实验内容: 1.编写一个华氏温度和摄氏温度之间的转换程序,如图2-2所示,要求用inputbox函数输入华氏温度,用msgbox输出转换后的摄氏温度。转换公式是:C= 5 / 9(F - 32)。F为华氏温度,C为摄氏温度。 2.用三种除法运算(/ 、\、Mod)做计算。 要求:在窗体上画五个标签、五个文本框和一个命令按钮,如图2-2所示。程序运行后,在第一个文本框中输入被除数,在第二个文本框中输入除数,然后单击命令按钮,即可得到三种不同的相除结果。 图2-1 图2-2 三.实验结果:对象属性设置 1.温度转换 对象属性属性值说明 Form1Caption Inputbox与msgbox窗体

浅析蒙特卡洛方法原理及应用

浅析蒙特卡洛方法原理及应用 于希明 (英才学院1236103班测控技术与仪器专业6120110304) 摘要:本文概述了蒙特卡洛方法产生的历史及基本原理,介绍了蒙特卡洛方法的最初应用——蒲丰投针问题求圆周率,并介绍了蒙特卡洛方法在数学及生活中的一些简单应用,最后总结了蒙特卡洛方法的特点。 关键词:蒙特卡洛方法蒲丰投针生活应用 蒙特卡洛方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。它是以概率统计理论为基础, 依据大数定律( 样本均值代替总体均值) , 利用电子计算机数字模拟技术, 解决一些很难直接用数学运算求解或用其他方法不能解决的复杂问题的一种近似计算法。蒙特卡洛方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。 一、蒙特卡洛方法的产生及原理 蒙特卡洛方法于20世纪40年代美国在第二次世界大战中研制原子弹的“曼哈顿计划”计划的成员S.M.乌拉姆和J.冯·诺伊曼首先提出。数学家冯·诺伊曼用驰名世界的赌城—摩纳哥的Monte Carlo—来命名这种方法,为它蒙上了一层神秘色彩。在这之前,蒙特卡洛方法就已经存在。1777年,法国数学家蒲丰(Georges Louis Leclere de Buffon,1707—1788)提出用投针实验的方法求圆周率π。这被认为是蒙特卡洛方法的起源。 其基本原理如下:由概率定义知,某事件的概率可以用大量试验中该事件发生的频率来估算,当样本容量足够大时,可以认为该事件的发生频率即为其概率。因此,可以先对影响其可靠度的随机变量进行大量的随机抽样,然后把这些抽样值一组一组地代入功能函数式,确定结构是否失效,最后从中求得结构的失效概率。蒙特卡洛法正是基于此思路进行分析的。 设有统计独立的随机变量Xi(i=1,2,3,…,k),其对应的概率密度函数分别为fx1,fx2,…,fxk,功能函数式为Z=g(x1,x2,…,xk)。首先根据各随机变量的相应分布,产生N组随机数x1,x2,…,xk值,计算功能函数值Zi=g(x1,x2,…,xk)(i=1,2,…,N),若其中有L组随机数对应的功能函数值Zi≤0,则当N→∞时,根据伯努利大数定理及正态随机变量的特性有:结构失效概率,可靠指标。 二、蒲丰投针问题 作为蒙特卡洛方法的最初应用, 是解决蒲丰投针问题。1777 年, 法国数学家蒲丰提出利用投针实验求解圆周率的问题。设平面上等距离( 如为2a) 画有一些平行线, 将一根长度为2l( l< a) 的针任意投掷到平面上, 针与任一平行线相交的频率为p 。针的位置可以用针的中心坐标x 和针与平行线的夹角θ来决定。任意方向投针, 便意味着x与θ可以任意取一值, 只是0≤x ≤a, 0≤θ≤π。那么, 投针与任意平行线相交的条件为x ≤ l sinθ。相交频率p 便可用下式求

单链表的插入和删除实验报告

. 实验一、单链表的插入和删除 一、目的 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 二、要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 三、程序源代码 #include"stdio.h" #include"string.h" #include"stdlib.h" #include"ctype.h" typedef struct node //定义结点 { char data[10]; //结点的数据域为字符串 struct node *next; //结点的指针域 }ListNode; typedef ListNode * LinkList; // 自定义LinkList单链表类型 LinkList CreatListR1(); //函数,用尾插入法建立带头结点的单链表

ListNode *LocateNode(); //函数,按值查找结点 void DeleteList(); //函数,删除指定值的结点void printlist(); //函数,打印链表中的所有值 void DeleteAll(); //函数,删除所有结点,释放内存 //==========主函数============== void main() { char ch[10],num[10]; LinkList head; head=CreatListR1(); //用尾插入法建立单链表,返回头指针printlist(head); //遍历链表输出其值 printf(" Delete node (y/n):");//输入“y”或“n”去选择是否删除结点scanf("%s",num); if(strcmp(num,"y")==0 || strcmp(num,"Y")==0){ printf("Please input Delete_data:"); scanf("%s",ch); //输入要删除的字符串 DeleteList(head,ch); printlist(head); } DeleteAll(head); //删除所有结点,释放内存 } //==========用尾插入法建立带头结点的单链表

土工实验指导书及实验报告

土工实验指导书及实验报告编写毕守一 安徽水利水电职业技术学院 二OO九年五月

目录 实验一试样制备 实验二含水率试验 实验三密度试验 实验四液限和塑限试验 实验五颗粒分析试验 实验六固结试验 实验七直接剪切试验 实验八击实试验 土工试验复习题

实验一试样制备 一、概述 试样的制备是获得正确的试验成果的前提,为保证试验成果的可靠性以及试验数据的可比性,应具备一个统一的试样制备方法和程序。 试样的制备可分为原状土的试样制备和扰动土的试样制备。对于原状土的试样制备主要包括土样的开启、描述、切取等程序;而扰动土的制备程序则主要包括风干、碾散、过筛、分样和贮存等预备程序以及击实等制备程序,这些程序步骤的正确与否,都会直接影响到试验成果的可靠性,因此,试样的制备是土工试验工作的首要质量要素。 二、仪器设备 试样制备所需的主要仪器设备,包括: (1)孔径0.5mm、2mm和5mm的细筛; (2)孔径0.075mm的洗筛; (3)称量10kg、最小分度值5g的台秤; (4)称量5000g、最小分度值1g和称量200g、最小分度值0.01g的天平;

(5)不锈钢环刀(内径61.8mm、高20mm;内径79.8mm、高20mm或内径61.8mm、高40mm); (6)击样器:包括活塞、导筒和环刀; (7)其他:切土刀、钢丝锯、碎土工具、烘箱、保湿器、喷水设备、凡士林等。 三、试样制备 (一)原状土试样的制备步骤 1、将土样筒按标明的上下方向放置,剥去蜡封和胶带,开启土样筒取土样。 2、检查土样结构,若土样已扰动,则不应作为制备力学性质试验的试样。 3、根据试验要求确定环刀尺寸,并在环刀内壁涂一薄层凡士林,然后刃口向下放在土样上,将环刀垂直下压,同时用切土刀沿环刀外侧切削土样,边压边削直至土样高出环刀,制样时不得扰动土样。 4、采用钢丝锯或切土刀平整环刀两端土样,然后擦净环刀外壁,称环刀和土的总质量。 5、切削试样时,应对土样的层次、气味、颜色、夹杂物、裂缝和均匀性进行描述。 6、从切削的余土中取代表性试样,供测定含水率以及颗粒分析、界限含水率等试验之用。

CAD上机实验指导书及实验报告

北京邮电大学世纪学院 实验、实习、课程设计报告撰写格式与要求 (试行) 一、实验报告格式要求 1、有实验教学手册,按手册要求填写,若无则采用统一实验报告封面。 2、报告一律用钢笔书写或打印,打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。 3、统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。 4、实验报告中的实验原始记录,须经实验指导教师签字或登记。 二、实习报告、课程设计报告格式要求 1、采用统一的封面。 2、根据教学大纲的要求手写或打印,手写一律用钢笔书写,统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。 三、报告内容要求 1、实验报告内容包括:实验目的、实验原理、实验仪器设备、实验操作过程、原始数据、实验结果分析、实验心得等方面内容。 2、实习报告内容包括:实习题目、实习任务与要求、实习具体实施情况(附上图表、原始数据等)、实习个人总结等内容。 3、课程设计报告或说明书内容包括:课程设计任务与要求、总体方案、方案设计与分析、所需仪器设备与元器件、设计实现与调试、收获体会、参考资料等方面内容。 北京邮电大学世纪学院 教务处 2009-8

实验报告 课程名称计算机绘图(CAD) 实验项目AutoCAD二维绘图实验 专业班级 姓名学号 指导教师实验成绩 2016年11月日

VB实验报告一VB环境和可视化编程基础

大学学生实验报告 开课学院及实验室:地理科学学院2014年4月1日

表A_1 对象属性设置 控件名属性 Form1 Caption=”实验A_1” Label1 Caption=”欢迎学习VisualBasic”;Font属性:字号为二号,字体为隶书 Label2 Caption=”请输入你的”Font属性:字体为楷体,有下划线 Text1 Text1=”” Command1 Caption=”” Label3 Caption=””,BorderStyle=1 ④窗体界面设计如图1: 图1 实验A_1窗体界面设计 ⑤代码设计如图2: 图2实验A_1代码设计 (3)实验结果

①运行结果如图3: 图3实验A_1运行结果 ②保存文件如图4: 图4实验A_1文件保存 A_2 (1)实验容:模仿教材例1.1,将事件过程自上而下移动改为自右向左移动,也要考虑文字出窗体边界的情况。各控件及属性窗口的设置参见表格A.2,背景图形文件可以选择自己喜欢的,按钮上的图标通过Windows 搜索功能查找。以Sy1-2为项目名保存。 (2)实验步骤: ①创建一个“标准EXE”工程; ②在窗体上添加标签Label1、命令按钮Command1和Command2及Timer1; ③设置对象属性;

表A_2 对象属性设置 控件名属性 Form1 Caption=”实验A_2”;Picture:为你喜欢的图片 Label1 Caption=”我开始学习程序设计”;Fontsize=36 Command1 Caption=””;Style=1;Piciture=”clock02.ico”;ToolTipText=” 自动” Command2 Caption=””;Style=1;Piciture=”key04.ico”;ToolTipText=” 手动” Timer1 Internal=0 ④窗体界面设计如图5: 图5 实验A_2窗体界面设计 ⑤代码设计如图6:

单链表实验报告

数据结构 课程设计 设计题目:单链表 专业班级:11软会四班 指导教师:吉宝玉 日期:2012 目录 一、实验目的 (2) 1、 (2) 2、 (2) 二、实验内容 (3)

三、实验基本要求(软、硬件) (3) 四、算法设计思想 (3) 1、 (3) 2、 (3) 3、 (3) 4、 (3) 5、 (3) 6、 (3) 7、 (3) 8、 (3) 五、算法流程图 (4) 六、算法源代码 (4) 七、运行结果 (9) 1、 (9) 2、 (10) 3、 (11) 4、 (11) 5、 (11) 6、 (12) 7、 (12) 8、 (13) 9、 (13) 八、收获及体会 (14) 一、实验目的 1、理解并掌握单链表的结构特点和相关概念; 2、学会单链表的基本操作:建立、插入、删除、查找、 输入、撤销、逆置、求前驱和后继等并实现其算法。

二、实验内容 利用头插建立一个带头结点的单链表,并用算法实现该单链表的插入、删除查找、输出、求前驱和后继、再把此单链表逆置,然后在屏幕上显示每次操作的结果当所有操作完成后能撤销该单链表。 三、实验基本要求(软、硬件) 用VC++6.0软件平台,操作系统:Windows XP 硬件:内存要求:内存大小在256MB,其他配置一般就行。 四、算法设计思想 1、定义一个创建链表的函数,通过该函数可以创建一个链表,并为下面的函数应用做 好准备。 2、定义输出链表的算法,通过对第一步已经定义好的创建链表函数的调用,在这一步 通过调用输出链表的函数算法来实现对链表的输出操作。 3、定义一个遍历查找的算法,通过此算法可以查找到链表中的每一个节点是否存在。 4、定义查找链表的每一个前驱和后继,通过定义这个算法,可以很容易的实现对链表 的前驱和后继的查找工作。 5、定义插入节点的算法,通过定义这个算法,并结合这查找前驱和后继的算法便可以 在连链表的任意位置进行插入一个新节点。 6、定义删除节点的操作,这个算法用于对链表中某个多余节点的删除工作。 7、定义一个逆置单链表的操作,通过定义这个算法,可以逆置输出单链表。 8、定义一个撤销链表的算法,这个算法用于删除单链表中的所有节点,使链表为空。

《流体力学》课程实验(上机)指导书及实验报告格式

《流体力学》课程实验指导书袁守利编 汽车工程学院 2005年9月

前言 1.实验总体目标、任务与要求 1)学生在学习了《流体力学》基本理论的基础上,通过伯努利方程实验、动量方程实 验,实现对基本理论的验证。 2)通过实验,使学生对水柱(水银柱)、U型压差计、毕托管、孔板流量计、文丘里流量计等流体力学常用的测压、测流量装置的结构、原理和使用有基本认识。 2.适用专业 热能与动力工程 3.先修课程 《流体力学》相关章节。 4.实验项目与学时分配 5. 实验改革与特色 根据实验内容和现有实验条件,在实验过程中,采取学生自己动手和教师演示相结合的方法,力求达到较好的实验效果。

实验一伯努利方程实验 1.观察流体流经实验管段时的能量转化关系,了解特定截面上的总水头、测压管水头、压强水头、速度水头和位置水头间的关系,从而加深对伯努利方程的理解和认识。 2.掌握各种水头的测试方法和压强的测试方法。 3.掌握流量、流速的测量方法,了解毕托管测速的原理。 二、实验条件 伯努利方程实验仪 三、实验原理 1.实验装置: 图一伯努利方程实验台 1.水箱及潜水泵 2.上水管 3.电源 4.溢流管 5.整流栅 6.溢流板 7.定压水箱 8.实验 细管9. 实验粗管10.测压管11.调节阀12.接水箱13.量杯14回水管15.实验桌 2.工作原理 定压水箱7靠溢流来维持其恒定的水位,在水箱下部装接水平放置的实验细管8,水经实验细管以恒定流流出,并通过调节阀11调节其出水流量。通过布置在实验管四个截面上的四组测压孔及测压管,可以测量到相应截面上的各种水头的大小,从而可以分析管路中恒定流动的各种能量形式、大小及相互转化关系。各个测量截面上的一组测压管都相当于一组毕托管,所以也可以用来测管中某点的流速。 电测流量装置由回水箱、计量水箱和电测流量装置(由浮子、光栅计量尺和光电子

VB实验报告(含答案)

VB实验报告(含答案)

实验报告 课程名称_程序设计基础Visual Basic_ 班级______ ______姓名_____ ____

实验一 VB环境和创建一个简单的VB程序 一.实验目的: 1.了解VB系统对计算机软件、硬件的要求。 2.掌握启动和退出VB的方法。 3.了解和使用VB集成开发环境各窗口、菜单的一般 功能。 4.熟悉建立、编辑、运行、保存一个简单的VB应用 程序的全过程。 5.了解文本框、标签框、命令按钮的构造及其属性、 事件和方法。 二.实验内容: 1.设计一个简单的应用程序,要求在窗体上画一个文本框、一个标签和两个命令按钮编一程序,并把命令按钮分别设置为”显示”和”清除”。程序运行后,单击”显示”按钮,在文本框中输出一行信息;单击”清除”按钮,则清除文本框中的内容,运行界面如图1.1所示。

实验二简单程序设计数据类型及常用内部函数的简单应用 一.实验目的: 1.掌握Visual Basic数据类型的基本概念。 2.掌握用Visual Basic的各种运算符及表达式。 3.学习使用Visual Basic内部函数和数据输入、输出方法。 4.掌握命令按钮、文本框和标签。 5.设计顺序程序。 二.实验内容: 1.编写一个华氏温度和摄氏温度之间的转换程序,如图2-2所示,要求用inputbox函数输入华氏 温度,用msgbox输出转换后的摄氏温度。转换 公式是:C= 5 / 9(F - 32)。F为华氏温度,C 为摄氏温度。 2.用三种除法运算(/ 、\、Mod)做计算。 要求:在窗体上画五个标签、五个文本框和一个命令按钮,如图2-2所示。程序运行后,在第一个文本框中输入被除数,在第二个文本框中输入除数,然后单击命令按钮,即可得到三种不同的相除结果。

数据结构实验报告 - 答案汇总

数据结构(C语言版) 实验报告

专业班级学号姓名 实验1 实验题目:单链表的插入和删除 实验目的: 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 实验要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 实验主要步骤: 1、分析、理解给出的示例程序。 2、调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测试程序 的如下功能:不允许重复字符串的插入;根据输入的字符串,找到相应的结点并删除。 3、修改程序: (1)增加插入结点的功能。 (2)将建立链表的方法改为头插入法。 程序代码: #include"stdio.h" #include"string.h" #include"stdlib.h" #include"ctype.h" typedef struct node //定义结点 { char data[10]; //结点的数据域为字符串 struct node *next; //结点的指针域 }ListNode; typedef ListNode * LinkList; // 自定义LinkList单链表类型 LinkList CreatListR1(); //函数,用尾插入法建立带头结点的单链表 LinkList CreatList(void); //函数,用头插入法建立带头结点的单链表 ListNode *LocateNode(); //函数,按值查找结点 void DeleteList(); //函数,删除指定值的结点 void printlist(); //函数,打印链表中的所有值 void DeleteAll(); //函数,删除所有结点,释放内存

电磁场实验指导书及实验报告

CENTRAL SOUTH UNIVERSITY 题目利用Matlab模拟点电荷电场的分布姓名xxxx 学号xxxxxxxxxx 班级电气xxxx班 任课老师xxxx 实验日期2010-10

电磁场理论 实验一 ——利用Matlab 模拟点电荷电场的分布 一.实验目的: 1.熟悉单个点电荷及一对点电荷的电场分布情况; 2.学会使用Matlab 进行数值计算,并绘出相应的图形; 二.实验原理: 根据库伦定律:在真空中,两个静止点电荷之间的作用力与这两个电荷的电量乘积成正比,与它们之间距离的平方成反比,作用力的方向在两个电荷的连线上,两电荷同号为斥力,异号为吸力,它们之间的力F 满足: R R Q Q k F ? 212 = (式1) 由电场强度E 的定义可知: R R kQ E ? 2 = (式2) 对于点电荷,根据场论基础中的定义,有势场E 的势函数为 R kQ U = (式3) 而 U E -?= (式4) 在Matlab 中,由以上公式算出各点的电势U ,电场强度E 后,可以用Matlab 自带的库函数绘出相应电荷的电场分布情况。 三.实验内容: 1. 单个点电荷 点电荷的平面电力线和等势线 真空中点电荷的场强大小是E=kq /r^2 ,其中k 为静电力恒量, q 为电量, r 为点电荷到场点P(x,y)的距离。电场呈球对称分布, 取电量q> 0, 电力线是以电荷为起点的射线簇。以无穷远处为零势点, 点电荷的电势为U=kq /r,当U 取

常数时, 此式就是等势面方程.等势面是以电荷为中心以r 为半径的球面。 平面电力线的画法 在平面上, 电力线是等角分布的射线簇, 用MATLAB 画射线簇很简单。取射线的半径为( 都取国际制单位) r0=, 不同的角度用向量表示( 单位为弧度) th=linspace(0,2*pi,13)。射线簇的终点的直角坐标为: [x,y]=pol2cart(th,r0)。插入x 的起始坐标x=[x; *x].同样插入y 的起始坐标, y=[y; *y], x 和y 都是二维数组, 每一列是一条射线的起始和终止坐标。用二维画线命令plot(x,y)就画出所有电力线。 平面等势线的画法 在过电荷的截面上, 等势线就是以电荷为中心的圆簇, 用MATLAB 画等势 线更加简单。静电力常量为k=9e9, 电量可取为q=1e- 9; 最大的等势线的半径应该比射线的半径小一点 r0=。其电势为u0=k8q /r0。如果从外到里取7 条等势线, 最里面的等势线的电势是最外面的3 倍, 那么各条线的电势用向量表示为: u=linspace(1,3,7)*u0。从- r0 到r0 取偶数个点, 例如100 个点, 使最中心点的坐标绕过0, 各点的坐标可用向量表示: x=linspace(- r0,r0,100), 在直角坐标系中可形成网格坐标: [X,Y]=meshgrid(x)。各点到原点的距离为: r=sqrt(X.^2+Y.^2), 在乘方时, 乘方号前面要加点, 表示对变量中的元素进行乘方计算。各点的电势为U=k8q. /r, 在进行除法运算时, 除号前面也要加点, 同样表示对变量中的元素进行除法运算。用等高线命令即可画出等势线 contour(X,Y,U,u), 在画等势线后一般会把电力线擦除, 在画等势线之前插入如下命令hold on 就行了。平面电力线和等势线如图1, 其中插入了标题等等。越靠近点电荷的中心, 电势越高, 电场强度越大, 电力线和等势线也越密。

VB实验报告答案

福建农林大学计算机与信息学院(计算机公共基础二级课程) 实验报告 课程名称:Visual Basic 程序设计 姓名:邹丽平 学院: 食品科学学院 专业:食品科学与工程 年级:2010级 学号:102258016001 指导老师:黄红兵 职称:讲师 2012 年5 月20 日

实验项目列表

福建农林大学计算机与信息学院实验报告 学院:食品科学学院专业:食品科学与工程年级: 2010级 姓名:邹丽平学号: 102258016001 实验室号__宝玲楼304___计算机号 01 实验时间: 2012.3.5 指导教师签字:黄红兵成绩: 报告退发(订正、重做) 实验一 VB环境和简单应用程序设计 一、实验目的和要求 1.了解Visual Basic系统对计算机软件、硬件的要求。 2.掌握启动与退出Visual Basic的方法。 3.熟悉visual basic的集成开发环境(IDE)。 4.掌握建立、编辑、运行和保存一个简单visual basic应用程序的全过程。 5.了解基本控件(窗体、标签、文本框、命令按钮)的简单应用。 二、实验内容 1.启动Visual Basic 6.0,熟悉其集成开发环境。 2.按图1-1在标题为“第一个应用程序”的窗体Form1上画两个标题分别为“欢迎您使用Visual Basic”和“请输入您的姓名”的标签( Label1和Label2),Label1的字体为隶书,并且其能根据文本大小自动调整尺寸,Label2的字型为倾斜;然后再设计一个初始文本为空的文本框Text1. 图1-1 运行界面 3.按图1-2在标题为“命令按钮设置”的窗体Form1上画三个标题分别为“禁止用C3”、“允许用C3”和“C3”的命令按钮(C1、C2和C3)。运行时,如果单击“禁止用C3”按钮,则C3按钮无效(如图10-2所示);如果单击“允许用C3”按钮,则C3按钮有效。 图1-2 运行界面 4.按图1-3在标题为“文本复制”的窗体Form1上画两个文本框(Text1和

相关文档
最新文档