我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 857|回复: 0

【求助】懂uclinux的进来,串口发送长字符串时出错。。 -

[复制链接]

该用户从未签到

1万

主题

1292

回帖

936

积分

管理员

积分
936

社区居民最爱沙发原创达人社区明星终身成就奖优秀斑竹奖宣传大使奖特殊贡献奖

QQ
发表于 2013-3-30 00:56:40 | 显示全部楼层 |阅读模式
调试时候发送短的字符串没问题,长的字符串,大概到了20个字节就出问题了,而且前面的20个左右字节正确,后面的都错了,而且收到的字节也多了几个。<ol><li>#include <sys/types.h> <li>#include <sys/stat.h> <li>#include <fcntl.h> <li>#include <termios.h> <li>#include <stdio.h> <li><li>#define BAUDRATE B19200    <li>#define SERIALDEVICE "/dev/ttyS1" <li>int main() <li>{ <li>  int fd,ncount; <li>  struct termios oldtio,newtio; <li>  char buf[]="This is a simple application for serial communication\r\n"; <li>  <li>  fd = open(SERIALDEVICE, O_RDWR | O_NOCTTY );//  打开串口1,UART1,O_SYNC表示是同步打开的就是要把数据全都写入才返回的。<li>  if (fd <0) <li>  {   <li>      perror(SERIALDEVICE); <li>      exit(-1); <li>  } <li>  <li>  tcgetattr(fd,&oldtio);           //      <li>  bzero(&newtio, sizeof(newtio));    //<li>  <li>  newtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD; //串口设置为波特率19200bps,8N1,<li>  newtio.c_iflag = IGNPAR | ICRNL;   //  IGNPAR:忽略奇偶性错误;ICRNL:将回车符映射为换行符<li>  newtio.c_oflag = 0; <li>  newtio.c_lflag = ICANON;<li>  <li>  tcflush(fd, TCIFLUSH); <li>  fcntl(fd,F_SETFL,0);           //  文件描述词操作<li>  tcsetattr(fd,TCSANOW,&newtio);     //  选择新的设置,TCSANOW:新设置立即生效<li>  ncount=write(fd,buf,sizeof(buf));   //  往串口发送数据<li>  printf("the bytes written to serial is %d\n",ncount);   //  发送的字符个数<li>  printf("character to send is: %s\n",buf);           //  发送的字符串<li>  perror("write");                           //  错误  <li>  tcsetattr(fd,TCSANOW,&oldtio); <li>  close (fd); <li>  return 0; <li>} </ol><em onclick="copycode($('code_1YM'));">复制代码</em>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

论坛开启做任务可以
额外奖励金币快速赚
积分升级了


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

平平安安
TOP
快速回复 返回顶部 返回列表