C是一种通用的编程语言,广泛用于系统软件与应用软件的开发。早期,为了移植与开发UNIX操作系统,由丹尼斯·里奇与肯·汤普逊,以B语言为基础,在贝尔实验室设计、开发出来。 C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序员中备受青睐,成为最近25年使用最为广泛的编程语言[2]。目前,C语言编译器普遍存在于各种不同的操作系统中,例如Microsoft Windows, Mac OS X, Linux, Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。 二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言的标准。二十世纪八十年代至今的有关程序开发工具,一般都支持匹配ANSI C的语法。
unsigned int AddSuffix(unsigned char *Src, unsigned int SrcLen)
{
unsigned int i;
unsigned int j;
unsigned char *Pt;
Pt = Src + SrcLen; // Source buffer must big!!
j = 0;
for( i = 0; i < SrcLen; i++ ) { // All the data.
*(Pt + j++) = *(Src + i);
if( *(Src + i) == 0x0d ) { // Is 0x0d ?
*(Pt + j++) = 0x55;
}
}
for( i = 0; i < j; i++ ) { // Shift data.
*(Src + i) = *(Pt + i);
}
return( j ); // Aim length.
}
void UartApp( Uart_Recv *Dev )
{
unsigned char Status;
unsigned char DataTp;
unsigned short i;
unsigned short Num;
if( Dev->Nonius == 0 ) { // Have data?
return;
}
OS_ENTER_CRITICAL()
Num = Dev->Nonius;
OS_EXIT_CRITICAL()
i = Num;
Dev->FrameLen = 0;
while( i-- ) { // Out data.
DataTp = Dev->Data_buf[Dev->OutLen++];
if( Dev->OutLen >= RECV_AT_MAX ) {
Dev->OutLen = 0;
}
Dev->Frame_buf[Dev->FrameLen++] = DataTp;
}
OS_ENTER_CRITICAL()
Dev->Nonius = Dev->Nonius - Num;
OS_EXIT_CRITICAL()
#if DEBUG_PRINT
Uart1Printf("Dev->FrameLen=%d\r\n", Dev->FrameLen);
for( i = 0; i < Dev->FrameLen; i++ ) {
if( Dev->Frame_buf[i] < 0x0f ) {
Uart1Printf("0%x ", Dev->Frame_buf[i]);
}
else {
Uart1Printf("%x ", Dev->Frame_buf[i]);
}
}
Uart1Printf("\r\n");
#endif
Status = PrintData( Dev->FrameLen, Dev->Frame_buf );
if( Status == false ) {
IWDG_Init(); // print err
while(1);
}
}