WEB开发网
开发学院操作系统Windows XP XP下超级终端与嵌入式开发板交互技巧 阅读

XP下超级终端与嵌入式开发板交互技巧

 2012-12-03 14:23:44 来源:WEB开发网   
核心提示:需要注意的是:在Windows系统中回车键被当做\r\n 的组合来使用,当我们从键盘输入回车键时,XP下超级终端与嵌入式开发板交互技巧(3),Windows系统会把回车键当做\r\n 来处理,Unix系统只会当做\n 来处理,比如“printf("ce123' CSDN blog.\n&q

需要注意的是:在Windows系统中回车键被当做\r\n 的组合来使用,当我们从键盘输入回车键时,Windows系统会把回车键当做\r\n 来处理,Unix系统只会当做\n 来处理,不管在什么系统中,都可以用\n来作为一行输入结束的标记,只是在编程时我们需要注意,在Windows系统中我们会读到\r 这个字符,我们必须把\r和正常输入的字符区别开来。

Windows与Unix文件格式是不同的,问题一般就是出在/r/n问题上。回车(CR)和换行(LF)符都是用来表示“下一行”的。而标准没有规定要使用哪一个。于是产生了三种不同的用法:和windows采用回车+ 换行(CR+LG)表示下一行(亦即所谓的PC格式),UNIX采用换行符(LF)表示下一行,MAC机采用回车符(CR)表示下一行。当在不同的系统间传递文件,就要涉及格式的转换。
两种文件格式之间的转化
Unix -> Windows:'\n' -> '\r\n'      
 
while ( (ch = fgetc(in)) != EOF )
{
	if ( ch == '\n' )
		putchar('\r');
	putchar(ch);
}

只要在Unix文件中出现的'\n'的之前加入一个'\r'字符就可以了

Unix <- Windows:'\n' <- '\r\n'
从Windows到Unix的情况复杂点,不能只是把从文件中读出的'\r'去掉就可以了。因为Windows文件中的文本行的末尾有时会内嵌一个回车符号,这种情况在击打式打印机中出现。所以在转换前要判断'\r'是否和'\n'同时出现。如果同时出现,则去掉'\r',如果没有同时出现,保留'\n'。

cr_flag = 0;    /* No CR encountered yet */
while ( (ch = fgetc(in)) != EOF )
{
	if ( cr_flag && ch != '\n' ) {
	/* This CR did not preceed LF */
		putchar('\r');
	}
	if ( !(cr_flag = (ch == '\r')) )
		putchar(ch);
}
六、超级终端中关于回车符合换行符的一些设置
以换行符作为发送行末尾(ASCII码发送)
(超级终端 ->属性 ->设置 ->ASCII码设置 ->ASCII码发送:以换行符作为发送行末尾),若勾选了,则发送的数据中有0D(\r)的,会在0D后添加0A(\n)。
以换行符作为传入行末尾(ASCII码接收)
(超级终端 ->属性 ->设置 ->ASCII码设置 ->ASCII码发送:以换行符作为传入行末尾),若勾选了,则接收的数据中有0D(\r)的,会在0D后添加0A(\n)。
此外,还有一点需要注意,我们在使用printf输出信息时,比如“printf("ce123' CSDN blog.\n")”,这里面的\n是回车换行,因此通过串口将该字符串发送到超级终端时要在\n后面或者后面增加一个\r。

上一页  1 2 3 

Tags:XP 超级 终端

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接