一.编码技术
编码技术 | 描述 |
---|---|
归零编码(RZ) | 信号电平在一个码元内要恢复到0状态 |
非归零编码(NRZ) | 高1低0 |
反向不归零编码(NRZI) | 前后信号翻转表示后面一个码元为0,电平不变代表1 |
曼彻斯特编码 | 一个码元内,前高后低位1,前低后高为0 |
差分曼彻斯特编码 | 码元为1,该码元的前半个码元电平与前一个码元的后半个码元的电平相同,0则相反 |
4B/5B编码 | 在比特流中插入额外比特打破一连串的0或1 |
二.运行效果图
三.详细介绍
1.为了实现每种波形的动态更新,采用多定时器来实现。一个时钟主要负责背景及UI界面的绘制,而其他每种编码对应一个定时器,共同调用响应函数OnTimer函数,对每个定时的执行通过nIDEvent来识别。
2.界面绘制与编码波形绘制函数交替执行,而每种编码波形函数同时并行执行各自的代码块。
3.OnTimer函数内部实现伪码
void CInforEncodeDlg::OnTimer(UINT_PTR nIDEvent)
{1.数据预处理,一批一批的进行数据处理,每次时钟1都调用。if (nIDEvent == 1){ //时钟nIDEvent =1主要负责界面及背景绘制,以及数据的预处理等。DataPreprocess();}2.各个时钟的调度,6个bool类成员变量m_xxx=false;用于控制界面和编码函数交替执行的控制,都为假时,执行界面绘制函数,为真时执行对应的编码时钟。switch(nIDEvent){case 1:DrawUI();break;case 2:NRZ();break;case 3:RZ();break;case 4:NRZI();break;case 5:Man();break;case 6:DiffMan();break;case 7:To4BOr5B();break;}CDialogEx::OnTimer(nIDEvent);
}
4.MFC函数介绍
函数 | 功能 |
---|---|
GetDlgItem(IDC_STATIC_BITE) | 获取控件IDC_STATIC_BITE的句柄 |
GetClientRect(CRec r) | 获取客户区,通过矩形r返回 |
CBrush::FromHandle((HBRUSH)GetStockObject(BLACK_BRUSH)) | 创建一个画刷 |
FillRect | 填充矩形,可以用于绘制背景色,也可以通过内存DC绘制 |
UpdateData(TRUE) | 将输入值更新到绑定对象上,为FALSE时,把变量值更新到控件上显示 |
SelectObject | 将画笔、画刷等选入设备 |
SetBkMode(TRANSPARENT) | 设置背景为透明模式,绘制文本是,文本的背景为透明模式 |
TextOutW | 用于绘制文本 |
MoveTo(CPoint p) | 定位到点p |
LineTo(CPoint p) | 当前点与p点连线 |
代码https://pan.baidu.com/s/1iL_g-ws8YgGvFWzzlHiaXw
提取码:zect