⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 周立功magic2200实验箱flash下载演示工程
💻 C
📖 第 1 页 / 共 2 页
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"
#include "stdlib.h"


#define	TaskStkLengh	2048	        //Define the Task0 stack length 定义用户任务0的堆栈长度
 
static OS_STK	TaskStk[TaskStkLengh];	//Define the Task0 stack 定义用户任务0的堆栈
static OS_STK	TaskStk1[TaskStkLengh];	//Define the Task0 stack 定义用户任务0的堆栈
static SOCKET s;
static struct sockaddr ServAddr,CliAddr;
static volatile uint16 LinkHandle;
static volatile int errno;

void 	Task0(void *pdata);			//Task0 任务0
void 	Task1(void *pdata);			//Task0 任务0


/*********************************************************************************************************
**                            main
********************************************************************************************************/
        int main (void)
{
	OSInit();																										
	OSTaskCreate(Task0,(void *)0, &TaskStk[TaskStkLengh - 1], 59);		
	OSTaskCreate(Task1,(void *)0, &TaskStk1[TaskStkLengh - 1], 60);		
	OSStart();
	return 0;															
}

#define BUF_LENGTH   (1024 * 1024  * 4)
static char buf[BUF_LENGTH];
static volatile uint32 Hard;
static volatile uint32 End;
static char Sbuf[1024 * 4];
static volatile uint32 SEnd = 0;

		void Task1(void *pdata)
{
    int len, len1;
    uint32 myend,myhard;
    unsigned int myLink;
    pdata = pdata;
    
    while (1)
    {
        myLink = LinkHandle;
        if (TCP_Status(myLink) == TCP_STATE_ESTABLISHED)
        {
            errno = 0;
            myend = End;
            myhard = Hard; 
            if (myhard >= myend)
            {
                len = BUF_LENGTH - myhard;
                if (myend == 0)
                if (len > 0)
                {
                    len--;
                }
            }
            else
            {
                len = myend - myhard - 1;
            }
            if (len > 0)
            {
                if (len > MY_TCP_WIN)
                {
                    len = MY_TCP_WIN;
                }
                len1 = recv(myLink, (uint8 *)(&(buf[myhard])), len, 0);
                myhard = myhard + len1;
                if (myhard >= BUF_LENGTH)
                {
                    myhard = 0;
                }
                Hard = myhard;
            }
        }
        else
        {
            errno = -1;
            OSTimeDly(5);
        }
    }
}

/*********************************************************************************************************
** 函数名称: SendChar
** 功能描述: 发送一个字符
** 输 入: 字符
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 陈明计
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void SendChar(char data)
{
    if (SEnd != 0)
    {
        send(LinkHandle, (uint8 *)(Sbuf), SEnd, 0);
        SEnd = 0;
    }
    send(LinkHandle, (uint8 *)(&data), 1, 0);
}

/*********************************************************************************************************
** 函数名称: GetCh
** 功能描述: 接收发送一个字符
** 输 入: 无
** 输 出: 收到的字符
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 陈明计
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        char GetCh(void)
{
    uint32 myend, myhard;
    uint8 temp;

    temp = 0;
    while (errno == 0)
    {
        myhard =Hard;
        myend = End;
        if (myhard != myend)
        {
            temp = buf[myend];
            myend++;
            if (myend >= BUF_LENGTH)
            {
                myend = 0;
            }
            End = myend;
            break;
        }
        OSTimeDly(5);
    }
    return temp;
}

/*********************************************************************************************************
** 函数名称: PrintString
** 功能描述: 发送一个字符串
** 输 入: 字符串指针
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 陈明计
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void PrintString(char *s)
{
    uint16 i;
    char *p;
    
    if (SEnd != 0)
    {
        send(LinkHandle, (uint8 *)(Sbuf), SEnd, 0);
        SEnd = 0;
    }

    i = 0;
    p = s;
    while (*p++ != 0)
    {
        i++;
    }
    send(LinkHandle, (uint8 *)s, i, 0); 
}


/*********************************************************************************************************
** 函数名称: PrintString
** 功能描述: 发送一个字符串
** 输 入: 字符串指针
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 陈明计
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void PrintString1(char *s)
{
    uint16 i;
    char *p;
    char temp;
    
    i = 0;
    p = s;
    while (1)
    {
        temp = *p++;
        if (temp == 0)
        {
            break;
        }
        Sbuf[SEnd] = temp;
        SEnd++;
        i++;
    }
    Sbuf[SEnd + 1] = 0;
    if (SEnd >= 2048)
    {
        send(LinkHandle, (uint8 *)(Sbuf), SEnd, 0);
        SEnd = 0;
    }
}
/*********************************************************************************************************
** 函数名称: GetString
** 功能描述: 接收一个以'\r'结束的字符串
** 输 入: 存储字符串指针
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 陈明计
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void GetString(char *s)
{
    char temp1;
    char *cp;
    
    cp = s;
    while (1)
    {
        temp1 = GetCh();
        if (temp1 == '\r')
        {
            *cp++ = '\r';
            *cp++ = '\n';
            *cp = 0;
            break;
        }
        *cp++ = temp1;
    }
    PrintString(s);
    cp -= 2;
    *cp = 0;
}
/*********************************************************************************************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -