Music.c 3.71 KB
#include "Music.h"
#include "includes.h"
#include "all_value.h"
#include "tcp_client_demo.h"




u8 Music_No=31,Music_OldNo;
u8 F_Music_Voice;
void Music_Send(void)//`发送音乐CAN控制指令函数
{
//		u8 Music_Vol=26;
		CanTxMsg tx_message1;
		if((F_Music_Voice>26)|(F_Music_Voice==0))F_Music_Voice=26;
    tx_message1.IDE = CAN_ID_EXT;    //拓展帧
    tx_message1.RTR = CAN_RTR_DATA;  //数据帧
    tx_message1.DLC = 0x08;          //帧长度为8
    tx_message1.StdId = 0;      		//帧ID为传入参数的CAN_ID
		tx_message1.ExtId = 0x300;
    tx_message1.Data[0] = 0x01;
    tx_message1.Data[1] = 0x51;
    tx_message1.Data[2] = Music_No;	//音乐号码
    tx_message1.Data[3] = F_Music_Voice;	//音量
    tx_message1.Data[4] =tx_message1.Data[5]=0;
    tx_message1.Data[6] =XOR_Crc(&(tx_message1.Data[0]),6,0);
    tx_message1.Data[7] = 0x02;
    CAN_Transmit(CAN1,&tx_message1);
		OSTimeDly(1);
}

void Music_Choose(void)//音乐选择函数
{ 
		if((SysKey==89)&&(VaIndexDW_R(&Touch_Contr,15))){;}
		else
		{ 
			if ( Read_ErrID(14) )Music_No=9;//MusicID=9 ,防撞触发;
			else if (Read_ErrID(20) )Music_No=2;//MusicID=2 ,急停报错;
			else if (Read_ErrID(28) )Music_No=3;//MusicID=3 ,触边报错;
			else if (Read_ErrID(17)|Read_ErrID(40)|Read_ErrID(41)|Read_ErrID(42)|Read_ErrID(43)|Read_ErrID(30) )Music_No=4;//MusicID=4 ,电机报错;
			else if (Read_ErrID(6)  )Music_No=10;//MusicID=10 ,下视觉未检测到二维码;
			else if (Read_ErrID(19) )Music_No=11;//MusicID=11 ,充电异常;
			else if (Read_ErrID(32) )Music_No=15;//MusicID=15 ,温度异常;
			else if (Read_ErrID(56) )Music_No=13;//MusicID=13;未检测到货架			
			else if ( (VaIndexW_R(&NodeOnLine,13)==0)&&(Workmode==AutoMode) )Music_No=8;//MusicID=8 ,设备未连上上位机;
			else if (AGV.Line_Step>2&&AGV.Line_Step<100)Music_No=31;//MusicID=31 ,设备处于行走任务中,正在行走(音乐);
			else if (AGV.Load_Step>2&&AGV.Load_Step<100)Music_No=28;//MusicID=46 ,设备处于复位任务中,正在对中,请注意;
			else if ((AGV.RotationSlam_Step>2&&AGV.RotationSlam_Step<100)|(AGV.RotationCCD_Step>2&&AGV.RotationCCD_Step<100))Music_No=33;//MusicID=33 ,设备处于旋转任务中;			
			else if ((Motor[0].PcToM.Speed>0)&&AGV.UpDown_Step>1&&AGV.UpDown_Step<100)Music_No=61;//MusicID=61 ,设备处于上升任务中,正在上升,请注意;
			else if (((Motor[0].PcToM.Speed<0)|Out_DownValve)&&AGV.UpDown_Step>1&&AGV.UpDown_Step<100)Music_No=62;//MusicID=62 ,设备处于下降任务中,正在下降,请注意;
			else if (AGV.Charge_Step>1&&AGV.Charge_Step<100)
			{ if(AGV.Type3_Ac==6)Music_No=71;//MusicID=71 ,设备处于充电任务中,正在后退,请注意;
				else Music_No=81;//MusicID=81 ,设备处于取消充电任务中,正在行走,请注意;
			}
			else if(AGV.Conveyor_Step>2&&AGV.Conveyor_Step<100)
			{		
				if( ((Unionu8_1.ConyUpTy%2)==1)|((Unionu8_2.ConyDownTy%2)==1))Music_No=93;//MusicID=93 ,设备处于滚筒出货任务中,正在出货,请注意;
				else if(Unionu8_1.ConyUpTy|Unionu8_2.ConyDownTy)Music_No=91;//MusicID=91;设备处于滚筒取货任务中,正在取货,请注意			
			}
			else if(VaIndexB_R(&AGV.OtheSta,6)&&(BatteryVa.Energy<25))Music_No=99;//提示低电量需充电
			else Music_No=0;
		}
}






u8 Tim5_Music2Nums;
void MusicData_Analysis(CanRxMsg*Message)//CAN音乐内容接收解析
{
//	if ((Message->ExtId==0x301)&&(Message->Data[1]==0x52))Tim4_Music2Nums=0;//0x53表示无对应文件
		if (Message->ExtId==0x301)Tim5_Music2Nums=0;//0x53表示无对应文件
}


u8 Tim4_Music1Nums;
void Music_Pro(void)//音乐程序
{
	Music_Choose();
 	if( MusicSendEn&&(Electrify_Step==100))
	{ 	

		if(Music_No!=Music_OldNo)
	  { VaIndexB_W(&AGV.OtheSta1,6,1);
			Tim4_Music1Nums=0;
			Music_OldNo=Music_No;
		}
		
		if( (Tim4_Music1Nums>250) |(VaIndexB_R(&AGV.OtheSta1,6)&&(Tim4_Music1Nums>80) ))
		{	
			Tim4_Music1Nums=0;
			VaIndexB_W(&AGV.OtheSta1,6,0);
			Music_Send();
	
		}
	}
 	if (Tim5_Music2Nums>4)VaIndexW_W(&NodeOnLine,6,0);	
	else VaIndexW_W(&NodeOnLine,6,1);
}