打印

壮哉!无里头单片机串口程序发送回车键问题!

[复制链接]
8491|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
enjoy21cn|  楼主 | 2009-6-2 15:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面是一段发送回车键0x0D的程序,
void SendEndChar(void)
{
    SBUF=0x0D;
while(TI==0){ }
TI=0;
}
目前在串口调试中发现一个奇怪的问题
驱动手册要求的发送命令格式:
第一行:指令+参数+0x0D

实际串口调试工具中的发送格式是:
第一行:指令+参数+(直接在键盘上回车换行)
第二行:0x0D
驱动是可以执行的。

在程序中发送两次 SendEndChar();依旧没响应。
有没有其他法子解决这个问题呢?

相关帖子

沙发
yewuyi| | 2009-6-2 15:45 | 只看该作者

这个和壮有什么关系?!

使用特权

评论回复
板凳
computer00| | 2009-6-2 15:46 | 只看该作者

没明白你在说啥……

使用特权

评论回复
地板
enjoy21cn|  楼主 | 2009-6-2 15:55 | 只看该作者

关于一个回车键的问题

回 yewuyi
回 computer00 
     问题出来了就要解决!
     既然手册上要求发送送命令格式:指令+参数+0x0D,
     然而实际中又多了一个键盘操作,否则命令不起作用的。要解决能在程序中做那些修改?
     能不壮吗?壮的有点可怕。

使用特权

评论回复
5
zyboy| | 2009-6-2 15:57 | 只看该作者

思考再提问题!

(1)你是用调试助手发的?你按键盘的空格能保证上位串口软件发送了吗?
(2)如果不能确定,用示波器看是不是发送了2个回车
(3)示波器观察有两个,证明下位机问题,自己查找原因,能否进入中断,波特率是否正确(示波器观察可以得到)。

简单的事情不知道你怎么搞这复杂!

使用特权

评论回复
6
computer00| | 2009-6-2 15:59 | 只看该作者

不是MCU在发命令吗?怎么又跟键盘扯上关系了?

使用特权

评论回复
7
工控秀才| | 2009-6-2 16:07 | 只看该作者

没有握手的串口比较简单

当然也不排除一些朋友做得比较复杂,如变波特率设计.按协议测量一下,比较容易发现问题.

使用特权

评论回复
8
xhtxzxw| | 2009-6-2 16:53 | 只看该作者

嘿嘿

我似乎看出来了:
LZ先学的标准C, 可惜学得有点行而上了!
大概那些个scanf,getchar 函数印象太深了,以为在串口调试助手一类的软件运行中按下回车键,就会发0x0d了!
哪哪儿的事啊!

使用特权

评论回复
9
enjoy21cn|  楼主 | 2009-6-2 17:02 | 只看该作者

在示波器上看了!

回zyboy
     在示波器上看了!的确是有两个回车健的波形。
在上位PC用的是串口调试助手。下位机就是那个驱动器,是采购的!
回computer00
     在上位机PC调试的。最终是把程序弄到MCU中的
回 工控秀才 
      波特率上下位机的是一至的。

使用特权

评论回复
10
enjoy21cn|  楼主 | 2009-6-2 17:08 | 只看该作者

回xhtxzxw

回xhtxzxw ,在串口调试中回车换行,在示波器中也可以看到波形多了。以前语言学习的不是太好,混过来的,所以这方面还得继续努力拉。

使用特权

评论回复
11
computer00| | 2009-6-2 17:09 | 只看该作者

我还是没搞懂你的问题是什么...

使用特权

评论回复
12
enjoy21cn|  楼主 | 2009-6-2 17:26 | 只看该作者

再次回computer00

回computer00
     在上位机PC通过串口调试工具看看命令格式对不对。之后在单片机程写程序,最后发到下位机(驱动器上面)。目前现在程序已经写好了,也下载到单片机了,可以输出命令了,但就是下位机没响应。
     

使用特权

评论回复
13
computer00| | 2009-6-2 17:32 | 只看该作者

不知道你按下键盘上的回车键时,串口调试助手是否发了回

回车换行是两个,0x0D和0x0A。像再记事本里,敲回车键,会自动插入0x0D和0x0A的,而不仅仅是0x0D。

你试试 指令+参数+0x0D+0x0A+0x0D看行不。

另外,也可能是你的MCU发得太快,设备响应不来。你每发送一个字符就延迟几ms试试。

使用特权

评论回复
14
enjoy21cn|  楼主 | 2009-6-2 21:23 | 只看该作者

按下键盘上的回车键时,串口调试助手就发了回车换行

to computer00
首先谢谢你!
在实际的操作中按下键盘上的回车键时,串口调试助手就发了回车换行,跳到下一行的最前面了。
明天了在去试验一下。



使用特权

评论回复
15
computer00| | 2009-6-2 21:27 | 只看该作者

那估计是发送了0x0D和0x0A的...0x0D只回到最前面,0x0A跳到下一行

你用示波器或者bushound都可以看到实际发出的数据。

使用特权

评论回复
16
vrgood| | 2009-6-3 11:39 | 只看该作者

估计是调试助手操作问题

估计是调试助手操作问题。。。。。。
电脑串口2-3短路,自发自收,看你上面的操作到底发出了什么东西?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

107

帖子

0

粉丝