嵌入式系统设计——基于web服务机房温度监控系统

目录

1、案例系统的结构

1.1结构框图

1.2进程间通信

2、案例实现

2.1案例进程间通信数据结构

2.1.1共享内存操作基础理论

2.1.2共享内存操作案例

2.2CGI温度采集代码实现

2.3CGI温度模块测试 

3、实现效果


1、案例系统的结构

1.1结构框图

1.2进程间通信

1、管道技术:有名管道、无名管道(有序)

2、SystemV IPC:消息队列、共享内存、信号量

 本例采用共享内存的方法来做。

2、案例实现

监控器:名称:(机房1,机房2,……)

              温度值:36.32  27.23

2.1案例进程间通信数据结构

task.h

#ifndef DAY4_TASK_H
#define DAY4_TASK_H
#define MAX_TASK 5
//一条记录
struct task_msg{
    double temp;
    char label[32];
};

struct tasks_info{
    int num;
    struct task_msg data[MAX_TASK];
};

#define KEY_1 "/home"
#define KEY_2 10

/* 初始化共享内存空间,返回对应进程的用户空间映射的地址*/
extern void* init_shm(void);
extern void detach_shm(void *p);

#endif //DAY4_TASK_H

2.1.1共享内存操作基础理论

system V IPC

1、寻找key值  寻找通信双方可以识别的key  ftok  获得key值

2、通过key找到找到对应的IPC对象(共享内存)shmget  获得ID值

3、在进程的应用空间中映射内核IPC对象的地址(该进程的用户空间地址)shmat/shmdt

4、把应用空间的地址转换为共享双方约定的数据结构进行填充和读取  

2.1.2共享内存操作案例

sim_catch.c

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <time.h>
#include <string.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include "task.h"
static struct tasks_info *tasks;
static char* task_lables[]={"机房1","机房2","机房3","机房4","机房5"};

//发送端
/*void init_shm(){
    key_t k1;
    int shm_id;
    struct task_info *t1;
    k1=ftok("/home",10);
    if(k1==-1){
        return NULL;
    }

    shm_id=shmget(k1,sizeof(struct task_info),IPC_CREAT | 0644);
    if(shm_id==-1){
        return NULL;
    }
    t1=(struct task_info *)shmat(shm_id,NULL,0);
    t1-&
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
嵌入式系统设计是指将计算机系统集成到其他设备或系统中,以实现特定功能。而基于STM32CubeMX与HAL库的嵌入式系统设计是指利用ST公司的STM32系列微控制器,结合STM32CubeMX工具和HAL库(Hardware Abstraction Layer),进行软硬件设计和开发的过程。 STM32CubeMX是ST公司推出的一款嵌入式系统设计工具,它提供了图形化的界面,可以帮助开发者快速配置STM32微控制器的引脚、时钟、外设等参数,生成初始化代码和项目文件,使整个开发过程更加简化和快捷。 HAL库是STM32系列微控制器的硬件抽象层库,提供了一组封装了底层硬件操作的API接口,使开发者能够更加方便地进行外设控制和数据处理等操作。开发者可以根据具体的需求,选择需要的API接口,编写相应的代码,完成对硬件的控制和操作。 在使用STM32CubeMX和HAL库进行嵌入式系统设计时,可以通过STM32CubeMX工具进行硬件的初始化和配置,生成相应的代码和项目文件。然后,在IDE(集成开发环境)中使用HAL库提供的API接口,编写代码进行软件的开发和应用程序的编写。通过这种方式,开发者可以在短时间内快速完成嵌入式系统设计,提高开发效率和产品质量。 总而言之,基于STM32CubeMX和HAL库的嵌入式系统设计提供了一种快速、简化的嵌入式软硬件开发方法,使开发者能够更加高效地进行嵌入式应用的设计与开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值