[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