首先,感谢你的回复~,你的回答 给与了很好的鼓励。
估计很快就调通了 红外的功能。
是的。我 编译了 tdd_ir_driver_rtl8720cf_ameba.c 文件,很快的就编译了,因为这个是必须的。
我在sdk 内部获取到 ,红外dp 点数据了,红外dp 主要包括2个,一个发送 ,一个接收。
我在接收的buff 中发现了,按下不同的遥控器的 按钮,这些buff中的数值确实 不一样。
很好,我获取到了红外码的数据了。
这些数据似乎是 记录时间的,一般是几百到几千,这样的数据。
但是,问题来了。
我如何填充这些数据,使用提供sdk包内的 pwm_out 这些接口函数吗?
我好像很难找到出路。
我尝试使用 类似下面 这样的代码进行发送,我发现 我的pwm 口竟然可以发送38K的载波了,我想知道,在这个代码中,我需要使用timecode的方式填充吗?
Code: Select all
STATIC VOID_T __TY_IR_SEND_CB(TY_IR_CODE_S *ir_code, UCHAR_T code_num_type){
USHORT_T i = 0;
for (size_t i = 0; i < ir_code->code_len; i+=5)
{
PR_DEBUG("_______ir_code,i[%d]_ data: %d",i, ir_code->code[i]);
}
//PR_DEBUG("_______ir_code len: %d", ir_code->code_len);
//PR_DEBUG("________send_count: %d", ir_code->send_count);
//PR_DEBUG("_________ir_code->feq: %d", ir_code->feq);
//PR_DEBUG("_____________delay: %d",ir_code->delay);
OPERATE_RET rt = OPRT_OK;
IR_DATA_U ir_send_buffer;
#if USE__NEC_PRO
ir_send_buffer.nec_data.addr = 0x807F;
ir_send_buffer.nec_data.cmd = 0x1DE2;
ir_send_buffer.nec_data.repeat_cnt = 1;
#else
ir_send_buffer.timecode.data = (UINT32_T*)malloc(ir_code->code_len);
if(ir_send_buffer.timecode.data == NULL)return;
memset(ir_send_buffer.timecode.data,0,sizeof(ir_code->code_len));
memcpy(ir_send_buffer.timecode.data,ir_code->code,ir_code->code_len);
ir_send_buffer.timecode.len = ir_code->code_len;
#endif
if(_ir_dev_hdl){
rt = tdl_ir_dev_send(_ir_dev_hdl, ir_code->feq, ir_send_buffer, ir_code->send_count);
PR_DEBUG("_____________tdl_ir_dev_send,ok,rt %d",rt);
}
#if (!USE__NEC_PRO)
free(ir_send_buffer.timecode.data);
PR_DEBUG("_____________free,ok");
#endif
}
但是 这样必不能实际控制红外设备,我怀疑发射的码值根本不对。有什么好的指导方法吗???
再次感谢你的回复~~