没有合适的资源?快使用搜索试试~ 我知道了~
案例课程C-S架构-1期 详细设计书6-通讯模块.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 174 浏览量
2022-07-14
08:02:52
上传
评论
收藏 342KB PDF 举报
温馨提示
试读
38页
案例课程C-S架构-1期 详细设计书6-通讯模块.pdf 学习资料 复习资料 教学资源
资源详情
资源评论
资源推荐
通讯模块
通讯模块
通讯模块
通讯模块
详细设计说明书
详细设计说明书
详细设计说明书
详细设计说明书
一、 模块设计
(
(
(
( 一
一
一
一 )
)
)
) 通讯模块
通讯模块
通讯模块
通讯模块
1.
1.
1.
1. 模块概述
模块概述
模块概述
模块概述
通讯模块是整个程序的核心,通过通讯模块定期的轮询温湿度探头,然后接受温湿度探头的数据 , 显
示在主界面上 , 根据温湿度的数据判断是否处于正常范围 , 从而来控制单片机的运行 。 考虑到用户可能要
查询通讯情况,我们使用对话框的形式向用户展现通讯的情况。
温湿度探头在故障的情况下,软件向其发送了查询指令后,不会有回应,应该有超时处理。
由于系统支持串口的设定,应该提供相应的串口设定方法给外部调用。
综上所述,通讯模块将在 Form 窗口内实现,通讯模块主要完成以下的工作:
1. 定期轮询温湿度探头的数据
2. 轮询温湿度探头后接受串口数据
3. 轮询温湿度探头的超时处理
4. 分析串口数据进行温湿度的显示
5. 分析温湿度数据向单片机发送控制指令
6. 将发送接收数据的信息显示在 Form 窗体上
7. 提供信息显示的【暂停 / 继续】功能
8. 串口的设定 / 获取 / 打开
轮询温湿度探头和轮询超时的处理如下:
开启两个定时器:
定时器 1 :轮询定时器
定时器 2 :响应超时定时器
温湿度监控软件 多个
温湿度探头
轮询定时器 超时定时器 串口
1
2
3
4
5
6
两个定时器的开启和关闭稍有点复杂,通过上图的六个时间点进行解释
1. 通讯 Form 开始运行时,启动轮询定时器,关闭超时定时器
2. 轮询定时器超时后,向第一个温湿度探头发送轮询指令,并同时开启超时定时器
3. 串口收到响应消息后,停止超时定时器,开启轮询定时器
4. 轮询定时器超时后,向第二个温湿度探头发送轮询指令,并同时开启超时定时器
5. 一直没有收到响应小时 , 超时定时器超时后 , 对第二个温湿度探头做超时处理 , 并向第三个温湿
度探头发送轮询指令
6. 串口收到相应消息后,停止超时定时器,开启轮询定时器
另外,由于通讯模块处于 Form 窗口中,无论 Form 是否显示,通讯模块需要一直运行,所以该 For m
窗口在点击关闭之后实际上不进行关闭,仅仅是隐藏。
2.
2.
2.
2. 界面布局
界面布局
界面布局
界面布局
(1)
(1)
(1)
(1) 功能概要
功能概要
功能概要
功能概要
考虑到该对话框需要实时的显示通讯信息,提供【 暂停 / 继续 】我们将界面设计为以下的 Form :
通讯 Form 分为三部分:
1. 说明 Label :主要说明如何阅读通讯信息
2. 通讯信息栏:实时更新通讯数据。
3. 功能按钮:用户按下【暂停】按钮暂时不更新通讯信息,按下【继续】按钮继续更新通讯信息 。
(2)
(2)
(2)
(2) 控件布局
控件布局
控件布局
控件布局
房间控件,命名为 Form_Communication ,基类为 Form
Form_Communication
Form_Communication
Form_Communication
Form_Communication : Form
Form
Form
Form
控件名称 类型 关键属性 说明
Form_Communicati
Form_Communicati
Form_Communicati
Form_Communicati
on
on
on
on
Form StartPosition : CenterScreen
FormClosing :
Form_Communication_FormClosin
g
通讯窗体
TextBox_Tip
TextBox_Tip
TextBox_Tip
TextBox_Tip TextBox Dock:Top
Multiline :True
ReadOnly :True
文本参照上图示例
ListBox_Msg
ListBox_Msg
ListBox_Msg
ListBox_Msg ListBox 通讯信息显示列表框
Button_Pause
Button_Pause
Button_Pause
Button_Pause Button Text: 暂停 暂停按钮
Click 事件: Button_Pause_Click
Button_Continue
Button_Continue
Button_Continue
Button_Continue Button Text: 继续
Click 事件 : Button_ Continue _Click
继续按钮
Timer_QueryStatus
Timer_QueryStatus
Timer_QueryStatus
Timer_QueryStatus Timer Interval :1000
Enabled:True
Tick 事件 : Timer_QueryStatus_Tick
定时轮询温湿度探头的
定时器
Timer_QueryTimeO
Timer_QueryTimeO
Timer_QueryTimeO
Timer_QueryTimeO
ut
ut
ut
ut
Timer Interval :1500
Enabled:false
Tick 事件 :
Timer_QueryTimeOut_Tick
轮询消息发送后 , 判断响
应超时的定时器
SerialPort_Comm
SerialPort_Comm
SerialPort_Comm
SerialPort_Comm SerialPort DataReceived 事件:
serialPort_ComReceived
串口控件 , 用来收发数据
4.
4.
4.
4. 成员变量和属性
成员变量和属性
成员变量和属性
成员变量和属性
(1)
(1)
(1)
(1) 功能概要
功能概要
功能概要
功能概要
由于需要轮询所有房间内的所有温湿度探头 , 所以需要记录当前轮询的温湿度探头和房间在列表中的
序号,以查找下个温湿度探头设备。
考虑到串口需要接受和发送数据 , 为了避免重复申请控件 , 也将缓存区作为成员变量 , 而且有时候数
据可能会出现分次到达,需要将当前接受的数据长度做记录。
另外,提供【暂停 / 继续】按钮,需要一个 bool 型的成员变量记录,当前是否需要显示通讯信息。
1. 接受温湿度探头数据的缓冲区(温湿度数据的长度作为常量)
2. 当前接收到的数据长度
3. 发送数据的缓冲区
4. 是否显示通讯信息
5. 当前查询的房间和设备的索引和对象
(2)
(2)
(2)
(2) 数据结构
数据结构
数据结构
数据结构
�
�
�
� 成员变量
Form_Communication
Form_Communication
Form_Communication
Form_Communication : Form
Form
Form
Form
成员变量 类型 访问权限 缺省值 含义
m_nEventLen
m_nEventLen
m_nEventLen
m_nEventLen const int private 10 温湿度摄像头返回
数据的长度
m_RecvBuffer
m_RecvBuffer
m_RecvBuffer
m_RecvBuffer byte[] private 接受温湿度探头返
回数据的缓冲区
m_RecvBufferCnt
m_RecvBufferCnt
m_RecvBufferCnt
m_RecvBufferCnt int private 已经接受温湿度探
头返回数据的长度
m_DeviceOrder
m_DeviceOrder
m_DeviceOrder
m_DeviceOrder byte[] private 向温湿度探头发送
查询消息的缓冲区
m_BoardOrder
m_BoardOrder
m_BoardOrder
m_BoardOrder byte[] private 向单片机发送命令
指令的缓冲区
m_bIsPause
m_bIsPause
m_bIsPause
m_bIsPause bool private 当前是否暂停显示
通讯数据
m_QueryRoomId
m_QueryRoomId
m_QueryRoomId
m_QueryRoomId
x
x
x
x
int private 目前查询的房间在
房间列表中的索引
号
m_QueryDeviceId
m_QueryDeviceId
m_QueryDeviceId
m_QueryDeviceId
x
x
x
x
int private 目前查询的设备在
设备列表中的索引
号
m_QueryDevice
m_QueryDevice
m_QueryDevice
m_QueryDevice Control_Device private 目前查询的设备控
件
m_QueryRoom
m_QueryRoom
m_QueryRoom
m_QueryRoom Control_Room private 目前查询的房间控
件
m_ReceDelegate
m_ReceDelegate
m_ReceDelegate
m_ReceDelegate ReceDataDelegate P rivate 串口接收到数据的
委托函数
由于串口接收到数据后 , 需要更新 Form 窗口的控件 , 而串口接收数据实际上不是界面线程中完成的
,
所以不可以直接控制 Form 控件,必须使用委托如下:
private delegate bool ReceDataDelegate(byte[] buffer, int count);
private ReceDataDelegate m_ReceDelegate;
剩余37页未读,继续阅读
努力搬砖的小王
- 粉丝: 16
- 资源: 7706
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0