大家拿串口485 一般都是怎么实现的,我是在内核串口驱动里面增加了一个.ioctl = serial_rs485_ioctl, 函数接口,然后应用程序里
rs485conf.flags = SER_RS485_ENABLED;
rs485conf.delay_rts_after_send = 1000;
rs485conf.delay_rts_before_send = 1000;
ioctl(fd, TIOCSRS485, &rs485conf);
来开启串口的485 功能。功能到是能开启,但是发现会影响调试串口的输入,TAB 键不好使了,删除键也变了,进入这个函数打印发现每次调试串口终端输入都会有这些命令:
[ 17.808074] serial_rs485_ioctl1053 - ######### port_line 0, cmd 0x5401
[ 17.817046] serial_rs485_ioctl1053 - ######### port_line 0, cmd 0x5401
[ 17.825895] serial_rs485_ioctl()1053 - ######### port_line 0, cmd 0x5401
[ 17.835216] serial_rs485_ioctl()1053 - ######### port_line 0, cmd 0x540b
[ 17.854681] serial_rs485_ioctl()1053 - ######### port_line 0, cmd 0x5401
[ 17.863585] serial_rs485_ioctl()1053 - ######### port_line 0, cmd 0x5401
[ 17.887645] serial_rs485_ioctl()1053 - ######### port_line 0, cmd 0x5401
[ 17.896773] serial_rs485_ioctl()1053 - ######### port_line 0, cmd 0x5402
[ 17.907343] serial_rs485_ioctl()1053 - ######### port_line 0, cmd 0x5401
经查这个些命令的是这个意思
#define TCGETS 0x5401
#define TCSETS 0x5402
#define TCSETSW 0x5403
#define TCSETSF 0x5404
#define TCGETA 0x5405
#define TCSETA 0x5406
#define TCSETAW 0x5407
#define TCSETAF 0x5408
#define TCSBRK 0x5409
#define TCXONC 0x540A
#define TCFLSH 0x540B
#define TIOCEXCL 0x540C
#define TIOCNXCL 0x540D
#define TIOCSCTTY 0x540E
#define TIOCGPGRP 0x540F
#define TIOCSPGRP 0x5410
#define TIOCOUTQ 0x5411
#define TIOCSTI 0x5412
#define TIOCGWINSZ 0x5413
#define TIOCSWINSZ 0x5414
#define TIOCMGET 0x5415
#define TIOCMBIS 0x5416
#define TIOCMBIC 0x5417
#define TIOCMSET 0x5418
哪位有什么好的解决方法,多谢。
离线
要实现驱动自动控制gpio收发吗?
平时485 控制信号为低,发送拉高就行了,发送完再拉低。现在就是知道增加一个ioctl 函数怎么会影响调试串口的输入了。
离线
app控制gpio?
没有啊,驱动自己控制啊。发送完就拉低485控制管脚。
离线