SLIP驱动程序 C语言实现

SLIP驱动程序

下面的C语言函数发送并接收SLIP分组。它们依赖于send_char() 和 recv_char(),这两个函数在串行线路上发送和接收单个字符。

/* SLIP 特殊字符编码 */
#define END 0300 /* 分组结束标记 */
#define ESC 0333 /* 填充字节标记*/
#define ESC_END 0334 /* ESC ESC_END 表示数据字节END */
#define ESC_ESC 0335 /* ESC ESC_ESC 表示数据字节ESC */

/* SEND_PACKET: 发送长“len”的分组,起始位置为“p” */
void send_packet(p, len)
char *p;
int len; {

/* 发送一个初始END 字符,清除由于线路噪声可能堆积在接收方的任何数据 */
send_char(END);

/* 为分组中的每个字符发送适当的字符序列 */
while(len--) {
switch(*p) {
/* 如果与END字符相同,我们就发送
* 两个特殊字符码避免接受方认为
* 我们发出了END结束标记
*/
case END:
send_char(ESC);
send_char(ESC_END);
break;

/* 如果与ESC字符编码相同,
* 我们就发送两个特殊字符码
* 避免接受方以为我们发送了ESC
*/
case ESC:
send_char(ESC);
send_char(ESC_ESC);
break;

/* 否则,我们就发送字符本身
*/
default:
send_char(*p);
}

p++;
}

/* 告诉接收方我们已经完成分组的发送
*/
send_char(END);
}

/* RECV_PACKET: 接收分组并放入地址为“p”的缓冲区,
* 如果收到的字节数大于len,分组将被截断
* 返回保存在缓冲区的字节数
*/
int recv_packet(p, len)
char *p;
int len; {
char c;
int received = 0;

/* 使用循环读取字节直到接受完整个分组
* 如果用完缓冲区就不再复制
*/
while(1) {
/* 取一个字符进行处理
*/
c = recv_char();

/* 如果需要则处理填充字符
*/
switch(c) {

/* 如果是END字符就表示分组完成
*/
case END:
/* 一点小小的改进:如果分组没有数据则忽略掉。
*这意味着避免双END字符构成的空分组打扰IP,
*这种空分组用于检测线路噪声。
*/
if(received)
return received;
else
break;

/* 如果收到ESC字符,则等待
* 下一个字符来决定把什么字符存入分组
*/
case ESC:
c = recv_char();

/* 如果“c”不是这两个字符中的一个,
* 就违反了协议。最好的办法似乎是 
* 单独保留这个字符并填入分组 
*/
switch(c) {
case ESC_END:
c = END;
break;
case ESC_ESC:
c = ESC;
break;
}

/* 现在到了缺省处理情况,就让它保存字符
*/
default:
if(received < len)
p[received++] = c;
}
}
}

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi 2007 Slip是指Delphi 2007集成开发环境(IDE)的升级补丁。Delphi是一种基于Pascal语言的快速应用程序开发工具,用于创建Windows应用程序。Delphi 2007 Slip是由Embarcadero Technologies提供的一项升级补丁,旨在改进Delphi 2007的稳定性和功能。 Delphi 2007提供了许多强大的功能和工具,使开发者能够快速构建可靠的Windows应用程序。然而,在使用过程中可能会遇到一些问题或bug。Delphi 2007 Slip补丁的目的是修复这些问题,提高IDE的性能和稳定性。 Delphi 2007 Slip的主要特点包括: 1. 增强的性能和稳定性:Delphi 2007 Slip补丁修复了一些已知的bug和问题,提高了IDE的性能和稳定性。这意味着开发者可以更加高效地开发和调试他们的应用程序。 2. 新功能的引入:Delphi 2007 Slip还引入了一些新的功能和改进,以提供更好的开发体验。这些新功能可以帮助开发者更方便地处理一些常见的开发任务,提高开发效率。 3. 兼容性和互操作性:Delphi 2007 Slip与其他Delphi版本和相关工具(如数据库和第三方组件)的兼容性得到了改进。这意味着开发者可以更容易地迁移他们的项目或与其他开发者进行协作。 4. 文档和技术支持:Delphi 2007 Slip补丁还提供了相关文档和技术支持,帮助开发者更好地理解和使用Delphi 2007的新功能和改进。 总结而言,Delphi 2007 Slip是一项修复和改进Delphi 2007 IDE的补丁。它提供了更好的性能和稳定性、新功能的引入、兼容性和互操作性的提升,以及相关文档和技术支持。对于使用Delphi 2007开发Windows应用程序的开发者来说,安装Delphi 2007 Slip是一个值得考虑的升级选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值