大连天明传感器接口

该代码片段主要涉及串行通信的处理,包括定时器管理和数据接收功能。tianming_tmr函数用于管理串行通信的定时器,当通信准备好时,定时器递减;否则,定时器重置为3。tianming_rcv函数负责处理接收到的数据,当定时器为0且通信准备好时,函数会解析接收缓冲区中的数据,直到遇到结束符ETX。数据解析过程中,跳过逗号,并将逗号后的浮点数据通过asc_read_float函数读取并存储到float_data数组中。整体代码展示了串行通信中定时器管理和数据解析的基本流程。

#include "cpu.h"
#include "types.h"
#include "const.h"
#include "var.h"
#include "sub.h"
#include "stdarg.h"

#define STX  0x02
#define ETX  0x03
#define CR   0x0d


FP32 asc_read_float(INT8U *p );

void tianming_tmr (  SIO *p )
{
   if (*p->fr_ready )
    {if (*p->sio_tmr3) *p->sio_tmr3-=1;
    }
   else   *p->sio_tmr3 =3;

}


void tianming_rcv( SIO *p)
{
//FP32  ftmp_data,ftmp2;
INT8U *p1,tmp5;
INT16U  tmp_type;
  if (*p->fr_ready )
  {
     if (*p->sio_tmr3 ==0 )
     {
       tmp5=0;
       tmp_type=0;
       *p->fr_ready =0;
       *p->sio_tmr3 =3;
       *p->sio_rx_lenth=0;
        p1=p->sio_buf;
       while (1)
       {
         if ( *p1 ==ETX ) return;
         if ( *p1 !=',')  p1++;
         else
          {
            p1++;
            float_data[12+tmp5]= asc_read_float( p1);
            tmp5 ++;
          }

       }

     }

  }

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值