重庆科技学院
课程设计成果
院(系):_电气与信息工程学院_ 班 级: 计科普0802
学生姓名: 庄桐泉 学 号: **********
设计地点(单位)___ _I315 __________ _______
设计题目:_____ 聊天程序设计_________________________ _
完成日期: 2011 年 9 月 5 日
指导教师评语: _______________________________________
_________________________________________________________________________________________________________________________________________________________________________________________________________
成绩(五级记分制):______ __________
教师签名:_________________________
摘要
嵌入式linux在电子行业的应用很广泛,学习嵌入式linux显得非常重要。这次课程设计的主要目的是检验上学期学习linux后的效果。通过基础题的代码编写,熟悉linux C语言编程技巧。通过完成聊天程序的设计,熟悉linux底层编程。利用QT设计界面,缩短开发时间。
关键字:嵌入式linux;基础题;聊天程序;QT
课程设计任务书
设计题目:基础题目
学生姓名 | 庄桐泉 | |||
课程名称 | 嵌入式linux课程设计 | 专业班级 | 计科普2008 | |
地 点 | I315 | 起止时间 | 2011-8-29至2011-9-9 | |
设计内容及要求 | GCC编译器的使用,LINUX系统C程序设计编译、调试方法 1、编写程序将数组内容倒置a[]=”123456789”。 2、利用指针将数据A的内容复制到数据B。 3、创建两线程,通过打印输出各自线程号和打印次序,要求从打印结果看出两个线程是并发执行的。 4、创建两线程,A线程通过消息队列发消息,B线程收到后在屏幕打印输出,要求两线程个打印出线程号和消息内容。 5、创建两线程,A线程循环打印数组a[100],B线程循环将数组成员+1,要求利用互斥锁,使每次输出a[0]==a[99]. 6、创建两线程,A线程每2秒打印一次字母A,B线程每秒打印一次字母B,要求利用同步信号量,使输出字母B总是在A之后。 8、通过Makefile,将project中的一个.c编译成.a,另一个.c调用.a的函数,要求实现静态库的生成和调用,运行结果正确。 | |||
设计 参数 | ||||
进度 要求 | 第一周之内完成 | |||
参考资料 | 1、嵌入式Linux应用程序开发标准教程.人民邮电出版社。华清远见嵌入式培训中心。2010.7 2、ZLG ARMMAGIC2410实验指导、资料。 | |||
其它 | ||||
设计题目:聊天程序设计
学生姓名 | 庄桐泉 | |||
课程名称 | 嵌入式linux课程设计 | 专业班级 | 计科普2008 | |
地 点 | I315 | 起止时间 | 2011-8-29至2011-9-9 | |
设计内容及要求 | 1、在QT(或miniGUI)编写聊天程序,交叉编译后下载到目标机,可实现两台目标机可发送文本聊天 2、QT(或miniGUI)界面设计至少包括“发送”,“重置”两个按钮,要求必须把目标机的硬件键盘映射到QT设计的软件界面中,实现软件按钮的功能。 选作:发送文件。 | |||
设计 参数 | ||||
进度 要求 | 做完基础题目之后开始做本题目。 | |||
参考资料 | 1、嵌入式Linux应用程序开发标准教程.人民邮电出版社。华清远见嵌入式培训中心。2010.7 2、ZLG ARMMAGIC2410实验指导、资料。 | |||
其它 | ||||
说明 | 1.本表应在每次实施前一周由负责教师填写二份,学院审批后交学院教务办备案,一份由负责教师留用。2.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。 | |||
系主任: 指导教师: 2011年 9 月 5 日
题目一 基础题
1 设计内容及要求
1.1 二小题
(1) 编写程序将数组内容倒置a[]=”123456789”。
(2) 程序代码实现如下:
char a[]="0123456789"; ①
char tmp;
int i = 0,j = 0;
for(i = 0,j = strlen(a)-1;i<=strlen(a)/2-1;i++,j--) ②
{
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
for(i = 0;i<strlen(a);i++) ③
printf("%c",a[i]);
printf("\n");
(3)程序分析:
①定义数组
②数组内容倒置
③输出倒置后数组内容
(4)程序执行效果如下:
1.2三小题
(1)利用指针将数据A的内容复制到数据B。
(2)程序代码实现如下:
char A[] = "abcd";
char B[] ="1234"; ①
int i = 0;
char *tmp; ②
tmp = A; ③
for(i = 0;i<strlen(A);i++) ④
B[i] = *tmp++;
for(i = 0;i<strlen(A);i++) ⑤
printf("%c",B[i]);
printf("\n");
(3)程序分析:
①定义数组
②定义指针
③指针指向数组A
④移动指针拷贝数字到B中
⑤显示拷贝后的数组
(4)程序执行效果如下:
1.3四小题
(1)创建两线程,通过打印输出各自线程号和打印次序,要求从打印结果看出两个线程是并发执行的。
(2)程序代码如下:
#define THREAD_NUMBER 2
#define REPEAT_NUMBER 5
#define DELAY_TIME_LEVELS 10.0
void * thrd_func(void *arg) ①
{
int thrd_num = (int)arg;
int delay_time = 0;
int count = 0;
printf("Thread %d is starting\n", thrd_num);
for (count = 0; count < REPEAT_NUMBER; count++)
{
delay_time = (int)(rand() * DELAY_TIME_LEVELS/(RAND_MAX)) + 1;
sleep(delay_time); ②
printf("\tThread %d: job %d delay = %d\n", thrd_num, count, delay_time);
}
printf("Thread %d finished\n", thrd_num);
pthread_exit(NULL); ③
}
int main(void)
{
pthread_t thread[THREAD_NUMBER];
int no = 0, res;
void * thrd_ret;
for (no = 0; no < THREAD_NUMBER; no++) ④
{
res = pthread_create(&thread[no], NULL, thrd_func, (void*)no);
}
for (no = 0; no < THREAD_NUMBER; no++)
{
res = pthread_join(thread[no], &thrd_ret);
}
return 0;
}
(3)程序分析:
linux内核设计与实现 pdf程序中创建2个线程,为了更加方便地描述线程之间的并行执行,让2个线程重用一个执行函数。每个线程都有5次循环,每次循环之间会随机等待1-10s的时间,意义在于模拟每个任务的到达时间是随机的,更加形象看出线程之间的并行执行。
1创建线程执行函数,程序中2个线程重用一个执行函数。
2让线程延时,延时时间随机产生。
3线程退出。
4创建2个线程。
(4)程序执行效果如下:
1.3五小题
(1)创建两线程,A线程通过消息队列发消息,B线程收到后在屏幕打印输出,要求两线程个打印出线程号和消息内容。
(2)程序代码如下:
#define BUFSZ 512
#define THREAD_NUMBER 2
struct message ①
{
long msg_type;
char msg_text[BUFSZ];
};
struct message msg;
int qid; /*Create queue*/
void * thrd_func0(void *arg) ②
{
int thrd_num = (int)arg;
int len = 0;
printf("Thread %d is starting\n", thrd_num);
sprintf(msg.msg_text,"%s","send the msg");
msg.msg_type = getpid();
len = strlen(msg.msg_text);
/*添加消息到消息队列*/
msgsnd(qid, &msg, len, 0); ③
printf("send the message is:%s\n",(&msg)->msg_text);
pthread_exit(NULL); ④
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论