通过UART发送

4个职位/ 0个新
最后发表
liuluan002
离线
最后看到:7个月2周以前
加入:2015-11-27 14:24
通过UART发送

嗨,对话框中,

我正在申请持续扫描,我也需要把扫描的包拉到UART。我在通过UART发送的时候,我担心会暂时阻塞扫描。有什么方法我可以做轮询出我通过UART得到的包,而不阻止扫描过程?

这里我把我的一些代码放在这里:

空白app_scan2(空白)

struct gapm_start_scan_cmd *cmd = KE_MSG_ALLOC(gapm_start_scan_cmd,
TASK_GAPM TASK_APP,
gapm_start_scan_cmd);

cmd - > op。代码= GAPM_SCAN_PASSIVE;
cmd - >间隔= 12288;/ / 6000毫秒
cmd窗口- > = 12288;/ / 6000毫秒
cmd - >模式= GAP_GEN_DISCOVERY;
cmd - > filt_policy = SCAN_ALLOW_ADV_ALL;
cmd - > filter_duplic = SCAN_FILT_DUPLIC_DIS;

ke_msg_send (cmd);

int gapm_adv_report_ind_handler (ke_msg_id_t是否,
struct gapm_adv_report_ind *参数,
ke_task_id_t dest_id,
ke_task_id_t src_id)

Volatile struct adv_report adv = param->report;

For (unsigned char I = 0;我< 6;我+ +)

white_addr1[我]= adv.adv_addr.addr[我];

uart2_init (UART_BAUDRATE_115K2 3);

For (unsigned char I = 0;我< 6;我+ +)

printf_byte (adv.adv_addr.addr[我]);
uart2_init (UART_BAUDRATE_115K2 3);

uart2_init (UART_BAUDRATE_115K2 3);

For (int j = 0;j < sizeof (adv.data);j + +)

printf_byte (adv.data [j]);
uart2_init (UART_BAUDRATE_115K2 3);

printf_string (" ");
uart2_init (UART_BAUDRATE_115K2 3);

返回(KE_MSG_CONSUMED);

设备:
MT_dialog
离线
最后看到:4个月3天前
工作人员
加入:2015-06-08 34
嗨liuluan002,

嗨liuluan002,

可以使用arch_printf()函数,而不是直接使用printf函数,后者实际上直接使用UART。

您可以在最新SDK中通过定义CFG_PRINTF定义来启用arch_printf()函数,检查UART端口是您已经连接的端口,并包含您想在其中使用arch_printf()函数的arch_console.h文件。

由于MT_dialog

liuluan002
离线
最后看到:7个月2周以前
加入:2015-11-27 14:24
嗨,对话框中,

嗨,对话框中,
我正在尝试使用您的建议从UART轮询出一个数组。
然而,我得到系统重启每次我调用函数arch_printf(“%c”,package_send[j]);.如何解决这个问题,你有什么建议吗?
我的代码:
无符号字符package_send [133];
(unsigned char j = 0; j

MT_dialog
离线
最后看到:4个月3天前
工作人员
加入:2015-06-08 34
嗨liuluan002,

嗨liuluan002,

我假定您的意思是想打印出该数组的数据。如果你的设备最终的wrap_platform_reset意味着你耗尽内存,你打印数据和分配额外的消息为每个字符印刷没有消费(印刷,因为实际打印时arch_printf_process调用)。尝试以更小的块打印数组元素,以便调用在schedule_while_ble_on()中调用的arch_printf_process()函数,并在输入其他数据之前打印数据。

由于MT_dialog