В дополнение к времени, которое фактически требуется для передачи данных, один вызов на transferIn()
должен проделать большую работу по настройке хоста для приема данных с устройства. Даже если предположить, что веб-браузер и операционная система вводили нулевую задержку, USB предоставляет возможности передачи только каждые 1 мс (для высокоскоростных устройств) или 125 мкс (для высокоскоростных устройств). Трюки для увеличения скорости передачи данных:
Отправка transferIn()
вызовов с буферами, намного превышающими размер пакета конечной точки. Это меняет задержку на пропускную способность. Передача не будет завершена, пока буфер не заполнится или короткий пакет не будет получен, но хост-контроллер не будет тратить время на ожидание, пока операционная система попросит устройство запросить дополнительные данные.
Параллельно отправить несколько вызовов transferIn()
. Это добавляет дополнительные издержки, но решает проблему задержки, сообщая о завершении передачи с более высокой степенью детализации. Этот метод обычно используется для конечных точек, которые доставляют события. Одновременное выполнение по крайней мере двух передач в полете гарантирует, что следующее событие будет доставлено немедленно, вместо того чтобы ждать, пока новый запрос на передачу будет настроен после обработки первого события.
Этот совет также относится к transferOut()
.
С Java6 Изображение PNG должно использоваться для TrayIcon
, но, как упомянуто в этом ТАК вопрос, проверьте:
java.awt.Image
)