📄 backup6.c
字号:
//backup6.c
//======================= 01-03 =========================//
//[**备份**]
//协议四(0xAD)程序:
/////////////////////////////////////////////////////////////////////////////////////
//====== 协议四: 每秒5次 ======//
if(tim_5)
{
for(i=0;i<4;i++)
{
cnt = HotFireSet[i];
switch(cnt)
{
case (0x1A):
HotFireSPI[i] = 1;
break;
case (0x1B):
HotFireSPI[i] = 2;
break;
case (0x1C):
HotFireSPI[i] = 3;
break;
case (0x1D):
HotFireSPI[i] = 4;
break;
case (0x2A):
HotFireSPI[i] = 5;
break;
case (0x2B):
HotFireSPI[i] = 6;
break;
case (0x2C):
HotFireSPI[i] = 7;
break;
case (0x2D):
HotFireSPI[i] = 8;
break;
case (0x3A):
HotFireSPI[i] = 9;
break;
case (0x3B):
HotFireSPI[i] = 10;
break;
case (0x3C):
HotFireSPI[i] = 11;
break;
case (0x3D):
HotFireSPI[i] = 12;
break;
case (0x4A):
HotFireSPI[i] = 13;
break;
case (0x4B):
HotFireSPI[i] = 14;
break;
case (0x4C):
HotFireSPI[i] = 15;
break;
case (0x4D):
HotFireSPI[i] = 16;
break;
case (0x5A):
HotFireSPI[i] = 17;
break;
case (0x5B):
HotFireSPI[i] = 18;
break;
case (0x5C):
HotFireSPI[i] = 19;
break;
case (0x5D):
HotFireSPI[i] = 20;
break;
default:
break;
}
}
SPI_FLASH_CS_LOW();
SPI_SendByte(0xAD);
for(i=0;i<4;i++)
RxIOBusState[i] = SPI_SendByte(HotFireSPI[i]); //4字节热线地址
RxIOBusState[4] = SPI_SendByte(TalkKeyBK & 0x0F); //1字节对讲键状态
if(SyncMode)
RxIOBusState[5] = SPI_SendByte(SyncMode);//前四路输出总线
else //(播出、热线、辅助、主持人监听)
RxIOBusState[5] = SPI_SendByte(0x01); //默认发送值为1
RxIOBusState[6] = SPI_SendByte(0x0); //后两路输出总线(导播监听、直播室监听)
SPI_FLASH_CS_HIGH();
tim_5 = 0;
}
//[**备份**]
//IO信号状态帧程序:
/////////////////////////////////////////////////////////////////////////////////////
//IO信号状态帧
if(tim_3)
{
TxMessage.StdId = 0x01; //以广播形式发送
TxMessage.RTR = CAN_RTR_DATA;
TxMessage.IDE = CAN_ID_STD;
TxMessage.DLC = 7;
for(h=0;h<7;h++) //5个输入板卡
TxMessage.Data[h] = RxIOBusState[h];
// printf("RxIOBusState[5] = 0x%X\n",RxIOBusState[5]);
// printf("RxIOBusState[6] = 0x%X\n",RxIOBusState[6]);
while(((CAN2->TSR>>26)& 0x07) == 0);
CAN_Transmit(CAN2, &TxMessage); //发送IO信号状态帧
tim_3 = 0;
}
//[**备份**]
//场景设置程序:
///////////////////////////////// *** 场景设置 *** //////////////////////////////////////
if(SceneSetFlag)
{
switch(SceneSetFlag)
{
case (0x01): //场景一
I2C_EE_BufferRead(ReadEEPData,EEP_ScenNum1_Address,311);
break;
case (0x02): //场景二
I2C_EE_BufferRead(ReadEEPData,EEP_ScenNum2_Address,311);
break;
case (0x04): //场景三
I2C_EE_BufferRead(ReadEEPData,EEP_ScenNum3_Address,311);
break;
case (0x08): //场景四
I2C_EE_BufferRead(ReadEEPData,EEP_ScenNum4_Address,311);
break;
default:
break;
}
SceneSetFlag = 0;
//=== 设置推子模块按键状态(场景) ===//
for(i=0,h=0;i<40;i++)
{
ScenKeyState[h] = ReadEEPData[i++]; //按键状态
ScenEffectState[h] = ReadEEPData[i]; //"设置"键对应的效果
h++;
}
TxMessage.RTR = CAN_RTR_DATA;
TxMessage.IDE = CAN_ID_STD;
TxMessage.DLC = 4;
if(TuiziAddr[0] != 0)
{
for(i=0;i<4;i++)
{
TxMessage.Data[i] = ScenKeyState[i];
KeyDataBK[i] = ScenKeyState[i];
}
TxMessage.StdId = 0x101;
while(((CAN1->TSR>>26)& 0x07) == 0);
CAN_Transmit(CAN1, &TxMessage);
}
if(TuiziAddr[1] != 0)
{
for(i=0;i<4;i++)
{
TxMessage.Data[i] = ScenKeyState[i+4];
KeyDataBK[i+4] = ScenKeyState[i+4];
}
TxMessage.StdId = 0x201;
while(((CAN1->TSR>>26)& 0x07) == 0);
CAN_Transmit(CAN1, &TxMessage);
}
if(TuiziAddr[2] != 0)
{
for(i=0;i<4;i++)
{
TxMessage.Data[i] = ScenKeyState[i+8];
KeyDataBK[i+8] = ScenKeyState[i+8];
}
TxMessage.StdId = 0x301;
while(((CAN1->TSR>>26)& 0x07) == 0);
CAN_Transmit(CAN1, &TxMessage);
}
if(TuiziAddr[3] != 0)
{
for(i=0;i<4;i++)
{
TxMessage.Data[i] = ScenKeyState[i+12];
KeyDataBK[i+12] = ScenKeyState[i+12];
}
TxMessage.StdId = 0x401;
while(((CAN1->TSR>>26)& 0x07) == 0);
CAN_Transmit(CAN1, &TxMessage);
}
if(TuiziAddr[4] != 0)
{
for(i=0;i<4;i++)
{
TxMessage.Data[i] = ScenKeyState[i+16];
KeyDataBK[i+16] = ScenKeyState[i+16];
}
TxMessage.StdId = 0x501;
while(((CAN1->TSR>>26)& 0x07) == 0);
CAN_Transmit(CAN1, &TxMessage);
}
//=== 场景"设置"按键对应的效果 ===//
//=== 设置推子模块状态(场景) ===//
h=0;L=0;
for(i=40;i<280;i++) //输入通道状态设置数据
{
InputState[L][h] = ReadEEPData[i];
h++;
if(h%12==0)
{
L++;
h=0;
}
}
TxMessage.RTR = CAN_RTR_DATA;
TxMessage.IDE = CAN_ID_STD;
TxMessage.DLC = 8;
if(TuiziAddr[0] != 0) //地址1推子
{
TxMessage.StdId = TuiziAddr[0];
for(i=0;i<4;i++)
{
TxMessage.Data[0] = (InputState[i][7]<<4)|(i+1); //高4位信号格式,低4位数据包编号
TxMessage.Data[1] = InputState[i][8]; //输入模块地址
for(h=2;h<8;h++)
TxMessage.Data[h] = InputState[i][h-1]; //6字节汉字码
while(((CAN1->TSR>>26)& 0x07) == 0);
CAN_Transmit(CAN1, &TxMessage);
}
}
if(TuiziAddr[1] != 0) //地址2推子
{
TxMessage.StdId = TuiziAddr[1];
for(i=4;i<8;i++)
{
TxMessage.Data[0] = (InputState[i][7]<<4)|(i-3); //高4位信号格式,低4位数据包编号
TxMessage.Data[1] = InputState[i][8];
for(h=2;h<8;h++)
TxMessage.Data[h] = InputState[i][h-1];
while(((CAN1->TSR>>26)& 0x07) == 0);
CAN_Transmit(CAN1, &TxMessage);
}
}
if(TuiziAddr[2] != 0) //地址3推子
{
TxMessage.StdId = TuiziAddr[2];
for(i=8;i<12;i++)
{
TxMessage.Data[0] = (InputState[i][7]<<4)|(i-7); //高4位信号格式,低4位数据包编号
TxMessage.Data[1] = InputState[i][8];
for(h=2;h<8;h++)
TxMessage.Data[h] = InputState[i][h-1];
while(((CAN1->TSR>>26)& 0x07) == 0);
CAN_Transmit(CAN1, &TxMessage);
}
}
if(TuiziAddr[3] != 0) //地址4推子
{
TxMessage.StdId = TuiziAddr[3];
for(i=12;i<16;i++)
{
TxMessage.Data[0] = (InputState[i][7]<<4)|(i-11); //高4位信号格式,低4位数据包编号
TxMessage.Data[1] = InputState[i][8];
for(h=2;h<8;h++)
TxMessage.Data[h] = InputState[i][h-1];
while(((CAN1->TSR>>26)& 0x07) == 0);
CAN_Transmit(CAN1, &TxMessage);
}
}
if(TuiziAddr[4] != 0) //地址5推子
{
TxMessage.StdId = TuiziAddr[4];
for(i=16;i<20;i++)
{
TxMessage.Data[0] = (InputState[i][7]<<4)|(i-15); //高4位信号格式,低4位数据包编号
TxMessage.Data[1] = InputState[i][8];
for(h=2;h<8;h++)
TxMessage.Data[h] = InputState[i][h-1];
while(((CAN1->TSR>>26)& 0x07) == 0);
CAN_Transmit(CAN1, &TxMessage);
}
}
//=== 协议四(0xAD协议)(场景) ===//
for(h=0,i=280;i<284;i++) //热线设置数据
{
HotFireSet[h] = ReadEEPData[i];
h++;
}
//=== 设置输出通道数据(场景) ===//
for(h=0,i=284;i<304;i++) //输出通道状态设置数据
{
OutputSet[h] = ReadEEPData[i];
h++;
}
TxMessage.RTR = CAN_RTR_DATA;
TxMessage.IDE = CAN_ID_STD;
TxMessage.DLC = 4;
if(OutputAddr[0] != 0)
{
for(i=0;i<4;i++)
TxMessage.Data[i] = OutputSet[i];
TxMessage.StdId = OutputAddr[0];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -