И ещё. При вводе цифры скорее всего будут использоваться символы ASCII, значение которых не будет равно самой цифре (например, цифра 5 в ASCII таблице имеет значение 53 или 0x35 в шестнадцатеричной системе). Поэтому введенное число нужно сравнивать с '0', '5' и '9'. Использование кавычек в записи сообщает компилятору, что следует рассматривать параметр как символ, а не как число. Ну или сразу писать ASCII код цифры в своей программе.
rromm: для того, чтобы не возникло ситуации, когда ноутбук не способен обеспечить подключаемое устройство питанием.
ни ноутбук, ни зарядка обычно не регулируют отдаваемый ток. всё на совести устройства.
rromm: А вот для этого и требуется инициализация USB и запрос на потребление конкретного тока. Не видели сообщений вида "USB порт был отключён из-за превышения потребляемого тока"? Это как раз тот случай, когда девайс запросил больше, чем ноутбук может дать.
rromm: Почему не должно быть? А если плоскую железку вставить в гнездо USB? Железка в данной ситуации - девайс, который "потребляет" 30 ампер. Обычная защита от КЗ. Разница лишь в пороге срабатывания. Где-то на 2А вырубится, где-то на 5
rromm: Не обязательно сгореть. Например, повербанки обычно выключаются в таком случае. У меня есть и ноутбук, который сразу выключается, если вставить пробу, что 2 ампера жрёт (большой проволочный резистор с штекером). Представьте, что человек вставляет ваше устройство в свой ноутбук, а он пых - и вырубается.
Так вот чтобы определить тот максимум, что они могут выдать, и нужно следить за просадкой напряжения. Иначе вы попробуете брать 2А от порта, что может только 0.5, порт может выйти из строя (равносильно КЗ).
Взял продвинутый USB мультиметр и поэкспериментировал с различными зарядками и стройствами. Максимальное потребление смартфона получилось 1.3 А, зарядки на 2А не просели вообще, остались на 5.2В. Самая слабая зарядка просела до 4.4В, телефон продолжал потреблять 0.8А.
Другое устройство переставало увеличивать потребляемый ток при снижении напряжении до 5В. Мне это кажется наиболее корректным поведением - увеличивать потребляемый ток, пока зарядка не начнет просаживаться по вольтажу
1. Не совсем так. Из физики, тепловыделение пропорционально квадрату силы тока. Именно потому повышают напряжение - больше энергии можно передать при тех же амперах (и тому же нагреву)
2. Стандарт USB не предполагал, что его будут использовать для зарядки устройств. Чтобы не повредить оконечное оборудование, если телефон не уверен, что на другом конце зарядное устройство, он следует стандарту и потребляет 0.5А. Если вы уверены, что ваше устройство не будут подключать к чему-то, что может сдохнуть, если начать высасывать большой ток, делайте любой требуемый ампераж.
Что до инициализации - именно. По стандарту, порт не должен давать больше 100мА без инициализации. Производители материнок, хабов и прочего давно на это забили и дают полный ток, что могут дать.
5. Качественный разъём и штекер нормально тянут 2А. Больше - не стоит рисковать.
6. Это же не сообщающиеся сосуды. Контроллер microUSB порта в телефоне мониторит состояние разъема и напряжение на контактах. Появились 5 вольт - ок, включаем режим заряда, пытаемся определить, кто на том конце, устанавливаем нужный ток потребления. Появилось сопротивление без напруги - подаем 5В, пробуем инициализировать OTG устройство. При этом телефон может совсем не ожидать, что в него воткнут OTG вместе с питанием. Может включиться режим зарядки, а устройство не распознается. Может наоборот, подключится устройство, но не пойдёт заряд. Поведение не определено и зависит от конкретной модели. Мне удавалось заставить телефон заряжаться при подключенной мышке, но не всегда. Чаще он не заряжался, но мышь работала.
Александр Синицын: при установке XP была фича с отключением ACPI. На Win7, насколько я знаю, такой штуки нет. Попробовать обновить BIOS можно, гибернация связана с управлением питанием, как и ACPI.
Смочить место пайки хорошим флюсом - припой соберется в капли. Если припоя слишком много и он на двух контактах сразу - снять излишки жалом паяльника (если жало не смачивается флюсом - залудить) или оплеткой.
В PHP вообще не разбираюсь, но мне кажется, что вы пытаетесь использовать строки как числа. Соответственно, <= "150" это сравнивание строк, требуется предварительное преобразование в число. Аналогично с умножением на "1.02" и "1.5".
Или же PHP умный и автоматически делает нужное преобразование?