示例代码,一站式示例代码库

C编程规范, 示例代码。

/***************************************************************
*Copyright (c) 2014,TianYuan
*All rights reserved.
*
*文件名称: standard.h
*文件标识: 编程规范示例代码
*
*当前版本:V1.0
*作者:wuyq 
*完成日期:20140709
*
*修改记录1:   //修改历史记录,包括修改日期、版本号、修改人及修改内容等
*修改日期        版本号              修改人         修改内容
* --------------------------------------------------------------------------------------------------
* 20140709         V1.0                wuyq            创建
******************************************************************/

#ifndef _STANDARD_H__
#define _STANDARD_H__

/*重定义一些基本数据类型*/
typedef char                s8;
typedef unsigned char       u8;
typedef signed short        s16;
typedef unsigned short      u16;
typedef int                 s32;
typedef unsigned int     u32;
typedef float               f32;
typedef signed long long    s64;
typedef unsigned long long  u64;
typedef enum {FALSE =0, TRUE =!FALSE} bool;  
typedef bool BOOL;

/* 消息头 */
typedef struct {
    u16     u16MsgType;         /* 消息类型*/
    u16     u16MsgLength;       /*有效消息数据长度*/
    u8      u8TransType;  /*传输通道0:网络 1:串口*/
    u8      u8Reserved[3];  /*对齐*/
}STRU_MSG_HEAD;

/* 时间信息*/
typedef struct {
    u16     u16Year; /*年*/
    u16     u16Month; /*月*/
    u8      u8Day;  /*日*/
    u8      u8Hour;  /*时*/
    u8      u8Minute; /*分*/
    u8      u8Second; /*秒*/
}STRU_TIME_INFO;

/* MCM->Main 查询系统信息*/
struct  stru_machine_info_req {
    STRU_MSG_HEAD   struMsgHeader;/*消息头*/
};

/* Main->MCM 反馈系统信息*/
struct stru_machine_info_rsp {
    STRU_MSG_HEAD   struMsgHeader;/*消息头*/
    f32             f32Temp;/*当前采样温度*/
    f32             f32Vol;/*当前采样电压*/
    f32             f32CpuFreq;/*Cpu频率*/
    u32             u32FreeMem;/*剩余内存*/
    u32             u32FreeDisk;/*剩余FLASH空间*/
};
/* Main向MCM返回软件升级结果 */
struct stru_software_update_rsp {
    STRU_MSG_HEAD   struMsgHeader;
    u8              b8Successful;/*是否升级成功*/
    u8              u8Reserved[3];/*字对齐,保留*/
};

//函数头部的可采用如下的样式
/**********************************************************************
 *功能描述:
 *输入参数:
 *输出参数:
 *返回值:
 *其它说明:
 *修改记录1:   //修改历史记录,包括修改日期、版本号、修改人及修改内容等
 *修改日期        版本号              修改人         修改内容
 * --------------------------------------------------------------------------------------------------
 * 20140709         V1.0                wuyq            创建
 ***********************************************************************/

#endif




/**********************************************************************
*Copyright (c) 2014,TianYuan
*All rights reserved.
*
* 文件名称: UnitTest.c
* 文件标识:无
* 内容摘要:协议及单元测试示例代码
* 其它说明:无
* 当前版本: V1.0
* 作    者: wuyq
* 完成日期: 20140709
*
*修改记录1:   //修改历史记录,包括修改日期、版本号、修改人及修改内容等
*修改日期        版本号              修改人         修改内容
* --------------------------------------------------------------------------------------------------
* 20140709         V1.0                wuyq            创建
**********************************************************************/
#include 
#include 

// 重定义数据类型
typedef unsigned char       UINT8;
typedef unsigned short int    UINT16;
typedef unsigned int        UINT32;
typedef signed   int        INT32;

// 消息头结构
typedef struct
{
    UINT16  iReserve1;
    UINT16  iReserve2;
    UINT16  iReserve3;
    UINT16  iReserve4;
}MsgHead_T;

// 消息结构体(包含消息头和消息体)
typedef struct
{
    MsgHead_T   MsgHead;                // 消息头
    UINT32      iOperType;      // 操作类型, 操作类型只能为1或2
    UINT8       szUserNumber[30];         // 用户号码
    UINT8       szOperTime[20];      // 操作时间, 格式为: yyyymmdd
    UINT32       iReserve1;                // 保留字段1
    UINT8        szReserve2[50];           // 保留字段2
}UserReqMsg_T;

// 函数声明
INT32 ProcUserReqMsg(UserReqMsg_T *ptUserReqMsg);
INT32 main();

/**********************************************************************
* 功能描述:主函数
* 输入参数:无
* 输出参数:无
* 返回值: 0-执行完毕
* 其它说明:无
* 修改日期        版本号              修改人         修改内容
* --------------------------------------------------------------------------------------------------
* 20140507         V1.0                zzx            创建
***********************************************************************/
INT32 main()
{
    UINT8  iRetVal          = 0;
    UINT32 iOperType        = 0;        // 操作类型
    UINT8  szUserNumber[30] = {0};      // 用户号码
    UINT8  szOperTime[10]  = {0};    // 操作时间, 格式为: yyyymmdd

    UserReqMsg_T tUserReqMsg = {0};     // 请求消息

    // 对消息头部进行赋值
    tUserReqMsg.MsgHead.iReserve1 = 1;
    tUserReqMsg.MsgHead.iReserve2 = 2;
    tUserReqMsg.MsgHead.iReserve3 = 3;
    tUserReqMsg.MsgHead.iReserve4 = 4;

    // 读入具体消息字段的值
    printf("操作类型: n");
    scanf("%d", &iOperType);
    printf("用户号码: n");
    scanf("%s", szUserNumber);
    printf("操作时间: n");
    scanf("%s", szOperTime);

    // 对具体消息字段进行赋值(保留字段可不赋值)
    tUserReqMsg.iOperType = iOperType;
    strncpy(tUserReqMsg.szUserNumber, szUserNumber, strlen(szUserNumber));// 获取号码, 用strncpy代替strcpy
    strncpy(tUserReqMsg.szOperTime,   szOperTime,   strlen(szOperTime));     // 获取时间, 用strncpy代替strcpy

    // 对消息体的字段进行异常判断
    iRetVal = ProcUserReqMsg(&tUserReqMsg);  // 注意: 传递参数的时候要加上&
    if (iRetVal == 0)      // 函数执行正确
    {
        // 打印消息字段内容
        printf("The user request message is: iOperType=%d, szUserNumber=%s, szOperTime=%s.n", tUserReqMsg.iOperType, tUserReqMsg.szUserNumber, tUserReqMsg.szOperTime);
        return 0;
    }
    else         // 打印异常消息
    {
        printf("Some content of the user request message is wrong, please check!n");
        return -1;
    }
}


/**********************************************************************
* 功能描述:对消息体的字段进行异常判断
* 输入参数: ptUserReqMsg-用户请求消息
* 输出参数:无
* 返回值: 0-成功   其它-失败
* 其它说明:无
* 修改日期        版本号              修改人         修改内容
* --------------------------------------------------------------------------------------------------
* 20140507         V1.0                zzx            创建
***********************************************************************/
INT32 ProcUserReqMsg(UserReqMsg_T *ptUserReqMsg)
{
    INT32  iRetValue      = 0;

    // 对输入参数进行异常判断
    if (ptUserReqMsg == NULL)
    {
        printf("ProcUserReqMsg(...): input parameter(ptUserReqMsg) is NULL.n"); 
        return -1;
    }

    // 对消息体字段进行异常判断
    if ((ptUserReqMsg->iOperType != 1) && (ptUserReqMsg->iOperType != 2))    // 操作类型只能为1或2, 其它为数据异常
    {
        printf("ProcUserReqMsg(...): the iOperType is wrong, iOperType=%d.n", ptUserReqMsg->iOperType);
        return -2;
    }

    if (strlen(ptUserReqMsg->szUserNumber) != 8) // 用户号码异常, 长度8位才正确
    {
        printf("ProcUserReqMsg(...): the szUserNumber is wrong.n"); 
        return -3;
    }

    if (strlen(ptUserReqMsg->szOperTime) != 8)  // 操作时间异常, 长度8位才正确
    {
        printf("ProcUserReqMsg(...): the szOperTime is wrong.n");       
        return -4;
    }

    return 0;
}

示例代码。
/****************************************************************Copyright
(c) 2014,TianYuan*All rights reserved.**文件名称:
standard.h*文件标…

2010
对一站式示例代码库,对奋战在一站式示例代码库上的每一位工程师来说都是不同寻常的一年。
在我们共同努力和开发社区的支持下,该项目从一年前的草根雏形,成长为CodePlex排名前三,含有500多代码示例的“微软示例代码库”。
在此辞旧迎新之际,项目组感谢开源社区及开发者社区伴随我们一路走过来。2011年,我们会做得更好,以回馈社区,回馈广大开发者。

回顾2010

1)  215 新示例,300K 下载量,CodePlex 前三

2010
年,我们总共发布了215个新示例,总代码示例数过500。可以在
下载到,或通过浏览示例代码索引下载单个示例包。

300K的下载量,在CodePlex上挤入下载量前三。每月新示例发布介绍索引:

· 微软一站式示例代码库
2010年12月更新

·
一站式示例代码库2010年11月5日更新

· 微软一站式示例代码库2010-10-10
新增代码示例简介

· 微软一站式示例代码库2010-09-06
新增代码示例简介

· 微软一站式示例代码库 2010-05-31
新增代码示例简介

· 微软一站式示例代码库 2010-04-30
新增代码示例简介

· 微软一站式示例代码库 2010-03-29
新增代码示例简介

· 微软一站式示例代码库 2010-02-28
新增代码示例简介

· 微软一站式示例代码库 2010-01-25
新增代码示例简介

2) 6月launch 一站式示例代码本地化工作。82 示例已被译成中文

为了方便中国开发者阅读示例代码和相关文档,我们从6月开始启动了一站式示例代码本地化工作。翻译内容包括示例文档(ReadMe.txt),代码注释以及UI界面。目前已完成对82个示例的翻译工作。你可以在
下载到。每月新翻译示例发布介绍索引:

· 中文版All-In-One Code
Framework发布

· All-In-One Code Framework *中文版*
2010年8月更新

· 一站式示例代码库 中文版
2010年9月更新

· 一站式示例代码库 中文版
2010年10月更新

·
微软一站式示例代码库(中文版)2010年12月10日更新

3) 示例代码浏览器 第一版 6月发布

下载地址

由我们项目组里的一位WPF牛人开发,该浏览器可以方便你对微软一站式示例代码库中500多个示例的浏览。虽然在此次发布中我们仅提供了示例搜索功能,更多特性如自动更新、示例反馈等在不久就会陆续推出。

图片 1

4) 全新示例代码请求服务正式上线

您还在为找不到所需的示例代码而苦恼吗?当您遇到困难的时候,您是否曾希望有人免费地为您量身提供示例代码?微软一站式示例代码库项目组宣布了一个全新而且免费的示例代码请求服务。希望能通过这个服务为广大的开发者分忧解难。

图片 2

5) VC++, VC#, VB.NET 编码规范 (微软一站式示例代码库)

发表评论

电子邮件地址不会被公开。 必填项已用*标注