rs 232 DB9引脚切换代码的​​问题

时间:2014-04-22 04:11:21

标签: c linux serial-port

在下面的代码中

int ctr,fd,j1;
fd =open("/dev/ttyS0", O_RDWR | O_NOCTTY);
    j1=ioctl(fd, TIOCMGET, &ctr);
if(ctr & TIOCM_DTR)
        {
            ctr&=~TIOCM_DTR;            
            j2=ioctl(fd,TIOCMSET,&ctr);
        }
else
        {   
            ctr=ctr|TIOCM_DTR;          
            j4=ioctl(fd,TIOCMSET,&ctr);
        }

1)有人可以解释一下ctr = ctr | TIOCM_DTR呢?它只是改变了DTR引脚的状态吗?因为ctr只是一个intiger而TIOCM_DTR有点,对吧?

2)我已将DTR引脚配置为切换,但在测试时,即使RTS引脚也在切换。

3)现在,如果我在切换之间设置一个时间段,如果时间段介于1毫秒到50毫秒之间,超过50毫秒,则在DSO中查看的时间段在50毫秒到100毫秒之间变化甚至在微秒范围内也有一段时间。(切换之间的这段时间是通过不同的定时器程序生成的,这样每当定时器溢出时,调用切换程序)

1 个答案:

答案 0 :(得分:0)

1)" ctr = ctr | TIOCM_DTR"将ctr的相关位设置为1.