重庆科技学院
课程设计成果
   
院(系):_电气与信息工程学院_ 班 级:  计科普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小时内删除。