俺弄个程序把接收到的数据放到RichEdit上(动态接收,一收到数据就放在RichEdi上),
发现RichEdit存放一定数据后,后来接收的数据就乱套了,Memo就没有这样的问题,这
是怎么回事,就连那个很有名的软件—串口调试助手V2.2 也有类似的问题。

哪位能人指点一下是什么原因造成的吗?

不知道你怎么做的

以前我也遇到过,你看你是不是变量的size设置大点,试试

以前我的问题是因为接收数据的位数超过变量的最大限,看看是不是同样的原因引起的

接收缓冲够大了,

后来乱是把该一行的数字攫断成几行。

接收到的数据数目是对的,反而Memo自己有时候也把 [效验和] 和回车换行去掉了,造成该换行的时候不换行,
接收的字节数量是对。这想不明白。

具体问题说清楚下,也许我能替你解答

如本来应该这样显示的(-代表任何英文字母;?为效验和(值1到255之间); \n表示回车换行):
————————–?\n                //
————————–?\n
————————–?\n
————————–?\n
……………………….            //后面的类似

/////////////////////////////////////////////////////

Memo(设置为长度过长会自动换行的)接收有时候显示为:

—————————————————-?\n
—————————————————-?\n ——–
——————?\n
————————–?\n
————————–?\n
—————————————————-?\n———–
—————?\n————————–?\n    ///很明显某行的效验和、回车换行被省略掉了。       
————————–?\n                     
————————–?\n 
……………………….                //后面的类似

RichEdit更离谱:
————————–?\n                //
————————–?\n
————————–?\n
————————–?\n
………………………..              //一百多行后变为
——–
———–
——-?\n
——–
———–
——-?\n
———
———
——–?\n                              //很明显把一行截取三行了。
……………………….              //后面的类似

RichEdit里面的内容不是纯文字,里面带格式的,把RichEdit里面的内容当二进制文件传输就没问题了。

俺弄个程序把接收到的数据放到RichEdit上(动态接收,一收到数据就放在RichEdi上),
发现RichEdit存放一定数据后,后来接收的数据就乱套了,Memo就没有这样的问题,这
是怎么回事,就连那个很有名的软件—串口调试助手V2.2 也有类似的问题。

哪位能人指点一下是什么原因造成的吗?

你的意思是不是说只有接受少量数据时才正常,接受多了就不乱是不是这样?

说明你收的的数据中夹杂着二进制数据(非显示字符或空格),
如果应该没有,说明你的通讯线路可能有不稳定的地方,
不要怀疑这些用了很久的东西,找自己的原因

引用 10 楼 xiaocha 的回复:
说明你收的的数据中夹杂着二进制数据(非显示字符或空格),
如果应该没有,说明你的通讯线路可能有不稳定的地方,
不要怀疑这些用了很久的东西,找自己的原因

接收的数据是从其他设备送上来的,当然是二进制数据,而且每个字节有可能是0×00–0xFF的任何,
我想就算是非显示字符,Memo或RichEdit都不要自作主张把它删除了,然后我可以把这些非显示字符翻译
成对应的16进制。

不对,Memo或RichEdit是文本窗口,不能显示非显示字符(除了少量,TAB等),遇到了这些字符不会显示,
另外他们还有一个按单词分割换行的功能,非显示字符被认为是单词分割符,造成行显示不正确。
你可以用 Notepad 打开一个二进制文件看看,就明白了。