请教?什么时候串口发送 等while会一直等?

[复制链接]
3196|10
 楼主| 渤海三叠浪 发表于 2012-9-5 10:57 | 显示全部楼层 |阅读模式
本帖最后由 渤海三叠浪 于 2012-9-5 14:44 编辑

send_串口();while(直到发送成功);



请教什么情况下会永远发送不成功?

谁遇到过?多谢!!!!
--------------------------------------
各位大侠,我描述的确实有问题。
我的意思就是while(TI)

现在joyme大侠给出答复是:只有模块坏掉了,才会永远发送不成功。
yewuyi目前还没有给出答案。
多谢yewuyi大侠
yewuyi 发表于 2012-9-5 11:11 | 显示全部楼层
最简单的例子,通信线断了。
 楼主| 渤海三叠浪 发表于 2012-9-5 12:21 | 显示全部楼层
2# yewuyi
大侠好热心

但是线断了 还是能发送出去啊

大侠是不是没搞过RS232?
coody 发表于 2012-9-5 13:09 | 显示全部楼层
你示波器看看是否真的发送了数据?
yewuyi 发表于 2012-9-5 13:52 | 显示全部楼层
2# yewuyi
大侠好热心

但是线断了 还是能发送出去啊

大侠是不是没搞过RS232?
渤海三叠浪 发表于 2012-9-5 12:21


你指的发送端还是接收端?如果是发送端,则看你‘直到发送成功’是用什么来判断的?

呵呵,俺用232的时候,估计你还在上学呢。。。
joyme 发表于 2012-9-5 13:56 | 显示全部楼层
send_串口();while(直到发送成功);

你指的是经常写的while(TI)吗?这是发送完成的标志位,确实外部情况不会导致失败,除非UART模块坏了
主要是它的判断机制,它只是当内部一位寄存器已经将一个字节发送完就算成功,至于接受方是否接到,甚至发送的数据是否正确都不管的

如果不是,同样,你先要了解其判断机制,才能知道什么情况会成功,什么情况会失败
 楼主| 渤海三叠浪 发表于 2012-9-5 16:22 | 显示全部楼层
你指的是经常写的while(TI)吗?这是发送完成的标志位,确实外部情况不会导致失败,除非UART模块坏了
主要是它的判断机制,它只是当内部一位寄存器已经将一个字节发送完就算成功,至于接受方是否接到,甚至发送的数 ...
joyme 发表于 2012-9-5 13:56

对  我说的是经常写的while(TI)
864 发表于 2012-9-6 08:17 | 显示全部楼层
如果不放心加个超时判断,超时后就退出。否则假设存在程序跑飞到了这句上面实际又没东西在发送那估计就死了,不过也都是瞎假设一下,也没真正碰到过
dlyt_test001 发表于 2012-9-6 08:30 | 显示全部楼层
真没碰到过一直等TI,不成功。
编程时最好加超时!
jlass 发表于 2012-9-6 09:01 | 显示全部楼层
uboot中的串口操作就是这样的,逻辑上没有问题
失败的话,要么是串口坏了,要么就是数据读取失败(就是发送标志位已经为0了,但你读到的却是1)
zhaodl520 发表于 2012-9-6 09:41 | 显示全部楼层
32路模拟量信号发生器MD13213
可同时产生32路0-5V的模拟信号
串口转TTL/STC下载模块/刷机模块/MD21T22
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

636

帖子

1

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