发现串口助手问题: 随意发送0D 0A回车换行 ???
定义一个字符串RxBuf[]Print_Char(RxBuf);
Print_Char(RxBuf);
Print_Char(RxBuf);
Print_Char(RxBuf);
Print_Char(RxBuf);
Print_Char(RxBuf);
Print_Char(RxBuf);
Print_Char(RxBuf);
Print_Char(RxBuf);
Print_Char(RxBuf);
Print_Char(RxBuf);
Print_Char(RxBuf);
Print_Char(RxBuf);
Print_Char(RxBuf);
Print_Char(RxBuf);
Print_Char(RxBuf);
给单片机发送ABC不加回车,单片机接收:41 42 43 0D 0A 0D 0A 0D 0A 0D 0A 00 00 00 00 00
。。。。。。。。加回车 单片机接收:41 42 43 0D 0A 0D 0A 0D 0A 0D 0A 00 00 00 00 00
什么也不发送 单片机接收:0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 00 00
神马个情况???虽然不影响接收的有用数据 Print_Char函数是什么样的? dlmaowf 发表于 2014-6-27 17:19
Print_Char函数是什么样的?
void Print_Char(unsigned char ch)
{
ES = 0; //关串口中断
SBUF = ch;
while(TI!=1); //等待发送完成
TI = 0; ES = 1; //开串口中断
} 什么也不发,为什么会有接收? yu_studio 发表于 2014-6-27 17:41
什么也不发,为什么会有接收?
接按一下发送按键,就能接收到2个回车,搞不懂什么情况 1、PC是用什么串口工具啊? 有些工具有发送新行选项, 不小心勾上了吧 ?
2、 每次单片机接收之前 把buf 清零一下看看? 本帖最后由 ibichao 于 2014-6-27 18:44 编辑
可能上位机自动加了0d,0a 可能是你在发送框里面不小心按了一个回车,后来没有删掉,没有其他字符的话是看不出来的,你可以把光标下移,会发现有两行。 用的串口调试软件是什么样的? 先用两个串口连接起来呢,查看一下计算机发出来的到底是什么 yu_studio 发表于 2014-6-27 17:41
什么也不发,为什么会有接收?
是的,在上位机的发送框内点回车 和不点回车只会多接收个0D 0A LCRPN 发表于 2014-6-27 19:02
可能是你在发送框里面不小心按了一个回车,后来没有删掉,没有其他字符的话是看不出来的,你可以把光标下移 ...
我试过了,打开串口调试助手,发送框内有个网址,
1----把这些内容删掉,什么也不发
2---把这些内容删掉,按一下回车
这两种情况下,都能接收到0D 0A只是按回车的多接收了一个0D 0A而已 墨非 发表于 2014-6-27 18:42
1、PC是用什么串口工具啊? 有些工具有发送新行选项, 不小心勾上了吧 ?
2、 每次单片机接收之前 把buf 清 ...
1---用的是常用的,图标是串口正面(9针)的那个
2---每次都清零,发送区内各种情况都试过了 还有这么邪门的事情,用的是这个串口调试助手么?
那是默認發送 ASCII 給你看, 自動換行的結果
選用16進制發送會解決嗎 ?
不行就換另外的 傳口調試軟件
俺用這個純軟件的, 不用 硬件的邏輯分析儀
http://www.sudt.com/cn/index.html dlmaowf 发表于 2014-6-27 21:03
还有这么邪门的事情,用的是这个串口调试助手么?
那是默認發送 ASCII 給你看, 自動換行的結果
選用16進制發送會解決嗎 ?
不行就換另外的 傳口調試軟件
俺用這個純軟件的, 不用 硬件的邏輯分析儀
http://www.sudt.com/cn/index.html dlmaowf 发表于 2014-6-27 21:03
还有这么邪门的事情,用的是这个串口调试助手么?
个人感觉是PC机工具的问题,换个串口工具试试,推荐SSCOM 记得取消“发送新行”,再不行就用串口抓包工具 抓包看看串口工具究竟发送了什么数据?
如果排除了PC机发送的问题,就得仔细看看单片机程序了,不介意的话,可以贴完整的程序出来给各位看看呗!
页:
[1]