免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2133 | 回复: 6
打印 上一主题 下一主题

关于LINUX下串口通信求助??急!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-06 11:28 |只看该作者 |倒序浏览
在LINUX下open("/dev/ttyS0",9600); 失败了,为什么?
但我用 ehco "test"  >/dev/ttyS0  却能在我WINDOW主机中用串口专家接收到数据  为什么???

论坛徽章:
0
2 [报告]
发表于 2006-09-06 12:38 |只看该作者
你用的open()是自己写的?贴出代码呀
linux的open()好像不带波特率

论坛徽章:
0
3 [报告]
发表于 2006-09-06 12:42 |只看该作者
串口是这样初始化的:

  1. // stalk_serial_init: initialize serial port
  2. // return: open file descriptor
  3. int stalk_serial_init(char* dev, unsigned int speed)
  4. {
  5.     int fd;
  6.     struct termios term;

  7.     if ( (fd = open(dev, O_RDWR | O_NOCTTY | O_NDELAY)) < 0)
  8.         errx(1, "open serial device error");
  9.     if (fcntl(fd, F_SETFL, 0) < 0)
  10.         errx(1, "fcntl error");
  11.     if (tcgetattr(fd, &term) < 0)
  12.         errx(1, "tcgetattr error");
  13.     term.c_cflag &= ~(CSIZE | CSTOPB);
  14.     term.c_cflag |= (CS8 | CREAD | CLOCAL | CRTSCTS);
  15.     term.c_iflag = 0;
  16.     term.c_oflag = 0;
  17.     term.c_lflag = 0;
  18.     term.c_cc[VMIN] = 1;
  19.     term.c_cc[VTIME] = 0;
  20.     cfsetispeed(&term, speed);
  21.     cfsetospeed(&term, speed);
  22.     if (tcsetattr(fd, TCSANOW, &term) < 0)
  23.         errx(1, "tcsetattr error");

  24.     return fd;
  25. }
复制代码


其中 speed 是串口速度,值为 termios.h 中宏定义的诸如 B9600 之类的东西

[ 本帖最后由 isjfk 于 2006-9-6 12:46 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2006-09-06 15:00 |只看该作者
对,忘记说了,那个open是我自己写的,问题我已经找到了,但搞不懂:
1。在root用户下执行可打开串口,但在我自己的普通用户下打开串口总是失败
2。好象串口打开后用colse()关闭不了,因为我每次运行结束后再运行时候,程序就死在那里,只能强制结束???? 然后重新启机器后就可以了。

论坛徽章:
0
5 [报告]
发表于 2006-09-06 17:33 |只看该作者
普通用户在自己的组里加uucp这个组,就可以了

论坛徽章:
0
6 [报告]
发表于 2006-09-08 08:26 |只看该作者
呵呵,问题都解决了 正如上面所说的。

论坛徽章:
0
7 [报告]
发表于 2006-09-08 09:03 |只看该作者
shit,transient
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP