- 积分
- 3
贡献14
飞刀0 FD
注册时间2015-8-18
在线时间0 小时
扫一扫,手机访问本帖
|
linux 内核版本: 3.0.1
从原理图可看出OK6410的第一、二个串口提供了CTS/RTS脚位设置。
自己在PC linux上写了一个测试程序,先在PC上确认可以设置RTS与读取CTS后,将程序移植到OK6410上操作串口設/dev/ttySAC1,串口可以正确收发数据,但手动去设置RTS(量测RTS的硬件脚位)或读取CTS(一直读到0 / low)皆无反映。
同上述,以telnet联机,操作串口 /dev/ttySAC0,CTS/RTS的设置/读取也一样无效。
请问是我的CTS/RTS操作有问题,还是串口驱动对CTS/RTS的操作无效?
串口的RTS/CTS操作如下:
// 设置RTS信号为低:
void set_rts_high(int fd)
{
int status;
ioctl(fd, TIOCMGET, &status);
status &= ~TIOCM_RTS;
ioctl(fd, TIOCMSET, &status);
}
//设置RTS信号为高
void set_rts_low(int fd)
{
int status;
ioctl(fd, TIOCMGET, &status);
status |= TIOCM_RTS;
ioctl(fd, TIOCMSET, &status);
}
//CTS信号获取;
int get_cts(int fd)
{
int status;
ioctl(fd, TIOCMGET, &status);
if (status & TIOCM_CTS)
return 1;
return 0;
}
|
|