关于串口循环发送接收的问题

我在测试串口程序时遇到了如下问题:

当我把串口发送接收程序放到while循环外边时发送的数据全部都能接收到,如下图:

但是当我把串口发送接收函数放到while循环内部时就只能接收到一个数据,如下图

请问这是什么原因?