📄 uartmodule.c
字号:
/***************************
Name:uartmodule.c
author:RPJ
version:V0.1
description:
系统通信传输模块
***************************/
#include "reg52.h"
#include "absacc.h"
#include "clock.h"
#include "define.h"
#include "uartmodule.h"
#define GLOBALS
#include "variable.h"
/********************************
name:WorkingComm
input: /
output:/
description:
向上位机发送MCU工作数据指示
RepWorking 工作指示CC CC 0F 00 00
RepSystem 系统参数CC CC 01 X1 XX AX
RepExtParma 用户参数CC CC 02 X1 XX AX(带入用户号)
RepMeet 会议参数CC CC 03 X1 XX AX(带入会议号)
RepTrk
RepTempMeet
RepTempExt
RepCable
RepKeyset
RepCallHost
RepCID
*******************************/
void BaseDataComm(unchar frametype,unchar No)
{
unchar len,AX;
switch(frametype)
{
case RepWorking:
UartData_List[0] = 0;
break;
case RepSetHead1:
UartData_List[0] = 1;
UartData_List[1] = EXT_Head;
break;
case RepSetHead2:
UartData_List[0] = 1;
UartData_List[1] = First_Meet_Head;
break;
case RepSetHead3:
UartData_List[0] = 1;
UartData_List[1] = First_Troop_Head;
break;
case RepSystemType:
UartData_List[0] = 1;
UartData_List[1] = FlagSystemType;
break;
case RepSystem:
UartData_List[1] = EXT_Head;
UartData_List[2] = EXT_Len;
UartData_List[3] = TAL_EXT_PORT;
UartData_List[4] = Host_Head;
UartData_List[5] = TAL_MeetGroup;
UartData_List[6] = First_Meet_Head;
UartData_List[7] = TAL_TrkGroup;
UartData_List[8] = First_Troop_Head;
UartData_List[9] = FlagSystemType;
UartData_List[10] = FlagHeartSkip;
UartData_List[11] = NoFreeCounter;
UartData_List[12] = NoFreeFlag;
UartData_List[0] = 12;
break;
case RepExtParma:
UartData_List[1] = Ext_Param[No].Num_H_Logic;
UartData_List[2] = Ext_Param[No].Num_L_Logic;
UartData_List[3] = Ext_Param[No].Num_Hot_Call;
UartData_List[4] = Ext_Param[No].Num_Trans_Call;
UartData_List[5] = Ext_Param[No].Num_Busy_Recall;
UartData_List[6] = Ext_Param[No].Num_Group_Call;
UartData_List[7] = Ext_Param[No].Trk_Group_Right;
UartData_List[8] = Ext_Param[No].Trk_Group_Num;
UartData_List[9] = Ext_Param[No].Trk_Group_Param;
UartData_List[10] = Ext_Param[No].Bit_Param;
UartData_List[0] = 10;
break;
case RepMeet:
UartData_List[1] = Meet_Group[No].MeetLen;
UartData_List[2] = Meet_Group[No].MeetHead;
UartData_List[3] = Meet_Group[No].Num_Member;
UartData_List[4] = Meet_Group[No].Meetstate;
for(len=0;len<UartData_List[3];len++)
{
UartData_List[4+len] = Meet_Group[No].Meet_Member[len];
}
UartData_List[0] = 4+len;
break;
case RepTroop:
UartData_List[1] = Troop_Param[No].TroopLen;
UartData_List[2] = Troop_Param[No].TroopHead;
UartData_List[3] = Troop_Param[No].Num_Member;
UartData_List[4] = Troop_Param[No].Troopstate;
for(len=0;len<UartData_List[3];len++)
{
UartData_List[4+len] = Troop_Param[No].Troop_Member[len];
}
UartData_List[0] = 4+len;
break;
case RepTempMeet:
UartData_List[1] = Temp_MeetGroup[No].MeetGroup;
UartData_List[2] = Temp_MeetGroup[No].Manager_Ext;
UartData_List[3] = Temp_MeetGroup[No].Num_Member;
UartData_List[4] = Temp_MeetGroup[No].Meetstate;
for(len=0;len<10;len++)
{
UartData_List[4+len] = Temp_MeetGroup[No].Meet_Member[len];
}
UartData_List[0] = 4+len;
break;
case RepCable:
UartData_List[1] = CABLE_USE;
UartData_List[2] = CABLE_USE_NOW;
for(len=0;len<TAL_CABLE;len++)
{
UartData_List[3+len] = CABLE_USE_LIST[len];
}
UartData_List[0] = 2+len;
break;
case RepCallHost:
UartData_List[0] = 1;
UartData_List[1] = No;
break;
case RepState:
UartData_List[0] = 3;
UartData_List[1] = No;
UartData_List[2] = Ext_Param[No].Ext_State;
UartData_List[3] = Ext_Param[No].Ext_EVENT;
break;
case RepRespond:
if( No )
{
UartData_List[0] = 2;
UartData_List[1] = ErrorType;
UartData_List[2] = ErrorTeam;
}
else
{
UartData_List[0] = 0;
}
break;
case RepAllExtSta:
for(AX=0;AX<TAL_EXT_PORT;AX++)
{
UartData_List[AX+1] = Ext_Param[AX].Ext_State;
}
UartData_List[0] = TAL_EXT_PORT;
break;
default:
break;
}
AX = 0;
MICRO_SendToBuf(UartSend_List[WP_UartSend], CommHead,
WP_UartSend, TAL_UartSend, AlignSize);
MICRO_SendToBuf(UartSend_List[WP_UartSend], CommHead,
WP_UartSend, TAL_UartSend, AlignSize);
MICRO_SendToBuf(UartSend_List[WP_UartSend], frametype,
WP_UartSend, TAL_UartSend, AlignSize);
for(len=0;len<=UartData_List[0];len++)
{
MICRO_SendToBuf(UartSend_List[WP_UartSend], UartData_List[len],
WP_UartSend, TAL_UartSend, AlignSize);
AX += UartData_List[len];
}
MICRO_SendToBuf(UartSend_List[WP_UartSend], AX,
WP_UartSend, TAL_UartSend, AlignSize);
}
/********************************
name:UartData_Analyse
input: /
output:/
description:
TAL_UartRec表示一共接收到几个数据
DataHeadRec 表示接收到几个标志头
DataType表示通信的类0为不是类,1表示查询类,2表示设置类
*******************************
void UartData_Analyse(void)
{
unchar temp;
if( TAL_UartRec >= 5 )
{
if( DataHeadRec < 2 )
{
WP_UartData = 0;
TAL_UartData = 0;
MICRO_GetFromBuf(UartRec_List[RP_UartRec], temp,
RP_UartRec, TAL_UartRec, AlignSize);
if( temp == CommHead )
{
DataHeadRec++;
}
else
{
DataHeadRec = 0;
}
return;
}
if( DataHeadRec == 2 )
{
if( DataType == 0 )
{
MICRO_GetFromBuf(UartRec_List[RP_UartRec], temp,
RP_UartRec, TAL_UartRec, AlignSize);
if( temp > 0xef )
{
DataType = 1;
}
else if( temp < 0x10 )
{
DataType = 2;
}
else if( temp == 0xcc )
{
DataHeadRec = 1;
DataType = 0;
}
else
{
DataHeadRec = 0;
DataType = 0;
}
return;
}
if( DataType == 1 )
{
MICRO_GetFromBuf(UartRec_List[RP_UartRec], temp,
RP_UartRec, TAL_UartRec, AlignSize);
return;
}
if( DataType == 2 )
{
MICRO_GetFromBuf(UartRec_List[RP_UartRec], temp,
RP_UartRec, TAL_UartRec, AlignSize);
return;
}
return;
}
}
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -