你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 网络与通信
基于bioscom的嵌入式模块仿真开发平台研究(五)
 

3.7 通用数据接收函数ReadDataDelay

在串行通信中,数据的传输是不连续的,因而,在处理数据接收时,应该将不连续的数据进行叠加,形成一个完整的数据包。本文设计的ReadDataDelay函数实现这一功能,用来从指定的串口nPort接收数据,保存在字节数组bData中,其中,下标为0的字节表示该字节数组的长度,其它为有效字节。nDelayMs是需要等待的节拍数,即在nDelayMs个节拍之内收到的数据,认为是一批数据,依次进行叠加(否则,认为是下一批数据),该参数可以根据机器时钟周期的大小进行调整。该函数的源代码如下。

void ReadDataDelay(int nPort, byte *bData, unsigned long nDelayMs)

{

    int nData=0;             /*对收到的字节计数*/

    unsigned long iCount=0;   /*对等待的节拍计数*/

    while(iCount < nDelayMs)

    {

        if(IsCom(nPort)==QueueIsNotEmpty)

        {

            nData++;       /*收到的字节数加1*/

            bData[nData] = ReadCom(nPort); /*将收到的字节存入数组*/

            iCount = 0;     /*重新计数,准备接收随后的数据*/

            if(nData > 255) break;  /*255是设定的最大的数据包长度*/

        }

        else iCount++;      /*没有数据,则等待的节拍加1*/

    }

    bData[0] = nData;   /*保存收到的字节数*/

}

 

4 通信函数的应用

通用的数据发送函数SendData与数据接收函数ReadDataDelay实现了简捷的数据传输任务,屏蔽了数据传输的繁琐的细节问题。在嵌入式模块中实现串行通信,首先通过InstallCom函数初始化串行接口,然后,通过SendData函数发送一批数据,等待数据到达。IsCom用于测试是否有数据,典型的关键实例代码如下。

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089