void Comm::serialDeviceInit(Args& args) { struct termios termio; const char* deviceName = args.getSerialPortName(); const char* baudRate = args.getBaudRate(); if ((fd_ = open(deviceName, O_RDWR|O_NOCTTY)) == -1) { Args::dieMessage( Args::ExitCommFailure, "open of %s failed: %s\n", deviceName, strerror(errno)); } if (tcflush(fd_, TCIFLUSH) == -1) { Args::dieMessage( Args::ExitCommFailure, "tcflush failed: %s\n", strerror(errno)); } memset(&termio, 0, sizeof (termio)); termio.c_cflag = getBaudRateFlag(baudRate) | CS8 | CLOCAL | CREAD; termio.c_iflag = IGNPAR; termio.c_oflag = 0; termio.c_lflag = 0; termio.c_cc[VMIN] = 0; termio.c_cc[VTIME] = 1; if (tcsetattr(fd_, TCSANOW, &termio) == -1) { Args::dieMessage( Args::ExitCommFailure, "tcsetattr failed: %s\n", strerror(errno)); } }