• 大小: 1.17MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-15
  • 语言: C/C++
  • 标签:

资源简介

花了5小时++编的使用C++程序实现HDLC协议的相关内容,之前有位朋友也编了个程序,不过其效果不敢苟同啊,这样才是我觉得应该自己编一个放在网上,供大家分享指正。谢谢啊!

资源截图

代码片段和文件信息

#include
#include
#include 


typedef struct cNode{          //定义一个结构体
char byData;               //节点存储的数据
struct cNode* pNext;//指针:指向下一个节点
struct cNode* pLast;//指针:指向前一个节点
}cNode;


cNode* fnCreat(cNode* pListHead)    //建立一个链表
{
cNode *pNewNode  *pListNode; //声明链表的指针,分别是新建的节点指针、当前节点指针、链表表头指针;
char byInputNodeData;//声明一个字符变量,用于暂时存储节点数据的输入;
fflush(stdin);//情空键盘缓冲区数据;
scanf(“%c“  &byInputNodeData);
while(byInputNodeData  !=  ‘\n‘)//如果输入字符不是“回车/换行符”则创建一个新节点并存储该输入,然后将节点加入到链表的尾部
{
if(byInputNodeData  ==  ‘0‘|byInputNodeData  ==  ‘1‘)
{
    pNewNode  =  (cNode*)malloc(sizeof(cNode));//创建新节点
    pNewNode->byData  =  byInputNodeData;
    pNewNode->pNext  =  NULL;
    pNewNode->pLast  =  NULL;
    if(pListHead  ==  NULL)//如果链表为空链表则建立第一个节点;
    {
    pListHead  =  pNewNode;
    pListNode  =  pListHead;
    }
    else//如果不是空链表则在后续加入新节点;
    {
    pListNode->pNext  =  pNewNode;
    pNewNode->pLast  =  pListNode;
        pListNode  =  pNewNode;
    };
    };
scanf(“%c“  &byInputNodeData);//继续读入下一个字节数据,每次仅读取一个自己,剩余字节将会暂存在键盘的输入缓冲区。
}
return(pListHead);//返回链表表头指针;
}

cNode* fnReceive(cNode* pListHead)           //接收的0/1比特序列,即由链表pListHead模拟的串行数据;
                                         //HDLC的串行输入数据处理,即每5位连1后面如果有一个0则把它去掉;
{
cNode *pChange *pListNode  =  pListHead;
int nCount  =  0;
while(pListNode  !=  NULL)
{
if(pListNode->byData  ==  ‘1‘ && nCount  <  5)
{
nCount  ++;
pListNode  =  pListNode->pNext ;
}
else 
{
if(pListNode->byData  ==  ‘0‘&& nCount  <  5)
{
nCount  =  0;
pListNode  =  pListNode->pNext;
}
if(pListNode->byData  ==  ‘0‘ &&nCount  ==  5)                
{
nCount  =  0;
pChange  =  pListNode->pLast;
pChange->pNext  =  pListNode->pNext;
pChange  =  pListNode->pNext;
pChange->pLast  =  pListNode->pLast;
pChange  =  pListNode;
pListNode  =  pChange->pNext ;
free(pChange);
}
else 
return (pListHead);
}
}
return(pListHead);
}

cNode* fnSend(cNode* pListHead)        //发送的0/1比特序列,即由链表pListHead模拟的串行数据;HDLC的串行输出数据处理,即每5位连1后面加一个0;
{
cNode  *pChange*pNewNode *pListNode  =  pListHead;
int nCount  =  0;
while(pListNode->pNext !=  NULL)
{
if(pListNode->byData  ==  ‘1‘ && nCount  <  5)
{
nCount  ++;
pListNode  =  pListNode->pNext ;
}
else 
{
if(pListNode->byData  ==  ‘0‘)
{
nCount  =  0;
pListNode  =  pListNode->pNext ;
}
else if(pListNode->byData  ==  ‘1‘ &&nCount  ==  5)                 
{
nCount  =  0;
pNewNode  =  (cNode*)malloc(sizeof(cNode));         
pNewNode->byData  =  ‘0‘;
pNewNode->pNext  =  pListNode; 
pNewNode->pLast  =  pListNode->pLast;
pChange  =  pNewNode->pLast;
pChange->pNext  =  pNewNode;
pListNode->pLast  =  pNewNode;
}
}
}
return(pListHead);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        652  2011-10-06 21:18  HDLC程序\Debug\cl.command.1.tlog

     文件       1850  2011-10-06 21:18  HDLC程序\Debug\CL.read.1.tlog

     文件        290  2011-10-06 21:18  HDLC程序\Debug\CL.write.1.tlog

     文件       1657  2011-10-06 19:24  HDLC程序\Debug\hdlc.Build.CppClean.log

     文件     455680  2011-10-06 21:18  HDLC程序\Debug\hdlc.exe

     文件        406  2011-10-06 19:25  HDLC程序\Debug\hdlc.exe.embed.manifest

     文件        472  2011-10-06 19:25  HDLC程序\Debug\hdlc.exe.embed.manifest.res

     文件        381  2011-10-06 21:18  HDLC程序\Debug\hdlc.exe.intermediate.manifest

     文件    1019416  2011-10-06 21:18  HDLC程序\Debug\hdlc.ilk

     文件         65  2011-10-06 21:18  HDLC程序\Debug\hdlc.lastbuildstate

     文件       2865  2011-10-06 21:18  HDLC程序\Debug\hdlc.log

     文件       8895  2011-10-06 21:18  HDLC程序\Debug\hdlc.obj

     文件    1969152  2011-10-06 21:18  HDLC程序\Debug\hdlc.pdb

     文件        204  2011-10-06 19:25  HDLC程序\Debug\hdlc_manifest.rc

     文件          2  2011-10-06 21:18  HDLC程序\Debug\link-cvtres.read.1.tlog

     文件          2  2011-10-06 21:18  HDLC程序\Debug\link-cvtres.write.1.tlog

     文件          2  2011-10-06 21:18  HDLC程序\Debug\link.3932-cvtres.read.1.tlog

     文件          2  2011-10-06 21:18  HDLC程序\Debug\link.3932-cvtres.write.1.tlog

     文件          2  2011-10-06 21:18  HDLC程序\Debug\link.3932.read.1.tlog

     文件          2  2011-10-06 21:18  HDLC程序\Debug\link.3932.write.1.tlog

     文件          2  2011-10-06 21:18  HDLC程序\Debug\link.6720-cvtres.read.1.tlog

     文件          2  2011-10-06 21:18  HDLC程序\Debug\link.6720-cvtres.write.1.tlog

     文件          2  2011-10-06 21:18  HDLC程序\Debug\link.6720.read.1.tlog

     文件          2  2011-10-06 21:18  HDLC程序\Debug\link.6720.write.1.tlog

     文件       1348  2011-10-06 21:18  HDLC程序\Debug\link.command.1.tlog

     文件       2932  2011-10-06 21:18  HDLC程序\Debug\link.read.1.tlog

     文件        684  2011-10-06 21:18  HDLC程序\Debug\link.write.1.tlog

     文件        360  2011-10-06 21:18  HDLC程序\Debug\mt.command.1.tlog

     文件        278  2011-10-06 21:18  HDLC程序\Debug\mt.read.1.tlog

     文件        278  2011-10-06 21:18  HDLC程序\Debug\mt.write.1.tlog

............此处省略24个文件信息

评论

共有 条评论

相关资源