当前位置:  技术问答>linux和unix

我的串口程序为什么总收到多余的字符?

    来源: 互联网  发布时间:2016-06-27

    本文导语:  我的写了个程序来接收串口的消息。但是收到的信息中间多了很多无用的“f” 例如: len 25 7e450ffffffffffffffff00c0ffffff93001bfffffff9100000000f4e7e len是收到的字符串的长度,由程序给出,没有算那些f。也就是程序知道那些f...

我的写了个程序来接收串口的消息。但是收到的信息中间多了很多无用的“f”
例如:
len 25
7e450ffffffffffffffff00c0ffffff93001bfffffff9100000000f4e7e

len是收到的字符串的长度,由程序给出,没有算那些f。也就是程序知道那些f不是收到的信息。如果没有了那些f,结果就是正确的。

而且很多时候一条信息分开了两次接收。
例如:
Len 10
7e450ffffffffffffffff00c0ffffff93

Len 15
001bfffffff7100000000783d7e

Len 16
7e450ffffffffffffffff00c0ffffff93001bfffffffa100

Len 9
0000004b637e

这是为什么呢?我每条信息都是固定的25个bytes的

发送端应该没问题。因为用别的软件接收一切正常。

|

输出中的f是因为printf("%x"...)缺省打印整数,字符(char)就带符号扩展为整数(int)
当buff[i]的最高位为1比如'x83'扩展为整数就是0xffffff83了。
请改为:

printf("%02hhx ", (unsigned char)buff[i]);

因为"%x"中的x表示需要无符号参数。

opt.c_iflag |= IGNBRK;          //忽略回车符
有点问题吧,为何忽略回车???

opt.c_iflag &= ~INPCK;
opt.c_iflag |= IGNBRK;          //忽略回车符 
/* 改为 */
opt.c_iflag &= ~(INPCK | ISTRIP); /* 由于c_cflag &= ~PARENB; 无奇偶校验, 此处相应设置 */
opt.c_iflag &= ~(IXON | IXOFF | IXANY);  /* 不要软件流控, 如果发送程序用软件流控,改为 */
/*
opt.c_iflag |= (IXON | IXOFF | IXANY);
 */


|

while(1) 

//清空buff
  memset(buff,0,512);

  while((nread = read(fd, buff, 511)) >0) //把512改为511
  {  
    printf("nLen %dn",nread); 
    buff[nread+1] = ''; 
    for(i=0; i  0) {
if ( (nread = read(fd, ptr, nleft)) = 0 */
}
/* end readn */


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • linux下几个设备通过串口串行连接,如何协调各串口发送数据
  • 散分100,求解串口键盘和串口鼠标驱动
  • Linux 中用java语言写串口程序,提示找不到串口
  • 高分求助:我笔记本没有串口,在linux下要和一个串口设备连,怎么办?
  • 关于linux串口通信中写串口的问题
  • 开发板串口与实际内核中的串口文件的对应关系怎么回事?谢谢帮忙
  • 怎么判断串口已经收到数据,并及时读出?怎么判断串口已经将写入的数据发送完毕?
  • 开发板串口与实际内核中的串口文件的对应关系怎么回事?谢谢帮忙 iis7站长之家
  • linux下串口发送数据用串口精灵接受不到或为全零
  • 在虚拟Linux系统下能进行串口通讯吗?最好给个串口通讯的代码!谢谢!
  • 要加多个串口,怎么分别指定他们的driver_name和dev_name以示区别各个串口?
  • 工控机上用光盘安装debian6.05,硬件上有6个串口,但是软件上即dev中只有4个串口,如何解决。
  • 嵌入式linux,串口初始化时,无法设置串口属性
  • 扩展的串口卡上的串口操作的问题
  • 请教串口通信的编程
  • 请问如何以独占的方式打开串口
  • linux串口驱动该怎么写
  • 虚拟串口怎么读数据? 请有 串口 或者 usb 驱动经验的高手指点
  • linux下如何清空串口的输入输出缓存


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3