Простая стопка хоста USB

Если RHS правила может вызвать исключение, то автор правила должен написать RHS таким образом, чтобы обработать исключение.

Это также связано с тем, что исключение может иметь место в любой точке тела RHS; остальные операторы RHS могут упустить шанс обновить рабочую память новым состоянием после операций, которые могли вызвать исключение, оставив рабочую память в несовместимом состоянии с точки зрения бизнеса / домена / знания, так как в следующем примере:

rule "Process order"
when
  $o : Order()
then
  processSomeOrder($o); // some exception might occur here
  ...
  delete($o);
end

Без обработки исключений это может привести к многократной обработке заказа, всегда заканчивающемуся исключением снова и снова; в зависимости от точки зрения бизнеса / домена / знания, правило может быть пересмотрено следующим образом:

rule "Process order"
when
  $o : Order()
then
  try {
    processSomeOrder($o); // some exception might occur here
  } catch(Exception e) {
    forwardOrderToHumanForManualProcessing($o, e);
  }
  ...
  delete($o);
end

В этом примере зависит от проекта домена / бизнеса, чтобы решить, как обрабатывать потенциальное исключение, возникающее во время стандартная обработка, а в случае исключения принимается еще одна бизнес-операция. В любом случае состояние WM управляется последовательно.

8
задан selwyn 17 February 2009 в 09:24
поделиться

3 ответа

Я использовал стек RTUSB-32 от Вовремя. Это - маленькая стопка следа и было легко интегрироваться в нашу среду, и документация хороша. Они абстрагируют приятно нуждавшийся в поддержке так, чтобы это было полностью платформой и нейтральной ОС и имело относительно небольшое количество рычагов, которые необходимо предоставить ему - т.е.: Это хорошо инкапсулируется.

Так как Вы получаете весь источник, Вы будете видеть, что код не является наиболее хорошо созданным кодом в мире, конечно, но он может быть дешифрован без большой работы в случае необходимости. В любом случае это в основном "просто работает" без проблемы. Мы имели его работающий в некоторых продуктах в течение нескольких лет теперь и только столкнулись с одной проблемой совместимости со стеком, где это не вполне делало автоматического обнаружения совершенно верно с определенным типом концентратора USB 2.0. Мы отправили им образец концентратора, и у них был патч для него в течение нескольких дней. Трудно разбить это. В целом, я считаю это хорошим значением, и конечно сбивает нахождение для записи вещи с нуля.

1
ответ дан 6 December 2019 в 01:40
поделиться

Это было бы настолько легче, если бы Ваше устройство не должно было быть хостом :-P, потому что Atmel обеспечивает исходный код в качестве примера для USB-устройств. На вашем месте я изучил бы использование одного из любящих USB RTOSs на сторонней странице Atmel AT91SAM, которая могла бы повлечь за собой стек USB от jungo, как предложил Ilya.

Если Вы действительно пишете, что Ваш собственный драйвер OHCI, libusb мог бы быть полезным как реализация верхних уровней стека USB.

0
ответ дан 6 December 2019 в 01:40
поделиться

В первую очередь, если я помню правильно, что AT91SAM9261S имеют контроллер usb OHCI на борту, и необходимо реализовать, по крайней мере, простой драйвер хост-контроллера (можно смотреть на реализации Linux). В зависимости от типов передачи Ваше устройство будет использовать его, могло бы быть не очень твердым - к очень трудно :) Нет никакого тривиального способа реализовать стопку usb. После реализации драйвера контроллера необходимо будет заботиться, часть перечисления USB-устройства смотрит на Главу 9 спецификации USB. И только после этого можно начать реализовывать логику устройства.

Для упрощенного варианта использования существует много кода, который мог быть опущен, но без хорошего usb фон тверд решить то, что релевантно и что не.

Любой путь при поиске коммерческого решения моя компания, может обеспечить тот.

1
ответ дан 6 December 2019 в 01:40
поделиться