如何区分发射信号还是接收
关键代码:
saio.sa_flags|=SA_SIGINFO;
fcntl(fd,F_SETSIG,SIGIO);
信号处理函数:
void signal_handler_IO(int status,siginfo_t *info,void *context)
{
int flag;
flag = info->si_code;
}
这里的flag就可以区分是POLL_IN还是POLL_OUT,否则即使通过串口往外发送数据,也会导致进入自己的接收函数。
发送0x0D会变成0x0A
串口属性配置问题,因为串口设置中会存在从NL-CR和CR-NL的映射,即串口把回车和换行当成同一个字符
newtio.c_lflag&=~ICRNL;