stream.c
来自「在ARM7和UC/OSII的平台上实现了GPS自动报站的功能,涉及GPS模块LE」· C语言 代码 · 共 127 行
C
127 行
/****************************************************************
** *
** FILE : Stream.C *
** COPYRIGHT : (c) 2001 .Xiamen Yaxon NetWork CO.LTD *
** *
** *
** By : CCH 2002.1.15 *
****************************************************************/
#include "system.h"
#include "structs.h"
#include "stream.h"
BOOLEAN InitStrm(STREAM *Sp, STREAMMEM *Bp, INT16U MaxLen)
{
if (Sp == 0) return FALSE;
Sp->Len = 0;
Sp->MaxLen = MaxLen;
Sp->CurPtr = Bp;
Sp->StartPtr = Bp;
return TRUE;
}
INT16U GetStrmLen(STREAM *Sp)
{
return (Sp->Len);
}
STREAMMEM *GetStrmPtr(STREAM *Sp)
{
return (Sp->CurPtr);
}
STREAMMEM *GetStrmStartPtr(STREAM *Sp)
{
return (Sp->StartPtr);
}
void MovStrmPtr(STREAM *Sp, INT16U Len)
{
if (Sp != 0) {
if ((Sp->Len + Len) <= Sp->MaxLen) {
Sp->Len += Len;
Sp->CurPtr += Len;
} else {
Sp->Len = Sp->MaxLen;
}
}
}
void WriteBYTE_Strm(STREAM *Sp, INT8U writebyte)
{
if (Sp != 0){
if (Sp->Len < Sp->MaxLen) {
*Sp->CurPtr++ = writebyte;
Sp->Len++;
}
}
}
void WriteHWORD_Strm(STREAM *Sp, INT16U writeword)
{
HWORD_UNION temp;
temp.hword = writeword;
WriteBYTE_Strm(Sp, temp.bytes.high);
WriteBYTE_Strm(Sp, temp.bytes.low);
}
void WriteLONG_Strm(STREAM *sp, INT32U writelong)
{
WriteHWORD_Strm(sp, writelong >> 16);
WriteHWORD_Strm(sp, writelong);
}
void WriteLF_Strm(STREAM *Sp)
{
WriteBYTE_Strm(Sp, CR);
WriteBYTE_Strm(Sp, LF);
}
void WriteCR_Strm(STREAM *Sp)
{
WriteBYTE_Strm(Sp, CR);
}
void WriteSTR_Strm(STREAM *Sp, char *Ptr)
{
while(*Ptr)
{
WriteBYTE_Strm(Sp, *Ptr++);
}
}
void WriteDATA_Strm(STREAM *Sp, INT8U *Ptr, INT16U Len)
{
while(Len--)
{
WriteBYTE_Strm(Sp, *Ptr++);
}
}
INT8U ReadBYTE_Strm(STREAM *Sp)
{
Sp->Len++;
return (*Sp->CurPtr++);
}
INT16U ReadHWORD_Strm(STREAM *Sp)
{
HWORD_UNION temp;
temp.bytes.high = ReadBYTE_Strm(Sp);
temp.bytes.low = ReadBYTE_Strm(Sp);
return temp.hword;
}
void ReadDATA_Strm(STREAM *Sp, INT8U *Ptr, INT16U Len)
{
while(Len--)
{
*Ptr++ = ReadBYTE_Strm(Sp);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?