📄 main.c
字号:
/****************************************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 + -