在最近的小项目中,单片机中断优先级的问题,串口发送到上位机的数据有时会出现发送的数据被中断打断的问题。
于是,在上位机机上就容易出现错误,原来读取的方法是read()的方法,反复修改发送数据的格式依然没有好转。
后来讲将上位机的读取方式换成readline()问题得到了解决,且百发百中,问题可能归结于readline方法自身的特性吧。
readline会一直在那里等候,知道接收到换行符"\r\n",所以在没有接收到完整数据时,会一直在那里等候数据的到来,不离不弃。
即便下位机的数据发送过程被其他中断打断。
readline返回的是字符串,所以接收变量也应该是字符串变量即可,然后分解数据包,其他的处理过程是一样的。