硬汉嵌入式论坛

 找回密码
 立即注册
查看: 195|回复: 7
收起左侧

求助,通过串口给上位机发送45B数据,上位机接收到的是32B+13B的先后数据

[复制链接]

3

主题

7

回帖

16

积分

新手上路

积分
16
发表于 2025-5-22 17:12:00 | 显示全部楼层 |阅读模式
用的代码是HAL_UART_Transmit_DMA(&huart6, waveData, 45),waveData是uint8类型,串口配置如图

微信图片_20250522171044.png
回复

使用道具 举报

6

主题

268

回帖

286

积分

高级会员

积分
286
发表于 2025-5-22 21:56:10 | 显示全部楼层
正常,是有可能折开或粘包的
回复

使用道具 举报

6

主题

268

回帖

286

积分

高级会员

积分
286
发表于 2025-5-22 21:57:04 | 显示全部楼层
即使你是连续发送的,电脑也有可能折开,也有可能是你发送时就不是连续的,
回复

使用道具 举报

3

主题

425

回帖

434

积分

高级会员

积分
434
发表于 2025-5-22 22:55:58 | 显示全部楼层
这跟你上位机的接收实现方式相关;单片机这头用DMA发送通常是连续的。
如果直接用win32-api实现接收,那么应该深入研究一下COMMTIMEOUTS结构体,它非常重要。
回复

使用道具 举报

0

主题

30

回帖

30

积分

新手上路

积分
30
发表于 2025-5-22 23:58:55 | 显示全部楼层
本帖最后由 dukelec 于 2025-5-23 07:46 编辑

看这个帖子 5 楼我的回復
你收到多少数据就把多少数据传入一个接收函数,由此函数负责拼接、校验、判断是否超时等,最后输出一个完整的正确的数据包
这个帖子是 c 语言的代码,一样可以用于 pc
或者开源的 pycdnet 里面有相应的 python 版本的实现
不要指望操作系统直接回復一个正确完整的数据包,因为串口是流式接口


51单片机串口解析如何改进
https://www.armbbs.cn/forum.php? ... 1&fromuid=85792
(出处: 硬汉嵌入式论坛)


回复

使用道具 举报

3

主题

7

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2025-5-23 10:15:02 | 显示全部楼层
fxyc87 发表于 2025-5-22 21:57
即使你是连续发送的,电脑也有可能折开,也有可能是你发送时就不是连续的,

是指PC在接收的过程中会将数据拆解开是吗?
回复

使用道具 举报

3

主题

7

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2025-5-23 10:15:43 | 显示全部楼层
dukelec 发表于 2025-5-22 23:58
看这个帖子 5 楼我的回復
你收到多少数据就把多少数据传入一个接收函数,由此函数负责拼接、校验、判断是 ...

感谢提供方案
回复

使用道具 举报

3

主题

7

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2025-5-23 10:18:49 | 显示全部楼层
glory 发表于 2025-5-22 22:55
这跟你上位机的接收实现方式相关;单片机这头用DMA发送通常是连续的。
如果直接用win32-api实现接收,那么 ...

感谢提供方案
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-9 16:05 , Processed in 0.304111 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表