[Devel] [Задача 7567] Проблемы CAN на tscpu
Evgeny Sinelnikov
sin на etersoft.ru
Чт Авг 25 01:22:37 MSD 2011
25 августа 2011 г. 1:16 пользователь <bugs на lists.etersoft.ru> написал:
> http://bugs.etersoft.ru/show_bug.cgi?id=7567
>
> Александр Морозов <amorozov на etersoft.ru> changed:
>
> What |Removed |Added
> ----------------------------------------------------------------------------
> Hours Worked| |0.08
>
> --- Comment #3 from Александр Морозов <amorozov на etersoft.ru> 2011-08-25 01:16:31 MSD ---
>> CanException: CAN device write error #16 [Error: Device or resource busy]
> А это точно can200? Просто в его исходниках EBUSY не встречается.
>
Это вывод на консоль при использовании UCan2.
SimpleCanDeviceCan200.cc:
...
// -------------------------------------------------------------------------
int SimpleCanDeviceCan200::sendMessage( Message* msg )
{
CAN_data data;
int res;
if( msg->len>8 )
msg->len=8;
data.type = PeliCAN;
data.id = msg->cob_id.w;
data.rtr = (msg->rtr&0x01)?1:0;
data.dlc = msg->len;
memcpy(data.data, msg->data, data.dlc);
res = write(wfd, &data, sizeof(data));
int write_errno = errno;
if( res < 0 )
{
CAN_status_t status;
getStatus(&status.byte);
if( status.bit.bs )
setBusOn();
if( write_errno == EAGAIN )
throw CanTimeOut();
ostringstream err;
err << " CAN device write error #" << write_errno
<< " [Error: " << strerror(write_errno) << "]";
throw CanException(err.str());
}
if( res != sizeof(data) ) {
CanHelpers::Debug() << "sendMessage (msg with len " << sizeof(data)
<< "), but wrote " << res << " bytes only.\n";
throw CanException(" Not all data are sent");
}
return res;
}
--
Sin (Sinelnikov Evgeny)
Подробная информация о списке рассылки Devel