首页| 论坛| 消息

回复: 串口调试助手(QT 4.4.3 + QextSerialPort 1.2)
#6 [csoapy 11-18 14:17]
引用第5楼xjcook于2008-11-18 12:00发表的 :
已解决,谢谢楼主。
另外,提一个小建议,接收报文的时候,在显示时每一帧后面加一个回车,这样看起来方便些。
其实这个小工具是给我们学校一个实验室做的东西,在V1.01版后他们也提出了这个要求,因为自动清空我没做出来,所以就把自动清空改成自动换行了。
之所以在V1.01后上传的不是V1.02而是V1.03,是因为V1.02按他们的要求做的。但我觉得这个自动换行不能够真实反应收到的数据,所以就没把它发上来。现在既然有人需要就发在这里吧。
需要说明的是,在V1.03里面提到的那个修正后的BUG是V1.02时就已经修正了。
下面是带自动换行的版本V1.02:
#7 [xjcook 11-18 16:47]
提供一个最简单有效的自动清空方法供参考,在你把要显示的东西添加到QTextEdit后,加上
if( ui.plainTextEdit_RecBuf->toPlainText().length() > 1000 )
ui.plainTextEdit_RecBuf->setPlainText(ui.plainTextEdit_RecBuf->toPlainText().right(ui.plainTextEdit_RecBuf->toPlainText().length()/2));
并不是全部清空,是到1000个字符了清除前面一半,当然到多少,清多少自己说了算。
自动清空其实只是为了让连续运行时不要一直内存涨上去,如果全部清空又可能导致想看的数据不见了。
另外,楼主说的“自动换行不能够真实反应收到的数据”,我也发现了,就是发送端发送的一帧连续数据,到这个程序会被分帧,
如果作为一个串口监视软件的话,这样没有问题,如果需要处理数据的话,需要把几帧合并,就会比较烦。这个和串口的参数设置
有关,不知道楼主研究过没有。
#8 [csoapy 11-18 18:27]
引用第7楼xjcook于2008-11-18 16:47发表的 :
提供一个最简单有效的自动清空方法供参考,在你把要显示的东西添加到QTextEdit后,加上
if( ui.plainTextEdit_RecBuf->toPlainText().length() > 1000 )
ui.plainTextEdit_RecBuf->setPlainText(ui.plainTextEdit_RecBuf->toPlainText().right(ui.plainTextEdit_RecBuf->toPlainText().length()/2));
并不是全部清空,是到1000个字符了清除前面一半,当然到多少,清多少自己说了算。
.......
我想做的“自动清空”是指像龚博士的串口调试助手那样,当滚动条将要出现还未出现的时候就把显示内容清空。仅有现有字符的个数不能解决这个问题,比如每行一个数,十几行就出现滚动条了,但没有换行符时可能几百个字符也不会导致滚动条的出现。
真正解决这个问题得一行行地算:根据当前字体大小、行数和最后一行的字符数来算出是否已经超出了当前窗口所能显示的字符数。比较麻烦,所以就没做。

你说的“串口参数设置”是不是指win平台上SetCommConfig()函数参数中COMMCONFIG结构体中的DCB结构体里面提到的一些东西?曾经试着理解里面的每一项,但是发现有很多涉及到通信知识的东西,看不懂,除了通常用到的选项其它的也就没再管。
#9 [xjcook 11-18 21:21]
就是windows那个结构的参数,挺难懂的,我也理解不多,反正就是各个参数不停的试。÷
清空也没有必要做的像哪个软件一样,只要用者方便,实现简单就可以了。
#10 [天行健 11-18 21:38]
佩服,好好学习一下!

<< 1 2 3 4 >> (2/24)

回复 发表
主题 版块