在linux下做一个串口通信程序,发现一个奇怪的现象。
我们使用的串口0做通信,故而,我们已经把串口0作为 控制终端 的选项关掉了——就是 ZOC等串口终端上已无法看到开机和执行的信息了。
近期发现一个奇怪的现象。
在串口通讯中,有时,linux主机接收从机发送的数据会延缓。一个无意的尝试,我们在接收之前,加了一句printf指令,结果就正常了。
为了辩析这句printf产生的意义,我们试过用延时指令替代这句printf,没用——事实上,调试时我们在此延时了不短的时间,也没用。
再后来,我们在查询串口数据中,在一定延时后,加插一个无效数据发送,结果也可以解决问题。
所以,我们分析,这个printf的意义在于给 串口做了某种激发动作?
回想起来,printf是把标准输出流流到标准输出设备,因为51,我才知道这个标准设备大多是串口。
刚好我们用串口0做通讯——由硬件限制,一时没办法用其他串口做通信测试。
我怀疑就是,即使关闭了它作为 控制终端,却没办法 改变这个作为标准输出设备。
不知道该通过什么变量来设置,或者 环境变量?
回复 板凳 幻城 的帖子
千万别这么说。
大多数时候都是不懂,在猜测。
往往因为缺乏经验,总是想到一些稀奇古怪的原因上去了。
当然——
这个问题现在,似乎也没有完全搞明白。