关于串口通信结束符

x___f__ 2011-05-15 08:41:43
现在出现这样一个问题,就是传输数据的时候,遇到终止符数据传输就终止了。

我在传的过程中,会在每段数据的末尾加一个"&",以说明传输结束。
但传输的过程中,数据经常中途被截断。比如传输十进制数据1975892时,其二进制是1E2654,传到0X26时数据传输就被截断了。

也用"\0"做过终止符,但是碰到0时,也是传输被打断。

请问,我错在哪里,该如何解决这样的问题呢?
...全文
2883 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
x___f__ 2011-05-19
  • 打赏
  • 举报
回复
OK!谢谢各位的回答!
向立天 2011-05-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 x___f__ 的回复:]

我设定dcb.EvtChar = "&",但用它的问题是在数据段中会经常出现ascii对应为"&"的数字而导致传输中断,我觉得用一个连续的多个字符作为结尾标志挺好的,但不知道该怎么实现,EvtChar 好像只能设置为单个字符,设置不了两个字符。“用一个连续的多个字符作为结尾标志”,用什么命令可以控制呢?
[/Quote]
这个不是用命令控制的
接收到数据流的时候自己对其进行解析
找到结束符之后把之前的数据按协议整理出来
zhaozidong86 2011-05-16
  • 打赏
  • 举报
回复
串口通信不是用WriteFile吗,怎么会是用sendto啊,这个好像是udp的发送数据吧,可以用memcpy复制数据,发送的时候在WriteFile里面制定发送长度吧
x___f__ 2011-05-16
  • 打赏
  • 举报
回复
我设定dcb.EvtChar = "&",但用它的问题是在数据段中会经常出现ascii对应为"&"的数字而导致传输中断,我觉得用一个连续的多个字符作为结尾标志挺好的,但不知道该怎么实现,EvtChar 好像只能设置为单个字符,设置不了两个字符。“用一个连续的多个字符作为结尾标志”,用什么命令可以控制呢?


“数据段使用全字符表示,而数据头采用不涉及到字符的ascii码做标示。”我设定的数据尾是用不涉及到字符的ascii码做标示的,但是数据段我定义的是char数组,我想请问数据段使用全字符表示是什么意思,串口发送时传入的char*缓存都是用ascii码表示的,若把数据段使用全字符表示是意味着把数据段的每个数字包括正负号分别用ascii表示吗?这样的话发送时的数据缓存是不是要开到很大才行?
向立天 2011-05-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xianglitian 的回复:]

用一个连续的多个字符作为结尾标志
这样重复率会降低
比如AA55或A5A5之类的
[/Quote]补充一下
这里说的A、5是十六进制数
chenjiawei007 2011-05-16
  • 打赏
  • 举报
回复
LS的也是个办法,
在数据段中出现的数据是不能做数据头尾的,
你可以考虑数据段使用全字符表示,而数据头采用不涉及到字符的ascii码做标示。
向立天 2011-05-16
  • 打赏
  • 举报
回复
用一个连续的多个字符作为结尾标志
这样重复率会降低
比如AA55或A5A5之类的
x___f__ 2011-05-15
  • 打赏
  • 举报
回复
我的数据都是数字,是有符号的。
x___f__ 2011-05-15
  • 打赏
  • 举报
回复
传输的时候用unsigned char 为什么?我传的原始数据中有负数啊
x___f__ 2011-05-15
  • 打赏
  • 举报
回复
我发送时,定义了一个char的发送缓存数组,传的时候是用的sendto函数。请问对方要连续收是什么意思?
我设的evnChar = &,但串口传输的时候,虽然原始数据是数字,但二进制位常出现&,这就导致&后的数据接不到了。

接收的时候,也是定义了一个char的数组接收缓存,但是我发现接收缓存在遇到0时就不接收了,然后我用memcpy把接收缓存赋给事先定义好的结构体,可以自动取得对应位的值。但现在数据被截断了,事先定义结构体中的一部分数据就取不到值了
chenjiawei007 2011-05-15
  • 打赏
  • 举报
回复
拷贝字符串时0做结束符,0后面的数据当做了无用数据,可以选择memcpy函数进行拷贝。
用户 昵称 2011-05-15
  • 打赏
  • 举报
回复
你传输的时候,要用unsigned char 吧,而且对方也要连续收才对。

2,643

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧