Usb dp0 dm0 что это

Обновлено: 07.07.2024

AVR микроконтроллеры XMEGA – рекомендации по проектированию USB устройств

  • Соответствие стандарту USB2.0
    - Целостность сигнала
    - Потребляемая мощность
    - Обратное напряжение
    - Пусковый ток
  • Электромагнитная совместимость (EMC/EMI)
  • Рекомендации по проектированию печатной платы
  • Типовые схемы питания

Микроконтроллеры семейства AVR XMEGA компании ATMEL позволяют легко реализовать USB интерфейс. Однако, для проектирования устройств, полностью соответствующих спецификации USB, следует ознакомиться с некоторыми вопросами.

  • Соответствие электрическим требованиям USB 2.0 full speed и low speed
  • EFTB (импульсные и переходные помехи)
  • Электромагнитная совместимость
    USB: Universal Serial Bus– Универсальная последовательная шина
    USB IF: USB Implementation Forum– некоммерческая организация, продвигающая протокол USB
    FS: USB Full Speed– полноскоростной режим (12 Мбит/с)
    LS: USB Low Speed– низкоскоростной режим (1.5 Мбит/с)
    HS: USB High Speed– высокоскоростной режим (480 Мбит/с)
    PCB: Printed Circuit Board– печатная плата
    EFTB: Electrical Fast Transient Burst– импульсные и переходные помехи
    DP or D+: Data Plus differential line– дифференциальная линия Data Plus
    DM or D-: Data Minus differential line– дифференциальная линия Data Minus
    DFLL: Digital Frequency Locked Loop– цифровая автоподстройка частоты
    BOM: Bill Of Materials– спецификация материалов и компонентов

3. Общие требования к аппаратной реализации USB интерфейса

USB интерфейс включает дифференциальную пару линий данных (DP и DM) и линии шины питания (VBUS и GND).

Напряжение VBUS составляет 5 В и используется, при необходимости, для питания присоединяемых устройств.

Напряжение дифференциальной пары (DP/DM) для полноскоростных (FS) и низкоскоростных (LS) устройств составляет 3.3 В, в то время как для высокоскоростных (HS) устройств необходимо более низкое напряжение. В этом документе не рассматривается режим HS, так как в архитектуре XMEGA реализованы только FS и LS модули USB. Напряжение дифференциальной пары 3.3 В в режимах FS и LS находится в диапазоне напряжения питания микроконтроллеров XMEGA. Соответственно, для работы USB модуля, напряжение питания микроконтроллера должно составлять 3.3 В.

3.1. Схемы питания

В соответствии со спецификацией USB протокола, USB устройства делятся на две категории по методу питания — устройства с питанием от собственного источника (self-powered) и устройства с питанием от шины USB (bus-powered).

3.1.1 Устройства с собственным источником питания

Устройства, работающие от собственного источника питания ни при каких режимах работы не допускают потребление тока с шины USB интерфейса.

3.1.2. Устройства с питанием от шины USB

Устройства с питанием от шины USB используют в качестве источника питания 5-вольтовую линию VBUS шины USB интерфейса. Максимально допустимый ток потребления определяется режимом работы USB интерфейса.

3.1.2.1 Режим приостановки (Suspend Mode)

В любой момент времени хост контроллер USB может принять решение о переходе в экономичный режим (режим сна или ожидания) с целью снижения потребляемой мощности. Общий ток потребления устройства в этом режиме не должен превышать 2.5 мА.

  • уменьшить количество подключений к шине питания
  • минимизировать или полностью отключить питание светодиодов
  • снизить мощность потребления внешних компонентов (используя сигналы выбора микросхемы (CS) и перехода в малопотребляющий режим, а также отключением неиспользуемых источников питания)

Примечание: При расчете тока потребления в экономичном режиме, обратите внимание, что линии DP и DM шины USB должны оставаться в активном состоянии.

3.1.2.2 Рабочий режим (Operating Mode)

Максимальное значение тока, которое USB устройство может потреблять от линии VBUS, определяется типом устройства и его состоянием. Не допускается потребление тока более 100 мА до полной инициализации (enumeration process) устройства. Максимально допустимый ток потребления устройства устанавливается в процессе его инициализации. Ток нагрузки устанавливается в диапазоне 0. 100 мА для устройств с низким потреблением (low-power) и 0. 500 мА для устройств с высоким потреблением (high-power) мощности.

3.1.3. Пусковый ток

В спецификации USB 2.0 указано: «максимальная емкость (СRPB), которая может быть подключена к выходному концу кабеля параллельно с одной модульной нагрузкой 100 мА (one unit load) составляет 10 мкФ. Эта емкость представляет собой шунтирующий конденсатор, подключенный к линии VBUS в устройстве, плюс все паразитные емкости между источником питания и устройством». Таким образом, максимальная емкость, которая может быть подключена к линии VBUS не может превышать 10 мкФ, что составляет примерно 50 мкКл.

Из документов USB IF: «Пусковый ток измеряется в течении 100 мсек после момента подключения. Подключение определяется, как момент соединения клемм VBUS и «земля» вилки и розетки. Все случаи превышения тока сверх 100 мА в течении 100 мсек рассматриваются как части процесса возникновения пускового тока. Процесс пускового тока делится на участки. Участком называется интервал в котором ток превышает 100 мА в течение не менее 100 мксек. Таких участков во время 100 мсек может быть несколько. Соответствие или несоответствие определяется по региону с максимальным зарядом»


Рисунок 3.1. Измерение тока подключения

3.1.4. Обратное напряжение

Устройства с собственным источником питания (self-powered) могут функционировать неподключенными к шине USB или не использовать USB интерфейс. В спецификации USB сказано, что на линиях DP, DM или VBUS не должно быть никакого напряжения, пока устройство не подключено к шине USB. Следовательно, устройство с автономным питанием должно иметь механизм определения состояния подключения к шине (через контроль сигнала VBUS) для исключения некорректного подключения подтягивающих резисторов к линиям DP и DM.

3.2. Целостность сигнала.

Электрические требования полноскоростного режима работы USB (full-speed) требуют применения некоторых мер для обеспечения целостности сигнала.

Низкое качество сигнала может привести к неправильному функционированию USB устройства и несовместимости с требованиями USB.

Во время проведения сертификации, качество USB сигнала измеряется с помощью «глазковой» диаграммы. На рисунке 3.2 показаны правильная (соответствующая USB) и неправильная «глазковые» диаграммы. Одними из причин низкого качества сигнала могут быть неправильное проектирование печатной платы или несогласование волновых сопротивлений дифференциальных линий USB.

3.2.1. «Разводка» печатной платы USB.

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


Рисунок 3.3. Типовая схема печатной платы USB.

На рисунке: Разъем USB, RC – фильтр между экраном и землей, ограничитель перенапряжений, дифференциальная пара USB

3.2.2. Выбор источника тактового сигнала.

  • внешний кварцевый резонатор и встроенный ФАПЧ
  • встроенный RC – генератор

Наиболее удобным способом является использование встроенного RC – генератора на 32 МГц, настроенного на 48 МГц. Для достижения точности в 0,25%, встроенный RC – генератор должен быть откалиброван с использованием встроенного цифрового ФАПЧ. Это решение позволяет снизить стоимость покупных компонентов (не требуется внешний кварцевый резонатор)

Примечание: USB модуль микроконтроллеров AVR ATXMEGA требует, чтобы частота контроллера составляла, как минимум, 12 МГц для возможности приема/передачи данных. Убедитесь, что системная частота микроконтроллера (system clock) составляет, как минимум 12 МГц при использовании модуля USB. Эта частота может быть выключена при переводе USB в режим приостановки.

3.3 Подключение к шине.

3.3.1. Типы соединителей.

USB устройство может быть подключено к USB хосту с использованием кабеля с вилкой (captive cable) или USB – кабеля и установленного коннектора.

USB спецификация определяет, что USB устройство может иметь один и только один из ниже перечисленных разъемов:

Применяйте экранированный кабель при использовании кабеля с вилкой (captive cable) в режиме FS и не превышайте длину кабеля 1,5 метра в режиме LS.

3.3.2. Защита от электростатических разрядов

USB устройства могут использоваться без защиты от влияния внешней среды и могут подвергнуться действию разрядов статического электричества.

Несмотря на встроенные в микроконтроллеры ATXMEGA средства защиты от электростатических разрядов рекомендуется усилить защиту линий DP, DM и VBUS используя предназначенные для этого ограничители перенапряжений. Для того, чтобы сократить путь разряда и снизить влияние разряда на всю систему эти ограничители должны быть расположены максимально близко от разъема USB интерфейса.


Рисунок 3.4. Типовая схема защиты от разрядов статического электричества.

На рисунке: ограничители перенапряжений

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

3.3.3. Электромагнитная совместимость.

Следует обратить внимание на подключение экрана USB FS кабеля к плате устройства. Особое внимание должно быть уделено соединению между землей платы и экраном кабеля и коннектора. Непосредственное подключение экрана к земле платы создаст прямое соединение с земли платы на экран кабеля и превратит USB кабель в антенну. Для уменьшения антенного эффекта кабеля USB рекомендуется производить подключение экрана кабеля к земле платы через RC фильтр, как показано на рисунке 3.5. Типовые значения: R = 1 МОм, С = 4.7 нФ.


Рисунок 3.5. Типовая схема соединения экрана и земли платы.

На рисунке: экран кабеля и коннектора, RC-фильтр между землей и экраном, земля платы

4. Типовые USB решения на базе микроконтроллеров XMEGA.

  • имеются встроенные согласующие резисторы
  • имеются встроенные подтягивающие резисторы
  • не требуется внешний кварцевый резонатор, так как микроконтроллеры XMEGA позволяют реализовывать полноскоростные (FS) и низкоскоростные (LS) соединения с использованием внутреннего RC генератора.

4.1. Требования к источнику питания

Рабочее напряжение дифференциальной пары USB, как правило, составляет 3.3 В, соответственно микроконтроллер должен работать при напряжении питания VCC = 3.3 В.

4.2. Питание от шины USB (bus-powered).

При проектировании USB устройств с питанием от шины USB, управление питанием является очень важным. Микроконтроллеры XMEGA имеют много энергосберегающих режимов работы для достижения минимального потребления мощности. Тем не менее, следует внимательно подойти к вопросу выбора внешних компонентов. В соответствии с вышеизложенным, устройства с питанием от шины используют 5-вольтовую линию VBUS для питания всего подключенного устройства. Для формирования напряжения питания 3.3 В для микроконтроллера следует применять регулятор с низком падением напряжения. При выборе регулятора убедитесь, что ток покоя не будет занимать существенную часть всего потребления в 2.5 мА в режиме приостановки.


Рисунок 4.1. Схема соединений при питании от шины USB.

4.3. Обнаружение сигнала VBUS при работе от собственного источника питания.

Устройства с автономным питанием должны иметь возможность обнаружения сигнала VBUS для определения состояния соединения. Для этого можно использовать резисторный делитель напряжения.


Рисунок 4.2. Схема соединений при автономном питании.

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

Я не буду говорить ни о USB2 ни тем более о USB3. Это для меня в пока основном «высокие материи». Давайте поговорим о старом добром USB1.1.
И пожалуйста не смейтесь. На самом деле, если Вы поищите в русскоязычном интернете техническую спецификацию на USB1.1 (я уже не говорю про USB2, а в USB3 наверное Intel вообще не публикует деталей), то вряд ли Вы найдете там что нибудь стоящее. В основном у нас можно найти общие сведения и общие фразы. Нас же, как разработчиков аппаратуры интересуют технические детали стандарта и возможность реализации устройств поддерживающих его.
Еще конкретнее вопрос стоит так: сможем ли мы подключить платку Марсоход через USB к компьютеру?

Здесь же, в этой статье, я попробую описать основные принципы работы USB1.1.
Сразу сделаю оговорку: во-первых, я не очень люблю USB1.1, слишком уж замудрено он придуман (мне кажется можно было сделать проще), во-вторых, естественно, в маленькой статье невозможно описать все. Прошу заметить, что в файле спецификации USB1.1 целых 327 ужасных страниц текста и картинок. Если у Вас есть мысль напечатать это на принтере, то не советую. Реально полезной информации там не очень много, зато «много букав».

Итак, приступим.
В разъеме USB1.1 всего четыре контакта:

  • Земля (4, обычно черный провод в кабеле);
  • DP (3, обычно зеленый провод в кабеле);
  • DM (2, обычно белый провод в кабеле);
  • +5V (1, обычно красный провод в кабеле).

Таким образом, мы видим всего 2 сигнала для обмена данными между хостом (компьютером) и подключаемым устройством. Эти сигналы DP и DM (иногда их обозначают D+ и D-) – это дифференциальная пара. Сигнал передается по ним в противофазе. Это позволяет на приемном конце бороться с помехами.

Как хост определяет, что подключено новое устройство? Довольно просто. На стороне хоста обе линии DP и DM притянуты к GND через резисторы 15кОм. Контроллер хоста проверяет состояние этих линий. Если на обеих линиях ноль, то это значит, что ничего не подключено. На стороне подключаемого устройства один из сигналов притянут через резистор 1,5кОм к напряжению питания. Таким образом, если устройство подключено, то одна из линий либо DP либо DM поднимается в состояние «единица» и хост контроллер видит, что подключено новое устройство.

usb_low_speed

Устройства для USB1.1 бывают двух типов: полноскоростные (full speed) и низкоскоростные (low speed). Посмотрите на эти две картинки:

usb_full_speed

Таким образом, полноскоростные устройства имеют подтягивающий резистор на +5В для сигнала D+, а низкоскоростные устройства – для сигнала D-.

Частота передачи данных для полноскоростных устройств 12МГц, а для низкоскоростных 1,5МГц. Низкоскоростное устройство принимает и посылает данные до 8 байт длиной. Высокоскоростное устройство может посылать или принимать до 64 байт данных.

Особо следует отметить, что эти две линии D+ и D- служат для передачи данных в обе стороны. Как же разрешаются конфликты на линиях, если оба и хост и подключенное устройство захотят передавать данные? Такая ситуация не должна случаться в принципе. Дело в том, что передача полностью управляется хост контроллером компьютера. Если хост контроллера должен прочитать данные с устройства, то он посылает соответствующую команду и переключается в режим приема, а затем ждет пакета от подключенного устройства.

Хост контроллер компьютера ведет опрос подключенных устройств каждую миллисекунду – этот временной промежуток называется фреймом. В начале каждого фрейма хост контроллер посылает специальный SOF (Start Of Frame) пакет для полноскоростных подключенных устройств или SE0 для низкоскоростных устройств.

Если устройство не получает SOF или SE0 некоторое время (несколько фреймов), то это означает, что оно должно уйти в спячку (suspend) и по возможности снизить энергопотребление.

Отдельно нужно обратить внимание на состояние SE0. Это состояние, когда обе линии DP и DM находятся «в нуле». Это состояние используется в 3-х случаях.

Во-первых, после подключения устройства программное обеспечение хоста дает ему команду «сброс» (Reset). Хост опускает обе линии DP и DM в «ноль» на время большее 10мс. Подключенное устройство должно воспринять это действие как общий «сброс».

Во-вторых, как я уже сказал, для низкоскоростных утройств каждый фрейм начинается с состояния SE0 (обе линии DP и DM в нуле) длительностью 2 такта от 1.5МГц.

В-третьих, каждый посланый пакет в любую сторону, от хоста к устройству или наоборот, всегда заканчивается состоянием EOP (End Of Packet), и этот EOP - это тот же самый SE0 – обе линии DP и DM в нуле на протяжении времени 2 бит передачи данных. Для полноскоростных устройств это 2 такта от 12МГц. Для низкоскоростных устройств это 2 такта от 1,5МГц.

ls_usb_signals

Все данные в любую сторону оформлены в виде пакетов. Давайте посмотрим как они выглядят на физическом уровне. Лучше всего изучать по картинкам, а они в спецификации USB1.1 какие-то не очень понятные. Я нарисовал свою картинку.

Здесь видно, что подключено низкоскоростное устройство, так как фрейм начинается с SE0 – по времени 2 бита DP и DM находятся в нуле.

Дальше видно 3 пакета: хост посылает пакет SETUP, посылает пакет DATA0 и получает от устройства пакет ACK. Каждый пакет всегда начинается со специального символа SYN, его значение 0x80. Байт передается младшими битами вперед. Кодировка несколько странная. Каждый нулевой бит кодируется изменением сигнала DP/DM на противоположный. Каждый единичный бит состояние линий не изменяется. Однако есть исключение – если в передаваемом потоке окажется подряд шесть единиц, то состояние линий DP/DM принудительно меняется на противоположный. Этот нулевой бит должен быть удален на приемном конце при приеме пакета. Этот алгоритм называется «bit stuffing». Обратите внимание на завершение пакетов состоянием SE0 – EOP (End Of Packet). Интервал между пакетами должен быть не менее времени 2 бит, на практике обычно больше. Это был физический уровень связи.

Рассмотрим уровень протокола. Здесь все гораздо более запутанно. Без поллитра не разобраться (конечно если Вам больше восемнадцати). Для чего разработчики стандарта сделали все это так сложно я и сам не пойму.

Существуют пакеты нескольких типов. В каждом типе есть под-типы (это мое определение, в спецификации так не говорят).
Итак вот таблица:

Тип пакета Идентификатор пакета PID в шестнадцатеричном виде Описание
Token OUT 0xE1 Используется для передачи адреса устройства и номера канала (endpoint) во время транзакции передачи данных от хоста к уствойству
Token IN 0x69 Используется для передачи адреса устройства и номера канала (endpoint) во время транзакции передачи данных от устройства к хосту
Token SETUP 0x2D Используется для передачи адреса устройства и номера канала (endpoint) во время транзакции передачи данных от хоста к уствойству к специальному управляющему каналу (control pipe)
Token SOF 0xA5 Маркер начала фрейма и номер фрейма
Data DATA0 0xC3 Используется для передачи четного пакета данных
Data DATA1 0x4B Используется для передачи нечетного пакета данных
Handshake ACK 0xD2 Подтверждение о приеме данных
Handshake NAK 0x5A Либо приемник не может принят данных либо передатчик не может послать
Handshake STALL 0x1E Останов endpoint или служебный запрос не поддерживается
Special PRE 0x3C Посылается USB хабу, когда требуется переключить скорость в низкоскоростную

usb_token_pkt

Рассмотрим формат основных пакетов: token, data, handshake.
Не забудьте, что в линии USB пакеты посылаются начиная с символа SYN 0х80, а уж затем вот эти пакеты и завершаются они EOP (2 такта линии DP и DM в нуле).

usb_data_pkt

usb_handshake_pkt

Для token и data еще нужно посчитать контрольные суммы. Их можно считать вот так (написано на языке C):

//функция принимает двухбайтовое слово где адрес и номер канала, считает CRC5 и //вписывает контрольную сумму прямо в нужное место этого слова
USHORT CalcCrc5ForUsbTokenPacket(USHORT a)
ULONG b = 0x1f;
USHORT d = a;
for(int i=0; i<11; i++)
if((d^b)&1)
b >>= 1;
b ^= 0x14;
>
else
b >>= 1;
d >>= 1;
>

b ^= 0xffffffff;
b <<= 11;
a |= b;
return (USHORT)a;
>

usb_dialog

//функция принимает указатель на пакет данных (без PID) и длину пакета
//возвращает CRC16
USHORT CalcCrc16ForUsbDataPacket(char *pData, int len)
USHORT b = 0xFFFF;
for(int i=0; i<len; i++)
char a = *pData++;
for(int j=0; j<8; j++)
if((a^b)&1)
b >>= 1;
b ^= 0xa001;
>
else
b >>= 1;
a >>= 1;
>
>
b ^= 0xffffffff;
return (USHORT)b;
>

Ну а на последок, чтобы Вы оценили все «прелесть» диалога между хостом (компьютером) и подключенным устройством посмотрите на следующую картинку:

Это снимок экрана с программы USB Tracker – устройства позволяющего записывать и анализировать весь трафик между хостом и устройством.

На самом деле, сделать что нибудь с USB не имея подобного инструмента практически нереально. У нас он есть и мы попробуем реализовать простую функцию USB в плате Марсоход. А что у нас получится возможно скоро Вы узнаете.

dp0 очень полезно, и я использую его много, чтобы сделать мои пакетные файлы более портативными.

но сам ярлык кажется мне очень загадочным. что такое

делаешь? делает dp средний диск и путь? делает 0 смотрите %0 путь к пакетному файлу, который включает имя файла?

или это просто странная метка?

Я также хотел бы знать, является ли это документированной функцией или чем-то, что может быть устаревшим.

в командной строке дает справку об этом синтаксисе (который также можно использовать снаружи, это как раз то место, где можно найти справку).

кроме того, замена расширены ссылки на переменные. Теперь можно использовать следующие опции синтаксис:

модификаторы могут быть объединены, чтобы получить составные результаты:

в приведенных выше примерах %I и PATH мочь заменяются другими допустимыми значениями. Синтаксис %

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

есть разные буквы, которые вы можете использовать, как f для "полный путь", d для буквы диска, p для пути, и их можно совместить. %

начало для каждой из этих последовательностей и ряд I обозначает, что он работает на параметр %I (где %0 полное имя пакетного файла, как вы и предположили).

dp0 (это ноль) при ссылке в Windows пакетный файл будет расширен до drive письмо и path этой партии файл.

переменные %0 - %9 относятся к параметрам командной строки пакета файл. %1 - %9 обратитесь к аргументам командной строки после имени пакетного файла. %0 ссылается на сам пакетный файл.

если вы следуете символу процента ( % ) с символом Тильды (

), можно вставить модификатор(ы) перед номером параметра, чтобы изменить путь к переменной. Модификатор d расширяется до привода буква и модификатор p расширяются до пути параметр.

Пример: Предположим, у вас есть каталог на C: называется bat_files, и в этом каталоге находится файл с именем example.летучая мышь. В этом случае, %

dp0 (объединение модификаторов d и p) расширится до C:\bat_files - .

проверить эта статья Microsoft для полного объяснения.

кроме того, проверьте эта ветка форума.

и более ясная ссылка от здесь:

%CmdCmdLine% вернет всю командную строку, переданную CMD.EXE

%* вернет оставшуюся часть командной строки, начиная с первого аргумента командной строки (в Windows NT 4, %* также включает все ведущие пробелы)

dn вернет букву диска %n (n может варьироваться от 0 до 9), Если %n-допустимый путь или имя файла (нет UNC)

pn вернет каталог %n, если %n-допустимый путь или имя файла (без UNC)

nn возвращает имя файла только %n, если %n является допустимым именем файла

xn возвращает расширение файла только %N, если %n является допустимым именем файла

fn возвращает полный путь %N, если %n является допустимым именем файла или каталог

добавить 1

нашел хорошую ссылку для таинственная

строка называется процентов Тильда оператора. Вы можете найти его в таких ситуациях, как: %

ДОБАВИТЬ 2 - 1:12 ВЕЧЕРА 7/6/2018

%1-%9 см. args командной строки. Если это так!--31-->не допустимые значения: путь, %

dp9 все будут расширяться до того же значения, что и %

dp0 . Но если они . --31-- > are допустимые значения пути, они будут расширяться, чтобы собственные водителя/пути.

например: (партия.летучая мышь)

переменная %0 в пакетном скрипте задается имя исполняемого пакетного файла. The

dp специальный синтаксис между % и 0 в основном говорит, чтобы расширить переменной %0 показать букву диска и путь, который дает вам текущий каталог, содержащий пакетный файл!

еще один совет, который бы очень помог, - это установить текущий каталог в другой диск придется использовать %

d0 во-первых, тогда cd %

dp0 . Это изменит каталог на диск пакетного файла, а затем изменится на его папку.

dp0 изменит как диск, так и каталог:)

надеюсь, это поможет кто-то.

dp0 расширяется до текущего пути к каталогу запущенного пакетного файла.

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

когда вы запустите его из командной строки, вы увидите такой результат:

отличный пример из портативной пусковой установки Strawberry Perl:

Не уверен, что отрицательный 1 делает там сам, но он работает удовольствие!

пример был бы хорош - вот тривиальный

в нем перечислены только расширения каждого файла в текущей папке

для более полезных комбинаций переменных (также перечисленных в предыдущем ответе) из приглашения CMD выполните: HELP FOR который содержит этот фрагмент


что означают эти 2 строки (желательно подробно) и что такое wizardmask
procedure TForm1.Timer1Timer(Sender: TObject); begin .


Что означают -> в c++ ?
c++ не использую, но интересует что в c++ означает конструкция -&gt; , к примеру.

Что означают [] ?
MOV ,0B800H ;установка START_VRAM на видеопамять Что означают квадратные скобки в START_VRAM.

означает что из значения будут удалены обрамляющие кавычки.

Конкретно %0 - это имя самого батника.

dp это модификатор, который преобразует адрес файла в формат D - диск, P - путь, т.е. Диск:\путь\

pushd - это аналог CD /D - перехода в указанный каталог
с дополнительным функционалом:

если в коде позже написать команду popd - то произойдет переход в папку, в которой мы находились до момента использования команды pushd (как, Вы правильно заметили pushd запоминает путь к предыдущему каталогу).

Добавлено через 2 минуты

От ненужных пробелов в командах IF , SET лучше принять за правило - сразу избавляться:
От ненужных пробелов в командах IF, SET лучше принять за правило - сразу избавляться: Потому, что они не игнорируют пробелы при сравнении/присвоении.

Что означают !=
Помогите разобраться, что означает знак !=

Что означают операторы % и /=
вроде мелочь, а нигде не могу найти( for(; iDec &gt; 0; iDec/=numbase) < int rem = iDec %.


Что означают 3 слэша ///?
Решил почитать текст включаемых файлов и обнаружил там в больших количествах вот такой символ.

Что означают замочки?
возле жд есть замок что он значит?

Что означают данные
Здравствуйте. подскажите что могут означать данные следующего характера? DWORD.

Что означают записи в []
Ребят, вот не однократно уже видел записи в коде в . Например: Что означают эти скобки, в.

Читайте также: