以你的最后一张图为例。
你发出的数据Hex是:01 03 01 48 00 08 C4 1A,右侧的buffer显示收到了后续数据,其中,
48H = 72D, 08H = 08D, C4H = 196D, 1AH = 26D。
你看Com4_Write实现方法咯,用rt_strlen计算buffer长度,遇到’ ’,即0x00就停止输出了。
这显然不是串口DMA的问题。
你可以使用rt_device_read的返回值,表示返回数据的长度。同时适当改写Com4_Write函数即可,如增加一个输入参数表示数据长度,如果为0,则使用rt_strlen获取buf中的字符串。
以你的最后一张图为例。
你发出的数据Hex是:01 03 01 48 00 08 C4 1A,右侧的buffer显示收到了后续数据,其中,
48H = 72D, 08H = 08D, C4H = 196D, 1AH = 26D。
你看Com4_Write实现方法咯,用rt_strlen计算buffer长度,遇到’ ’,即0x00就停止输出了。
这显然不是串口DMA的问题。
你可以使用rt_device_read的返回值,表示返回数据的长度。同时适当改写Com4_Write函数即可,如增加一个输入参数表示数据长度,如果为0,则使用rt_strlen获取buf中的字符串。
举报