关于串口操作 超级终端解决方案
关于串口操作 超级终端
背景描述:
现在手上有块板子,需要给该板子刷入一个bin文件,然后重启板子,让他进入某个模式。
现有实现方式:
板子通过RS232连上PC,PC启动超级终端,连上串口,然后敲入一些命令,使板子进入boot模式,然后再敲入一些命令,进行设置板子的一些属性,清ROM,刷包等工作,期间超级终端打印出各种命令的反馈信息。(bin文件是板子自己从tftp取,不通过串口,串口只传文件名过去)
问题描述:
1.超级终端的原理?我理解的超级终端只是发东西到串口,显示从串口读到的。比如一些命令,板子应该会自己去解析以换行符结尾的命令,然后发打印信息到PC,不过比如一些进度百分数,超级终端界面会在一个地方更新打印(从0%~100%),这种是怎么实现的?如果只是从串口读数据,打到界面,光标应该是一只往后走的,怎么可以在一个地方更新呢?
2.现在我想做一个程序,通过winAPI直接读写串口,替代敲命令,就是把命令按一定时序写到串口,用户只需要输入一些信息,然后一键刷包,不过不知道时序怎么好控制。一种方法是在每条命令后加delay,等待处理完成,不过如果板子卡了一会儿,估计会出bug;另一种方法是读打印,不过因为打印比较多,串口是分次读的,所以也不好去解析打印内容,请问大家还想到其它方法么?
------解决方案--------------------
1。会不会是超级终端用了回车符?
我们普通文本输入(比如记事本里输入,不是WORD等专业文本编辑软件)换行是用的0x0a 0x0d两个字节实现的回车和换行。即\r\n,如下
0a------换行符号------"\n"
0d------回车符号------"\r"
例如用记事本写一个文本,如写个“1 2 3”,然后保存,然后用16进制编辑器打开这个文本,把3个数之间的空格(即0x20)该为回车符(即0x0d),然后再打开此保存文件,(记住要用记事本打开),然后你会发现,记事本里只显示一个“3”,所以估计超级终端也是用的这个原理,他的百分数前面都加了一个0x0d(\r),所以显示的百分数不动,应该就是这个原理。
第二个问题,暂时没看明白,你写串口是不是可以用相应的WINAPI同步,就是没写成功后,不会执行下面的命令,而是阻塞在那条命令处。或者串口写成功后,会不会返回点什么标志之类的,表示本次写成功了,你可以利用下? 串口我只用过,没写过,没法帮你的忙了,只是猜测下
背景描述:
现在手上有块板子,需要给该板子刷入一个bin文件,然后重启板子,让他进入某个模式。
现有实现方式:
板子通过RS232连上PC,PC启动超级终端,连上串口,然后敲入一些命令,使板子进入boot模式,然后再敲入一些命令,进行设置板子的一些属性,清ROM,刷包等工作,期间超级终端打印出各种命令的反馈信息。(bin文件是板子自己从tftp取,不通过串口,串口只传文件名过去)
问题描述:
1.超级终端的原理?我理解的超级终端只是发东西到串口,显示从串口读到的。比如一些命令,板子应该会自己去解析以换行符结尾的命令,然后发打印信息到PC,不过比如一些进度百分数,超级终端界面会在一个地方更新打印(从0%~100%),这种是怎么实现的?如果只是从串口读数据,打到界面,光标应该是一只往后走的,怎么可以在一个地方更新呢?
2.现在我想做一个程序,通过winAPI直接读写串口,替代敲命令,就是把命令按一定时序写到串口,用户只需要输入一些信息,然后一键刷包,不过不知道时序怎么好控制。一种方法是在每条命令后加delay,等待处理完成,不过如果板子卡了一会儿,估计会出bug;另一种方法是读打印,不过因为打印比较多,串口是分次读的,所以也不好去解析打印内容,请问大家还想到其它方法么?
------解决方案--------------------
1。会不会是超级终端用了回车符?
我们普通文本输入(比如记事本里输入,不是WORD等专业文本编辑软件)换行是用的0x0a 0x0d两个字节实现的回车和换行。即\r\n,如下
0a------换行符号------"\n"
0d------回车符号------"\r"
例如用记事本写一个文本,如写个“1 2 3”,然后保存,然后用16进制编辑器打开这个文本,把3个数之间的空格(即0x20)该为回车符(即0x0d),然后再打开此保存文件,(记住要用记事本打开),然后你会发现,记事本里只显示一个“3”,所以估计超级终端也是用的这个原理,他的百分数前面都加了一个0x0d(\r),所以显示的百分数不动,应该就是这个原理。
第二个问题,暂时没看明白,你写串口是不是可以用相应的WINAPI同步,就是没写成功后,不会执行下面的命令,而是阻塞在那条命令处。或者串口写成功后,会不会返回点什么标志之类的,表示本次写成功了,你可以利用下? 串口我只用过,没写过,没法帮你的忙了,只是猜测下