• 已解决 33821 个问题
  • 已帮助 5814 位优秀工程师

srm32串口怎么判断上位机发送的数据什么时候完成?

51770ad4bb94f126 2019-07-22 浏览量:656
srm32串口怎么判断上位机发送的数据什么时候完成?
单片机 STM32
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 使用数据协议,并包含数据校验。

    帧头用特定的n个8位字符告诉stm32数据开始了,并确认总共有多少帧。举个例子,如果收到3个连续的0x55就确认数据帧头 ,数据长度在协议里预先制定,比如60帧。于是,收完60帧就可以判断上位机发送完成。

    那么,怎么判断数据有效呢?

    包尾最后一帧设计校验位,可以是把前面所有帧的字节累加起来,检验位的数据与累加结果一致,表示数据有效。

    如果校验没通过,丢弃,然后也可以回复上位机重发。然后继续等帧头的特征码。

    • 发布于 2019-07-23
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:6
  • 可以将要通过串口发送的数据构造一个数据帧,在帧的末尾加上特定字符或字符串表示结束,STM32通过串口接收数据并判断。。。
    • 发布于2019-07-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 一般有两种方式,

    1通过特定数据判断一帧,比如字符串后面加回车换行,还有数据加帧头帧尾

    2可以通过超时检测,当你发送字符间隔大于一定时间就认为一帧结束,常用于485通讯

    • 发布于2019-07-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 光串口通信本身是没有这样的机制的,需要自行定义数据通信协议,比如规定连续3组char字符为"-_"即”-_-_-_"表示一次数据已经传输完毕对应的还要定义数据开始标记。

    其实串口仅仅提供数据传输的物理通道,具体怎么用是上层通信协议的事情啦。

    • 发布于2019-07-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以分为定长和不定长两种:

    定长:规定通讯协议,每次发送接收数据的长度是一定的,以分包的形式传输数据。这种方式适合数据量不多,长度较为统一的场合。

    不定长:又分为有通讯协议,无通讯协议:有通讯协议:比如规定结尾用回车"\r\n"结尾,当收到“\r”时判断下一帧是否“\n”,如果是,则为结束标志,这种方式适合主要为文本传输场合;无通讯协议:一般波特率是固定的,传输数据又是连续的,所以当超过一定时长没有接收到数据,则可判断为数据完成一次传输,这种方式稍微会延迟,适合对实时性要求不高的应用。

    • 发布于2019-07-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 最简单的方法就是在串口上面加一个超时机制,比如1ms内没收到数据,就认为已经完成了
    • 发布于2019-07-31
    • 举报
    • 评论 0
    • 0
    • 0

  • 在你的软件里面添加一个超时判断,超时了表示你的数据帧结束
    • 发布于2019-08-10
    • 举报
    • 评论 0
    • 0
    • 0

srm32串口怎么判断上位机发送的数据什么时候完成?