--下面列出了常用的回调函数
--更多功能请阅读<<LUA脚本API.pdf>>
uart_free_protocol         = 0
local cmd_list = {}
local recv_buff = {}
local VoiceScreen_id = 0


--[[*********************************************************************
** Function name: on_init
** Descriptions : 系统初始化时，执行此回调函数。
*********************************************************************--]]
function on_init()
	uart_set_baudrate3(57600)										--初始化屏幕串口3波特率57600（与语音芯片通讯串口）
	Send_command_list()												--初始化语音模块指令集
end

--[[***************************************************************************
** Function name: Send_command_list
** Descriptions : 屏幕下发至语音芯片指令功能码列表
***************************************************************************--]]
function Send_command_list()
	cmd_list["打开灯光"] = 1
	cmd_list["关闭灯光"] = 2
end
--[[*********************************************************************
** Function name: Usart_send_cmdarry
** Descriptions : 串口下发指令。
** @ cmd : 功能码
*********************************************************************--]]
function Usart_send_cmdarry(cmd)
	local usart_cmd = {}
	usart_cmd[0] = 0xAA
	usart_cmd[1] = 0x02
	string.format("%X",cmd)
	usart_cmd[2] = cmd
	usart_cmd[3] = 0xBB
	uart_send_data3(usart_cmd)
end
--[[*********************************************************************
** Function name: on_control_notify
** Descriptions : 用户触摸修改控件后，执行此回调函数。
** @ screen : 画面ID
** @ control : 控件ID
** @ value : 控件值
*********************************************************************--]]
function on_control_notify(screen,control,value)
	if screen == VoiceScreen_id then
		if control == 1 then
			if value == 0 then
				Usart_send_cmdarry(cmd_list["关闭灯光"])
				set_value(VoiceScreen_id,14,0)
			elseif value == 1 then
				Usart_send_cmdarry(cmd_list["打开灯光"])
				set_value(VoiceScreen_id,14,1)
			end
		end
	end
end
--[[***************************************************************************
** Function name: on_uart_recv_da3
** Descriptions : 语音芯片-屏幕串口
** @packet : 屏幕接收语音芯片的发送数据
** @value : 提取语音芯片下发的指令数据
***************************************************************************--]]
local cmd_head = 0
local recv_buffer2_count = 0
function on_uart_recv_data3(packet)
	local str =""
	for i = 0,(#(packet)) do
		cmd_head = packet[i]  
		str =str..string.format("%02X",packet[i])
		if cmd_head==0XAA then
			recv_buff = {}
			recv_buffer2_count = 1
			recv_buff[1] = 0xAA
		else
			recv_buffer2_count = recv_buffer2_count+1
			recv_buff[recv_buffer2_count] = packet[i]
		end
		if recv_buffer2_count >= 4 then
			if recv_buff[4] == 0xBB then
				Instruction_operation() 
			end
			recv_buff = {}
		end
	end
end
--[[***************************************************************************
** Function name: Instruction_operation
** Descriptions : 解析语音芯片下发的数据指令
** @value : 提取指令，屏幕响应
***************************************************************************--]]
function Instruction_operation()
	recv_buff[3] = string.format("%d",recv_buff[3])
	
	if recv_buff[3] == "1" then					--打开灯光
		set_value(VoiceScreen_id,1,1)
		set_value(VoiceScreen_id,14,1)
	elseif recv_buff[3] == "2" then				--关闭灯光
		set_value(VoiceScreen_id,1,0)
		set_value(VoiceScreen_id,14,0)
	end
end






