////////////////////////////////////////////////////////////////////////// /// COPYRIGHT NOTICE /// Copyright (c) 2018, 传控科技 /// All rights reserved. /// /// @file tpc_fsk.c /// @brief transaction protocol control of fsk /// ///(本文件实现的功能的详述) /// /// @version 1.1 CCsens technology /// @author CC /// @date 20150102 /// /// /// @version 1.2 CCsens technology /// @author CC /// @date 20180308 /// @info 整理 // ////////////////////////////////////////////////////////////////////////// /***************************************************************************** @version 1.2 update by cc @201501101001 针对多串口 和 单一串口 有区别 每个串口是独立的还是分开的有讲究 程序是复杂的还是软件应用简单是 个需要平衡的事情. clib/uartlib.c: 公用的函数 和硬件无关 接收各类协议的处理函数 放置串行模式(串口等其他通讯总线类的输出)输出的函数, 一些覆盖模式输出的(lcd等固屏输出的)的也可使用 void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...) ----------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------- msp/uartx.c 底层代码 和cpu相关 L0_UART0_Init UART0_IRQHandler L0_Usend_uc----------s_at0 ----------------------------------------------------------------------------------------- ********************************************************************************/ #ifndef __CCMODBUS_H_ #define __CCMODBUS_H_ #include "../clib/type.h" #include "../tpc/tpc_x.h" //#include "../app/app_config.h" //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ///协议类型: 十六进制协议3->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> /// 发送的数据为有ff fe开头的十六进制的长协议,内包含标准的modbus协议 ///FF FE 08 52 16 11 22 33 44 F5 9F 发送了一个modbus协议包(8个数据52 16 11 22 33 44 F5 9F ) /// 协议表达的意思为地址为0x52的从机, 功能码16 数据为11 22 33 44,校验码 F5 9F /// 校验码的范围为 #define D_s_PH3_ccmodbus_max 256////cc fixme #define D_s_ccmodbus_min (D_s_modbus_min + 3) #define D_CMD_Filter1_ff 0xFF #define D_CMD_Filter2_fe 0xFE typedef struct {//8byte vU8 filter1; vU8 filter2; vU8 num; //接收到的数据的计数, 随着数据接收而变化注意数据长度的范围 vU8 slaver; //发送方的地址或命令 vU8 oper; //命令 vU8 buf[D_s_PH3_ccmodbus_max - 3];//D_s_PH3_ccmodbus_max - 3,长一点防止越界 vU8 crc[2]; //crc16 }TS_PH3_ccmodbus; typedef struct {//8byte vU8 cashe[2]; vU8 reg; vU8 max; //接收到的数目的最大值 vU8 head_0; vU8 head_1; vU8 head; //接收标志头标志 vU8 ok; //接收协议ok标志 vU8 num; vU8 *sp; TS_PH3_ccmodbus ts_ccmodbus; vU8 crc[2]; }TS_Handle_PH3; typedef struct { U16 slaver; U16 oper; U16 reg; U16 regnum; U16 bytes; U8 *buf; U16 mask; U16 extra_num; }CCMD_SLAVER_INFO; extern U8 L3_pack_ccmodbus(TS_PH3_ccmodbus *pccmodbus, CCMD_SLAVER_INFO *slaver_info); extern U16 L3_ccmodbus_slaver_ack(TS_PH3_ccmodbus *pccmodbus,TS_PH3_ccmodbus *pModbusAck); //extern void L3_ccmodbus_master_handler(TS_PH3_ccmodbus *pmodbus,MD_SLAVER_INFO *p_slaver_info); extern void L1_s2b_PH3(TS_Handle_PH3 *p);// reentrant; #endif /* end __TPC_CCMODBUS_H_ */