LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 840|回复: 5

如何设置波特为28800?

[复制链接]
发表于 2006-6-30 06:44:43 | 显示全部楼层 |阅读模式
linux中串口波特宏定义中只有9600,38400等,但没有28800,不只如何解决
发表于 2006-6-30 10:03:48 | 显示全部楼层
直接传整数:%
回复 支持 反对

使用道具 举报

发表于 2006-7-3 22:57:09 | 显示全部楼层
一般不支持,但如果你硬件特殊的话,自己写驱动!
回复 支持 反对

使用道具 举报

发表于 2006-7-4 10:47:30 | 显示全部楼层
常用的波特率用tcsetattr等函数改,特殊波特率需要用ioctl(fd, TIOCGSERIAL, p)和ioctl(fd, TIOCSSERIAL, p)的配合,ioctl的最后一个参数是struct serial_struct *类型,在linux/serial.h中定义。其中base_baud时基准时钟频率,通常是115200,你需要设的是custom_divisor这个值,最终的波特率为base_baud/custom_divisor,比如你需要28800,因为115200/4=28800,所以要设置custom_divisor=4,。
具体过程为,先设置波特率设为38400(tcsetattr),然后用TIOCGSERIAL得到当前的设置,将flags设置ASYNC_SPD_CUST位,设置custom_divisor,最后用TIOCSSERIAL设置。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-6 11:10:17 | 显示全部楼层
我试过了,不过只能在root权限下才能运行,其他用户就不行了,只有在root下运行后,再用其他用户登陆才能正常运行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-6 11:10:23 | 显示全部楼层
我试过了,不过只能在root权限下才能运行,其他用户就不行了,只有在root下运行后,再用其他用户登陆才能正常运行
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表