看似简单的串口有关问题,竟出了有关问题

看似简单的串口问题,竟出了问题!
用C编了一个串口的接收程序,外部设备一直在往串口写数据,所以串口只需要打开和读就可以了

这个看似简单的串口问题,竟出了问题!

接收的数据在超级终端上打印,打印出来的结果如下,大家帮我分析一下啊,谢谢
/—————————————结果————————————————————/
 # ./recv

fd = 4
ready for sending command——-
<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0’
<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0’
<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0’
<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0’
<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0’
<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0’
<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0′<‘0’nread = 128
<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘~'<‘?
<‘?<‘?<‘?<‘?<‘?<‘?<‘~'<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?
<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?'<‘?<‘?
<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?
<‘?<‘?<‘ ‘<‘?<‘'<‘D'<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?<‘?

/———————————————————————————————————/

程序代码如下:
 

另外一个问题是:sleep(1)的问题,怎么串口打开后需要延迟一段时间才能读到足够多的数据(比如256个)?


应该不是波特率的原因.

在你打开串口并设置好后,串口开始接收数据,根据你的波特率,串口最快一秒钟也就接收3600个字节.即1ms接收3.6个字节左右,从你设置好串口到开始读取数据,由于没有其它操作也就1ms左右,即到你开始读取数据时,串口的缓冲区中有4个字节左右,即你能读取4-5个字节.你加入了sleep(1)后,到你读取数据时缓冲区中最多可能有3600个字节了,故你能读取够128个字节.
计算一下,你usleep(50)左右差不多就可以了.


printf(" < ‘%c ‘",qq[i]) ; 

printf(" < 0x%x",qq[i]) ; 
打印16进制,去掉‘’
%c字符型的只能显示128内的

看似简单的串口有关问题,竟出了有关问题

相关文章:

你感兴趣的文章:

标签云: