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

[复制链接]
 楼主| 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,
     然而实际中又多了一个键盘操作,否则命令不起作用的。要解决能在程序中做那些修改?
     能不壮吗?壮的有点可怕。
zyboy 发表于 2009-6-2 15:57 | 显示全部楼层

思考再提问题!

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

简单的事情不知道你怎么搞这复杂!
computer00 发表于 2009-6-2 15:59 | 显示全部楼层

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

工控秀才 发表于 2009-6-2 16:07 | 显示全部楼层

没有握手的串口比较简单

当然也不排除一些朋友做得比较复杂,如变波特率设计.按协议测量一下,比较容易发现问题.
xhtxzxw 发表于 2009-6-2 16:53 | 显示全部楼层

嘿嘿

我似乎看出来了:
LZ先学的标准C, 可惜学得有点行而上了!
大概那些个scanf,getchar 函数印象太深了,以为在串口调试助手一类的软件运行中按下回车键,就会发0x0d了!
哪哪儿的事啊!
 楼主| enjoy21cn 发表于 2009-6-2 17:02 | 显示全部楼层

在示波器上看了!

回zyboy
     在示波器上看了!的确是有两个回车健的波形。
在上位PC用的是串口调试助手。下位机就是那个驱动器,是采购的!
回computer00
     在上位机PC调试的。最终是把程序弄到MCU中的
回 工控秀才 
      波特率上下位机的是一至的。
 楼主| enjoy21cn 发表于 2009-6-2 17:08 | 显示全部楼层

回xhtxzxw

回xhtxzxw ,在串口调试中回车换行,在示波器中也可以看到波形多了。以前语言学习的不是太好,混过来的,所以这方面还得继续努力拉。
computer00 发表于 2009-6-2 17:09 | 显示全部楼层

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

 楼主| enjoy21cn 发表于 2009-6-2 17:26 | 显示全部楼层

再次回computer00

回computer00
     在上位机PC通过串口调试工具看看命令格式对不对。之后在单片机程写程序,最后发到下位机(驱动器上面)。目前现在程序已经写好了,也下载到单片机了,可以输出命令了,但就是下位机没响应。
     
computer00 发表于 2009-6-2 17:32 | 显示全部楼层

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

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

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

另外,也可能是你的MCU发得太快,设备响应不来。你每发送一个字符就延迟几ms试试。
 楼主| enjoy21cn 发表于 2009-6-2 21:23 | 显示全部楼层

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

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



computer00 发表于 2009-6-2 21:27 | 显示全部楼层

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

你用示波器或者bushound都可以看到实际发出的数据。
vrgood 发表于 2009-6-3 11:39 | 显示全部楼层

估计是调试助手操作问题

估计是调试助手操作问题。。。。。。
电脑串口2-3短路,自发自收,看你上面的操作到底发出了什么东西?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

107

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部