博客
关于我
2021年嵌入式第十二届省赛真题解析
阅读量:798 次
发布时间:2023-04-16

本文共 1222 字,大约阅读时间需要 4 分钟。

停车计费系统设计与实现

停车计费系统的核心功能模块包括数据接收处理、车辆信息存储与管理、费用计算以及用户界面显示。系统通过串口接收实时数据,并基于车辆到达和离场信息进行停车费用计算与管理。

1. 数据类型定义

车辆信息的存储采用结构体方式,便于管理和操作。定义的数据类型如下:

typedef struct {    uint8_t type[5];   // 停车类型    uint8_t id[5];     // 停车ID    uint8_t year;      // 年    uint8_t month;     // 月    uint8_t day;      // 日    uint8_t hour;     // 时    uint8_t min;      // 分    uint8_t sec;      // 秒    uint8_t empty_flag; // 空位标志} Data_Type;Data_Type Car_Data[8]; // 8个车位

2. 串口数据处理

系统通过串口接收停车数据,数据格式为22字节。首先进行数据包长度和内容的校验,确保接收的数据有效性。

3. 数据校验

校验过程包括:

  • 数据长度校验:检查接收数据长度是否为22字节。
  • 数据内容校验
    • 停车类型:必须为"VNBR"或"CNBR"。
    • 时间字段:年、月、日、时、分、秒均需有效。
    • 车辆ID:需为5位数字。
  • 4. 数据处理逻辑

    系统处理逻辑包括:

  • 车辆入库

    • 检查车库是否有空位。
    • 若无空位,返回错误信息。
    • 否则,记录车辆信息到相应车位,并更新空闲车位数量。
  • 车辆出库

    • 确认车辆类型与车库记录一致。
    • 计算停车时间差。
    • 根据停车类型计算费用。
    • 更新停车费用统计数据。
    • 发送收费信息至终端,并清空车位。
  • 5. 串口接收中断处理

    中断回调函数负责接收数据并存储:

    void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {    rx_buffer[rx_index++] = buffer;    HAL_UART_Receive_IT(&huart1, buffer, 1);}

    6. 时间与费用计算

    时间计算采用总秒转换为小时的方式,费用计算基于停车类型和价格设定。

    7. 界面显示

    系统通过LCD显示实时停车信息,包括:

    • 数据显示界面:显示现有车辆信息。
    • 参数设置界面:显示停车费用参数。

    8. 错误处理

    系统提供错误检测与处理机制,确保数据完整性和系统稳定运行。

    9. 按键操作

    按键用于切换界面和调整停车费用参数,实时反馈至LCD显示。

    10. 系统优化

    • 数据提取:提取车辆ID和类型信息。
    • 车位管理:利用结构体存储车辆信息,支持动态管理。
    • 内存管理:确保内存及时清空,防止数据污染。

    通过以上设计,系统能够实现高效的停车管理与费用计算,满足实际停车场景需求。

    转载地址:http://rygfk.baihongyu.com/

    你可能感兴趣的文章
    Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
    查看>>
    MySQL 是如何加锁的?
    查看>>
    MySQL 是怎样运行的 - InnoDB数据页结构
    查看>>
    mysql 更新子表_mysql 在update中实现子查询的方式
    查看>>
    MySQL 有什么优点?
    查看>>
    mysql 权限整理记录
    查看>>
    mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
    查看>>
    MYSQL 查看最大连接数和修改最大连接数
    查看>>
    MySQL 查看有哪些表
    查看>>
    mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
    查看>>
    MySql 查询以逗号分隔的字符串的方法(正则)
    查看>>
    MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
    查看>>
    mysql 查询,正数降序排序,负数升序排序
    查看>>
    MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
    查看>>
    mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
    查看>>
    mysql 死锁(先delete 后insert)日志分析
    查看>>
    MySQL 死锁了,怎么办?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 添加列,修改列,删除列
    查看>>