У меня есть встроенная плата Atmel ARM926, для которой я создал последовательный USB-носитель для получения данных от FTDI как USBtty0. Эта плата также имеет DBGU последовательного порта, который используется в качестве консольного терминала, который обычно работает на 230 КБ. Когда я настраиваю порт USBtty0 на требуемые 115 КБ, DBGU, очевидно, также меняется на 115 КБ.
if( m_fdELMdev = open(m_ELMdevice, O_RDWR | O_NOCTTY )< 0)
{//error
}
else
{
// Configure the port
tcgetattr(m_fdELMdev, &dev_settings);
dev_settings.c_cflag |= B115200;
cfmakeraw(&dev_settings);
}
Может кто-нибудь сказать мне, что я могу делать неправильно?
Это фрагмент моего устройства.
/dev/tty c 640 0 0 4 0 0 1 4
/dev/tty c 640 0 0 5 0 - - -
/dev/ttyGS c 640 0 0 252 0 - - -
/dev/ttyS c 640 0 0 4 64 0 1 3
/dev/watchdog c 640 0 0 10 130 - - -
/dev/zero c 640 0 0 1 5 - - -
/dev/ttyACM0 c 640 0 0 166 0 - - -
/dev/ttyUSB0 c 640 0 0 188 0 - - -
Кроме того, я иногда вижу некоторые «Прерванные системные вызовы» из списка избранных. Как мне нужно справиться с этим? Повторять ли выбор, пока не получу какие-либо данные? Тогда что, если я никогда не получу никаких данных?
enter code here
do
{
iret = select(m_fdELMdev + 1, &fdrefid, NULL, NULL, &porttime);
switch(iret)
{
case READ_TIMEOUT:
ierr = -1;
break;
case READ_ERROR:
g_dbg->debug("CACS_Elm327::Select error:%s (%d)\n",strerror(errno), errno);
ierr = -1;
break;
default:
iret = read(m_fdELMdev, data, ilen);
g_dbg->debug("CACS_Elm327::Readport_ELM:read %s %d\n", data, iret );
break;
}
}while((ierr == 0) && (iret<ilen) );
Задача ещё не решена.