Как работает функция Serial.available() в Arduino. Чем отличается ее поведение на платах Teensy. Какие особенности нужно учитывать при работе с Serial на Teensy. Как правильно реализовать чтение данных из последовательного порта на Teensy.
Особенности работы Serial.available() на платах Arduino и Teensy
Функция Serial.available() используется в Arduino для проверки наличия доступных для чтения данных в буфере последовательного порта. Однако ее поведение на стандартных платах Arduino и платах Teensy имеет некоторые отличия, которые важно учитывать при разработке скетчей.
Работа Serial.available() на стандартных платах Arduino
На платах Arduino Uno, Mega и других, использующих отдельный чип для USB-Serial преобразования, функция Serial.available() обычно возвращает количество отдельных байтов, полученных через последовательный порт. Это связано с тем, что данные передаются побайтно через аппаратный UART.
Типичный код для чтения данных на Arduino выглядит так:

void loop() {
while (Serial.available()) {
char c = Serial.read();
// Обработка полученного символа
}
// Другие задачи скетча
}
Такой подход хорошо работает на стандартных платах Arduino, так как Serial.available() будет возвращать true для каждого полученного байта.
Особенности Serial.available() на платах Teensy
На платах Teensy ситуация несколько иная. Teensy использует прямое USB-соединение без промежуточного чипа, что позволяет получать данные целыми пакетами USB. Это приводит к следующим особенностям:
- Serial.available() может сразу вернуть большое количество доступных байтов (до 64 или 512 в зависимости от модели Teensy)
- Последующие вызовы Serial.available() могут вернуть 0, даже если еще есть непрочитанные данные
- Нельзя полагаться на то, что Serial.available() будет возвращать true для каждого отдельного байта
Правильная реализация чтения данных на Teensy
Чтобы корректно читать данные из последовательного порта на платах Teensy, рекомендуется использовать следующий подход:

void loop() {
int bytesRead = 0;
while (Serial.available() && bytesRead < MAX_BYTES) {
char c = Serial.read();
// Обработка полученного символа
bytesRead++;
}
// Другие задачи скетча
}
Здесь мы вводим счетчик прочитанных байтов и ограничиваем количество читаемых за один раз данных. Это позволяет:
- Гарантированно прочитать все доступные данные
- Не застрять в цикле чтения надолго, если пришло много данных
- Дать возможность выполниться другим задачам скетча
Буферизация данных при передаче через USB
Еще одна особенность работы с последовательным портом на Teensy связана с буферизацией данных при передаче через USB. В отличие от стандартных плат Arduino, где данные передаются побайтно, на Teensy используются USB-пакеты.
При отправке данных с компьютера на Teensy могут возникнуть следующие ситуации:
- Данные могут прийти одним большим пакетом
- Данные могут быть разбиты на несколько мелких пакетов
- Некоторые операционные системы могут отправлять каждый байт отдельным пакетом
Это приводит к тому, что нельзя полагаться на ожидание конкретного количества байтов с помощью Serial.available(). Более надежный подход - читать данные по мере их поступления, обрабатывая их независимо от размера пакетов.

Пример надежного чтения данных на Teensy
Рассмотрим пример реализации чтения 11-байтового сообщения, начинающегося с символа '@':
bool readMessage() {
static int count = 0;
static char buffer[11];
while (Serial.available()) {
char c = Serial.read();
if (c == '@') {
// Начало нового сообщения
count = 0;
}
if (count < 11) {
buffer[count++] = c;
if (count == 11) {
// Получено полное сообщение
processMessage(buffer);
return true;
}
}
}
return false; // Полное сообщение еще не получено
}
void loop() {
if (readMessage()) {
// Обработка полученного сообщения
}
// Другие задачи скетча
}
Этот код имеет следующие преимущества:
- Работает корректно независимо от размера USB-пакетов
- Не блокирует выполнение других задач
- Корректно обрабатывает начало нового сообщения
- Может быть легко адаптирован для сообщений разной длины
Оптимизация передачи данных с Teensy на компьютер
При отправке данных с Teensy на компьютер также стоит учитывать особенности USB-протокола для оптимизации производительности:

- По возможности группируйте данные в пакеты размером до 64 байт (для Teensy 2 и 3) или до 512 байт (для Teensy 4)
- Используйте функцию Serial.send_now() для немедленной отправки неполного буфера, если требуется низкая задержка
- Избегайте отправки одиночных байтов, если это возможно
Пример оптимизированной отправки данных:
const int BUFFER_SIZE = 64;
char sendBuffer[BUFFER_SIZE];
int bufferIndex = 0;
void sendData(char* data, int length) {
for (int i = 0; i < length; i++) {
sendBuffer[bufferIndex++] = data[i];
if (bufferIndex == BUFFER_SIZE) {
Serial.write(sendBuffer, BUFFER_SIZE);
bufferIndex = 0;
}
}
}
void flushBuffer() {
if (bufferIndex > 0) {
Serial.write(sendBuffer, bufferIndex);
Serial.send_now();
bufferIndex = 0;
}
}
Такой подход позволяет эффективно использовать USB-пакеты и снизить накладные расходы на передачу данных.
Заключение
Работа с последовательным портом на платах Teensy имеет свои особенности, связанные с прямым USB-подключением. Понимание этих особенностей позволяет создавать более эффективные и надежные скетчи. Ключевые моменты, которые следует учитывать:

- Serial.available() может вести себя иначе, чем на стандартных платах Arduino
- Необходимо учитывать возможность получения данных пакетами разного размера
- При отправке данных стоит оптимизировать использование USB-пакетов
- Правильная реализация чтения и записи данных повышает надежность и производительность скетча
Применяя эти принципы, вы сможете максимально эффективно использовать возможности последовательной связи на платах Teensy в ваших проектах.
К сожалению запрашиваемая вами страница в настоящий момент недоступна
НДС и налог на прибыль В программе:
- из чего состоит база по НДС?
- выбор ставки НДС
- курсовые разницы за 2022 год
Подробности
Изменения в трудовом законодательстве в 2023 году Семинар Кофанова Д. И.
- Новые формы ЕФС-1, трудовой книжки и т.д.
- Новая отчетность со службой занятости
- Изменения в законе о персональных данных и т.д.
Подробности
Отчетность за I квартал 2023: что важно знать?
- Как оспорить решения налоговиков?
- Налоговые вычеты по НДС
- Что говорят ФПСС РФ касательно ГПД?
Посмотреть программу
Работа с договорами: все, что нужно знать бухгалтеру
- важная нормативка,
- новые правовые конструкции,
- особенности отдельных видов договоров
Подробности
Квартальная отчетность по НДФЛ и страховым взносам Семинар Морозовой И. В.
- Узнаете о важных изменениях в НК РФ в 2023
- Научитесь применять их на практике
- Подготовитесь к проверкам
Начать подготовку
Новые ФСБУ на практике: понятия и правила работы
- ФСБУ 6/2020
- ФСБУ 26/2020
- ФСБУ 25/2018
- ФСБУ 27/2021
- ФСБУ 14/2022
Посмотреть программу
Сдаем годовую отчетность с Куликовым А.А.
- что подготовить перед
составлением отчетности?
- изменения по НДС
- объединение ПФ РФ и ФСС РФ
и многое другое
Посмотреть программу
УСН в 2023 году В программе:
- особенности применения,
- как правильно перейти,
- вопросы дробления бизнеса,
- УСНО для ИП,
- АСН
Подробности
Классный подарок бухгалтеру! Антистресс для ключевого сотрудника
Подарите важному для вашего бизнеса человеку:
- полезный семинар, который он выберет сам
- целый день вне офиса в отличной компании
- прекрасный обед в ресторане
Подробности
Консультации для юрлиц Помощь рядом!
Назрел вопрос к налоговому консультанту или юристу?
Задайте его он-лайн!
Отвечают эксперты Учебного Центра М-СТАЙЛ
Задать вопрос экспертам
НДС и налог на прибыль В программе:
- из чего состоит база по НДС?
- выбор ставки НДС
- курсовые разницы за 2022 год
Записаться
НДС и налог на прибыль в 2023: что важно знать?
- признание курсовых разниц в 2023 году
- изменение в сроках уплаты налогов
- кто и как может быстро возместить НДС?
Записаться
Изменения в трудовом законодательстве в 2023 году Семинар Кофанова Д. И.
- Новые формы ЕФС-1, трудовой книжки и т.д.
- Новая отчетность со службой занятости
- Изменения в законе о персональных данных и т.д.
Записаться
Отчетность за I квартал 2023: что важно знать?
- Как оспорить решения налоговиков?
- Налоговые вычеты по НДС
- Что говорят ФПСС РФ касательно ГПД?
Записаться
Как изменилось трудовое законодательство и что с этим делать
- ФСС + ПФР = СФР
- Новые бланки трудовых книжек
- Спецоценка условий труда и многое другое
Записаться
Отчетность за I квартал 2023 года с учетом нововведений
- ЕНС и ЕНП: как это работает на самом деле?
- НДС: новации 2023 г.
- Налог на прибыль и новые расходы и т.д.
Записаться
Видеосеминар о договорах для бухгалтеров
- права сторон по договору
- согласование, исполнение, расторжение договоров
- риски различных видов договоров
Записаться
Работа с договорами: все, что нужно знать бухгалтеру
- важная нормативка,
- новые правовые конструкции,
- особенности отдельных видов договоров
Записаться
Заработная плата Семинар с Гейцом И. В.
- новый МРОТ
- обновление НК РФ
- новые расчеты
Записаться
Квартальная отчетность по НДФЛ и страховым взносам Семинар Морозовой И.В.
- Узнаете о важных изменениях в НК РФ в 2023
- Научитесь применять их на практике
- Подготовитесь к проверкам
Записаться
Упрощенная система налогообложения: новшества 2023 года
- ЕНП
- Практика применения главы 26.2 НК РФ 2023 г.
- Автоматизированная УСН и многое другое
Записаться
Как применять новые ФСБУ? Семинар с Новиковой Т.А.
- Новое ФСБУ 14/2022 "Нематериальные активы"
- ФСБУ 27/2021
- ФСБУ 25/2018
- ФСБУ 26/2020
- ФСБУ 6/2020
Записаться
Новые ФСБУ на практике: понятия и правила работы
- ФСБУ 6/2020
- ФСБУ 26/2020
- ФСБУ 25/2018
- ФСБУ 27/2021
- ФСБУ 14/2022
Записаться
Сдаем годовую отчетность с Куликовым А. А.
- что подготовить перед
составлением отчетности?
- изменения по НДС
- объединение ПФ РФ и ФСС РФ
и многое другое
Записаться
Как сдать отчетность за 2022? О требованиях и новшествах
- Учет запасов, ОС, аренды
- Новое в отношениях с ФНС
- Контрольные соотношения по 6-НДФЛ и РСВ
...и многое другое
Записаться
УСН в 2023 году В программе:
- особенности применения,
- как правильно перейти,
- вопросы дробления бизнеса,
- УСНО для ИП,
- АСН
Записаться
Финансовая диагностика бизнеса, выработка стратегии Курс Даценко А.В.
- Основные группы коэффициентов
- Управление оборотным капиталом
- Факторы роста ликвидности
Записаться
Классный подарок бухгалтеру! Антистресс для ключевого сотрудника
Подарите важному для вашего бизнеса человеку:
- полезный семинар, который он выберет сам
- целый день вне офиса в отличной компании
- прекрасный обед в ресторане
Записаться
Консультации для юрлиц Помощь рядом!
Назрел вопрос к налоговому консультанту или юристу?
Задайте его он-лайн!
Отвечают эксперты Учебного Центра М-СТАЙЛ
Записаться
Главная
Возможно вас заинтересует:
|
Условия партнерства | Корпоративным клиентам | Абонементы |
Партнеры
| Teensyduino предоставляет объект Serial, совместимый с
Серийный объект на стандартных платах Arduino.![]() недействительная установка () { Серийный номер .begin(9600); // USB всегда 12 или 480 Мбит/сек } недействительный цикл () { Серийный номер .println("Hello World..."); задержка(1000); // не печатайте слишком быстро! }В отличие от Arduino Uno и Mega, которые используют низкую скорость последовательной передачи данных, объект Teensy USB Serial всегда обменивается данными на исходной скорости USB, либо 12, либо 480 Мбит/сек. Параметр скорости передачи с помощью Serial.begin(baud) игнорируется для последовательного порта USB (но конечно используется с аппаратным серийным номером). В Teensy 4.x рекомендуется откладывать, чтобы избежать печати. так быстро, что прокрутка последовательного монитора требует слишком много обработки власть. В этом примере "Hello World..." печатается один раз в секунду. На самом деле Teensy не станет серийным устройством, пока ваш скетч не будет запущен. Стандартные последовательные функцииПоддерживаются все стандартные последовательные функции.Последовательный.начало()Serial.begin() является необязательным для Teensy. Аппаратная инициализация USB выполняется перед запуском setup().Ввод скорости передачи игнорируется и используется только для совместимости с Arduino. Последовательная связь USB всегда происходит на полной скорости USB. Однако, см. функцию baud() ниже. Serial.begin() может ждать до 2,5 секунд для последовательной связи USB быть готовым. Для быстрого запуска программы просто не используйте этот ненужная функция. Его единственная цель - совместимость с программы, написанные для Arduino. Задержка предназначена для программ которые не проверяют логическое значение Serial. (логический) Серийный номерПроверьте, открылся ли последовательный монитор Arduino. Обычно это используется с циклом while для ожидания, пока последовательный монитор Arduino не будет запущен.![]() недействительная установка () { Серийный номер .println("Это может быть отправлено до того, как ваш ПК сможет получить"); пока (! серийный номер ) { // ждем, пока Arduino Serial Monitor будет готов } Serial .println("Эта строка обязательно появится в последовательном мониторе"); }Если вы будете использовать Teensy в автономном приложении без серийный монитор, не забудьте удалить это ожидание, чтобы ваша программа не оставаться вечно ждать серийный монотор. В качестве альтернативы ожидание может быть выполнено с тайм-аутом. в то время как (! серийный номер && миллис () < 15000) { // ждем до 15 секунд для серийного монитора Arduino } Serial.print() и Serial.println()Напечатайте число или строку. Serial.print() печатает только число или строку и Serial.println() печатает его с символом новой строки.// Serial.print() может печатать множество разных типов целое число = 1234; Серийный номер .На стандартном Arduino эта функция ожидает, пока данные передаются. С Тинсидуино, Serial.print() и Serial.println() обычно возвращаются быстро, когда сообщение помещается в пределах USB-буферы. См. «Буферизация передачи» ниже. Серийный.write()Передать байт. Вы также можете использовать Serial.write(buffer, length) для отправки более один байт за раз, для очень быстрой и эффективной передачи данных.Серийный.![]() На стандартном Arduino Serial. available() имеет тенденцию сообщать об отдельных байтах, тогда как большие блоки могут быть мгновенно доступны с Teensyduino. Подробности см. в разделе «Буферизация приема» ниже. Обычно возвращаемое значение из Serial. available() следует проверять как логическое значение либо есть или нет данных. Только байты, доступные из самого последнего полученный USB-пакет виден. Видеть Подробнее о неэффективных однобайтовых USB-пакетах см. ниже. Последовательный.чтение()Прочитать 1 байт (от 0 до 255), если доступно, или -1, если ничего не доступно. Обычно Serial.read() используется после Serial.available(). Например:если ( серийный номер .доступно()) { incomingByte = Serial .read(); // не будет -1 // делаем что-то с incomingByte } Серийный.flush()Подождите, пока все переданные данные все еще находятся в буферах, чтобы начать передачу.![]() Arduino 0022 и 0023: flush() отбрасывает любые полученные данные, которые не были прочитаны. Последовательные USB-удлинители TeensyTeensyduino предоставляет расширения для стандартного последовательного объекта Arduino, поэтому вы можете получить доступ к функциям, специфичным для USB.Serial.send_now()Передайте любые буферизованные данные как можно скорее. См. «Буферизация передачи» ниже.Серийный.dtr()Прочитайте состояние сигнала DTR. По умолчанию DTR имеет низкий уровень, когда нет программного обеспечения. последовательное устройство открыто, и оно становится высоким, когда программа открывает порт. Некоторые программы переопределяют это поведение, но для обычного программного обеспечения вы можете использовать DTR, чтобы знать, когда программа использует последовательный порт.недействительная установка () { } недействительный цикл () { pinMode(6, ВЫХОД); // Светодиод, показывающий, использует ли программа последовательный порт цифровая запись (6, ВЫСОКИЙ); // (активный низкий уровень сигнала, ВЫСОКИЙ = светодиод не горит) в то время как (! Серийный номер .На стандартном Arduino сигналы DTR и RTS присутствуют на контактах платы. Чип FTDI, но они ни к чему не подключены. Вы можете паять провода между контактами ввода-вывода и чипом FTDI, если вам нужны эти сигналы. Серийный.rts()Прочитайте состояние сигнала RTS. USB автоматически включает управление потоком, поэтому вам не нужно читать этот бит, чтобы узнать, готов ли ПК к приему ваши данные. Независимо от того, насколько быстро вы передаете, USB всегда управляет буферами поэтому все данные доставляются надежно. Тем не менее, вы можете вызвать перегрузку ЦП. использование принимающей программой является приложением Java с графическим интерфейсом как серийный монитор Arduino! Для программ, которые используют RTS для передачи некоторой полезной информации, вы можете прочитать
это с этой функцией. Драйвер Windows USBSER.SYS имеет известная ошибка где изменения, внесенные в RTS, не сообщаются Teensy (или любым другим доскам с использованием протокола CDC-ACM) до тех пор, пока не будет записан DTR. Некоторые программы, такие как CoolTerm, обойти эту ошибку. Последовательный.бод()Считайте настройку скорости передачи с ПК или Mac. Связь всегда выполняется на полной скорости USB. Скорость передачи полезна, если вы собираетесь сделать USB-последовательный мост, где вам нужно знать, какая скорость ПК намеревается использовать последовательную связь.Последовательный.стопбиты()Считайте настройку стоповых битов с ПК или Mac. USB никогда не использует стоп биты.Serial.paritytype()Считайте настройку типа четности с ПК или Mac. USB использует проверку CRC на всех пакетах данных в массовом режиме и автоматически ретранслирует поврежденные данные, поэтому биты четности никогда не используются.Серийный.numbits()Считайте настройку числа битов с ПК или Mac.![]() Сведения о буферизации и синхронизации USBОбычно объект Serial используется для передачи и приема данных без беспокоясь о более тонких деталях синхронизации. Это "просто работает" в большинстве случаев. Но иногда важны детали времени связи, особенно передачи на ПК.Буферизация передачиНа Arduino Uno и Mega при передаче с помощью Serial.print() байты медленно передаются через аппаратный последовательный порт на преобразователь USB-Serial чип.На Teensy Serial.print() записывает непосредственно в буфер USB. Если все ваше сообщение помещается в буферную память, Serial.print() возвращается к вашему эскизу очень быстро. И Teensyduino, и микросхема USB-Serial содержат частично заполненный буфер. если вы хотите передать больше данных. Обычно после короткого перерыва 3-5 мс в Teensyduino, запланирована передача частично заполненного буфера на USB. Teensyduino немедленно планирует любой частично заполненный буфер для передачи
когда вызывается функция Serial. Вся пропускная способность USB управляется чипом хост-контроллера на вашем ПК или Мак. Когда полный или частично заполненный буфер готов к передаче, фактическая передача происходит, когда позволяет хост-контроллер. Обычно это Чип хост-контроллера запрашивает передачу данных много тысяч раз за во-вторых, хотя на синхронизацию могут влиять другие USB-устройства, потребляющие большую часть доступной полосы пропускания USB. Когда хост-контроллер получает данные, операционная система затем планирует выполнение принимающей программы. В Linux открыты последовательные порты с опцией «низкая задержка» пробуждаются быстро, другие обычно ждут до нормальной "галочки" запускать. Windows и MacOS, вероятно, добавят процесс задержки в расписании. Сложные среды выполнения (например, Java) также могут добавить существенную задержку. Буферизация приемаКогда ПК передает, обычно хост-контроллер отправляет как минимум первый USB-пакет в течение следующей 1 мс.![]() недействительный цикл () { // В Arduino с последовательным интерфейсом байты обычно приходят по одному // так что этот цикл while обычно обрабатывает только 1 байт, прежде чем разрешить // остальная часть функции цикла выполняет свою работу в то время как ( серийный номер .доступно()) { incomingByte = Serial .read(); // делаем что-то с incomingByte } // делаем другие несвязанные вещи время_чувствительная_задача1(); другая_срочная_вещь(); все еще_еще_даже_больше_вещей(); }На Teensy, весь пакет, до 64 байт на Teensy 2 и 3 со скоростью 12 Мбит/с, до 512 байт на Teensy 4 со скоростью 480 Мбит/с, все становится доступным сразу. ![]() недействительный цикл () { // На Teensy большие группы байтов имеют тенденцию поступать одновременно. // Этот счетчик байтов позволяет не тратить слишком много времени на их обработку. беззнаковое целое число байтов = 0; в то время как ( серийный номер .доступно () && число байтов < 10) { incomingByte = Serial .read(); // делаем что-то с incomingByte количество байт++; } // делаем другие несвязанные вещи время_чувствительная_задача1(); другая_срочная_вещь(); все еще_еще_даже_больше_вещей(); } Неэффективные однобайтовые пакеты USBПри передаче Serial.![]() Microsoft Windows и Linux, к сожалению, НЕ предоставляют подобную функцию, когда передача данных. Если приложение записывает неэффективно, например, один байт за раз каждый байт отправляется в одном USB-пакете (который мог содержать 64 или 512 байт). Хотя это плохо использует полосу пропускания USB, больше беспокоит то, как это влияет на буферизация, как это видно из Serial.available(). Аппаратное обеспечение USB, присутствующее в Teensy, может буферизовать 2 пакета USB. Серийный.доступный()
сообщает количество непрочитанных байтов только из первого пакета. Если
пакет содержит только 1 байт, Serial.available() вернет 1, независимо от
сколько байтов может присутствовать во 2-м пакете или сколько байтов может быть
ожидание большего количества пакетов, все еще буферизованных хост-контроллером USB ПК. Этот код не будет работать на Teensy, когда ПК передает ожидаемое 11-байтовое сообщение. более чем в 1 USB-пакете. // Это может не работать на Teensy, если USB-пакеты имеют размер менее 11 байт! логическое значение getNumbersFromSerial() { while ( Serial . available() < 11) { ;} // ожидание 11-байтового сообщения если ( серийный номер .read() == '@') { time_t pctime = 0; для (целое я = 0; я < 10; я ++) { char c = Серийный номер .read(); если (с >= '0' && с <= '9') { pctime = (10 * pctime) + (c - '0') ; // преобразовать цифры в число } } компьютерное время += 10; DateTime.sync (время ПК); // Синхронизируем часы с полученным временем вернуть истину; // вернуть true, если получено сообщение о времени } вернуть ложь; //если нет сообщения, возвращаем false } Этот код можно переписать так, чтобы он всегда считывал байт, когда Serial. available() возвращает ненулевое значение. // Это всегда будет работать на Teensy, не зависит от размера буфера логическое значение getNumbersFromSerial() { целое число = 0; char buf[11]; в то время как (количество < 11) { if ( Serial . Конечно, всегда есть много способов написать программу. Версии выше выглядят для символа '@', чтобы начать сообщение, но не обрабатывать случай, когда дополнительный байты (неправильно) появляются перед 10-значным числом. Также не обязательно хранить все сообщение в буфере, так как работа может выполняться по мере того, как байты читать. Вот более надежная и эффективная версия. // Эта версия более надежная логическое значение getNumbersFromSerial() { количество счетчиков = 0; time_t pctime = 0; в то время как (количество < 10) { если ( серийный номер . |
Драйверы VCP — FTDI
Драйверы виртуального COM-портаДрайверы виртуального COM-порта (VCP) заставляют USB-устройство отображаться как дополнительный COM-порт, доступный для ПК. Прикладное программное обеспечение может получить доступ к USB-устройству на этой странице. На этой странице содержатся драйверы VCP, доступные в настоящее время для устройств FTDI.
Щелкните здесь, чтобы загрузить установщик драйвера для Windows 7, Windows 11 и Windows Server (см. примечание * ниже). Установщик драйвера Windows содержит драйверы VCP и D2XX.
Драйверы D2XX Direct можно найти здесь.
Руководства по установке доступны на странице «Руководства по установке» в разделе «Документы» на этом сайте для выбранных операционных систем.
Драйверы VCPДрайверы виртуального COM-порта (VCP) заставляют USB-устройство отображаться как дополнительный COM-порт, доступный для ПК. Прикладное программное обеспечение может получить доступ к USB-устройству так же, как к стандартному COM-порту.
Это программное обеспечение предоставляется компанией Future Technology Devices International Limited «как есть», и мы отказываемся от каких-либо явных или подразумеваемых гарантий, включая, помимо прочего, подразумеваемые гарантии товарного состояния и пригодности для конкретной цели. Ни при каких обстоятельствах компания Future Technology Devices International Limited не несет ответственности за любые прямые, непрямые, случайные, фактические, штрафные или косвенные убытки (включая, помимо прочего, приобретение замещающих товаров или услуг, потерю возможности использования, данных или прибыли; или перерыв в работе) независимо от того, что было вызвано, и по любой теории ответственности, будь то по договору, строгой ответственности или гражданскому правонарушению (включая небрежность или иным образом), возникающим каким-либо образом в результате использования этого программного обеспечения, даже если было сообщено о возможности такого ущерба.
Драйверы FTDI можно использовать только в сочетании с продуктами, основанными на компонентах FTDI.
Драйверы FTDI могут распространяться в любой форме, если информация о лицензии не изменяется.
Если используется пользовательский идентификатор поставщика и/или идентификатор продукта или строка описания, производитель продукта несет ответственность за сохранение любых изменений и последующую повторную сертификацию WHCK в результате внесения этих изменений.
Для получения более подробной информации об условиях лицензии FTDI Chip Driver нажмите здесь.
Поддерживаемые в настоящее время драйверы VCP:
Подпишитесь на наши обновления драйверов Наши обновления драйверов
СтранаАфганистанАлбанияАлжирАмериканское СамоаАндорраАнголаАнгильяАнтарктидаАнтигуа и БарбудаАргентинаАрменияАрубаАвстралияАвстрияАзербайджанБагамыБахрейнБангладешБарбадосБеларусьБельгияБелизБенинБермудыБутанБоливияОстров БоливияИндияБосния и ГерцеговинаБорусинаБоувин ТориБруней-ДаруссаламБолгарияБуркина-ФасоБурундиКамбоджаКамерунКанадаКабо-ВердеКаймановы островаЦентральноафриканская РеспубликаЧадЧилиКитайОстров РождестваКокосовые острова (Килинг)КолумбияКоморские островаКонгоОстрова КукаКоста-РикаКот-д'ИвуарХорватияКубаКипрЧехияДанияДжибутиДоминикаДоминиканская РеспубликаВосточный ТиморЭквадорЭквадорЭквадорЭль-Сальвадор Острова (Мальвинские)Фарерские островаФиджиФинляндияФранция, МетрополитенФранцузская ГвианаФранцузская ПолинезияФранцузские Южные ТерриторииГабонГамбияГрузияГерманияГанаГибралтарГрецияГренландияГренадаГваделупаГуамГватемалаГвинеяГвинея-БисауГайанаГаитиСлышал и острова Мак-ДональдГондурасГонконгВенгрияИсландияИндияИндонезияИран (Исламская Республика)ИракИрландияИзраильИталияЯмайкаЯпонияИорданияКазахстанКенияКирибатиСеверная КореяЮжная КореяКувейтКыргызстанЛаосская Народно-Демократическая РеспубликаЛатвияЛиванЛесотоЛиберияЛивийская Арабская ДжамахирияЛихтенштейнЛитваМакарМакаЛюксембургМакаоFYROM altaМаршалловы островаМартиникаМавританияМаврикийМайоттаМексикаМикронезия, Федеративные Штаты Молдовы, Республика МонакоМонголияМонтсерратМароккоМозамбикМьянмаНамибияНауруНепалНидерландыНидерландские Антильские островаНовая КаледонияНовая ЗеландияНикарагуаНигерНигерияНиуэ Остров НорфолкСеверные Марианские островаНорвегияПапинайПапвайская ГвинеяПакистанПалауПанама airnПольшаПортугалияПуэрто-РикоКатарРеюньонРумынияРоссийская ФедерацияРуандаСент-Китс и НевисСент-ЛюсияСент-Винсент и ГренадиныСамоаСан-МариноСан-Томе и ПринсипиСаудовская АравияСенегалСейшельские островаСьерра-ЛеонеСингапурСловакия РеспубликаСловенияСоломоновы островаСомалиЮжная АфрикаЮжная Джорджия & Южные Сандвичевы островаИспанияШри-ЛанкаSt. ЕленаСв. Пьер и МикелонСуданСуринамОстрова Шпицберген и Ян-МайенСвазилендШвецияШвейцарияСирийская Арабская РеспубликаТайваньТаджикистанТанзания, Объединенная Республика ТаиландТогоТокелауТонгаТринидад и ТобагоТунисТурцияТуркменистанОстрова Теркс и КайкосТувалуУгандаУкраинаОбъединенные Арабские ЭмиратыСоединенное КоролевствоСоединенные ШтатыОтдаленные острова Малых Земельных острововВузуанский (Оругвайский)Узбекистан elaВьетнамВиргинские острова (Британия)Виргинские острова (США)Острова Уоллис и ФутунаЗападная СахараЙеменДемократическая Республика КонгоЗамбияЗимбабвеЧерногорияСербияАландские островаБонэйр, Синт-Эстатиус и СабаКюрасаоПалестинская территория, оккупированнаяЮжный СуданSt. Бартелеми Св. Мартин (Французская часть)Канарские островаОстров Вознесения (Британия)Косово, РеспубликаОстров МэнТристан-да-КуньяГернсиДжерси
Архитектура процессора | |||||||||
Операционная система | Дата выпуска | x86 (32-разрядная версия) | x64 (64-разрядная версия) | КПП | РУКА | МИПСII | МИПСIV | Ш5 | Комментарии |
---|---|---|---|---|---|---|---|---|---|
Windows (рабочий стол)* | 15.![]() | 2.12.36.4 | 2.12.36.4 | – | 2.12.36.4А**** | – | – | – | Сертифицировано WHQL. Включает VCP и D2XX. Доступен в виде исполняемого файла установки . Пожалуйста, прочтите Примечания к выпуску и Руководства по установке. |
Окна (универсальные)*** | 2021-11-12 | 2.12.36.4У | 2.12.36.4У | – | – | – | – | – | СертифицированоWHQL. Включает VCP и D2XX. |
Линукс | – | – | – | – | – | – | – | – | Все устройства FTDI теперь поддерживаются в Ubuntu 11.10, ядро 3.0.0-19 Обратитесь к TN-101, если вам нужен пользовательский VID/PID VCP в Linux Драйверы VCP интегрированы в ядро. |
Mac OS X от 10,3 до 10,8 | 2012-08-10 | 2.![]() | 2.2.18 | 2.2.18 | – | – | – | – | Обратитесь к TN-105, если вам нужен пользовательский VID/PID VCP в MAC OS |
Mac OS X от 10.9 до 10.13 | 24.12.2019 | – | 2.4.2 | – | – | – | – | – | Этот драйвер подписан Apple |
Mac OS X 10.14
| 2019–24.12.2019 | – | 2.4.4 | – | – | – | – | – | Этот драйвер подписан Apple |
Mac OS X10.15 и macOS 11/12 | 13.06.2022 | 1.5.0 (zip) 1.5.0 (урон) | Это бета-версия драйвера, и программу установки следует запускать из папки «Приложения» на вашем компьютере. | ||||||
Windows CE 4.2-5.2** | 06.01.2012 | 1. ![]() | – | – | 1.1.0.20 | 1.1.0.10 | 1.1.0.10 | 1.1.0.10 | |
Windows CE 6.0/7.0 | 03.11.2016 | 1.1.0.22 CE 6.0 CAT CE 7.0 CAT | – | – | 1.1.0.22 CE 6.0 CAT CE 7.0 CAT | 1.1.0.10 | 1.1.0.10 | 1.1.0.10 | Для использования файлов CAT, поставляемых для сборок ARM и x86, см. AN_319 |
Windows CE 2013 | 06.03.2015 | 1.0.0 | 1.0.0 | Поддержка драйвера VCP для WinCE2013 |
*Включает следующие версии операционной системы Windows: Windows 7, Windows 8/8.1, Windows 10, Windows 11, Windows Server 2008 R2 и Windows server 2012 R2. Кроме того, поскольку Windows 8 RT является закрытой системой, не позволяющей устанавливать сторонние драйверы, наш драйвер для Windows 8 не будет поддерживать этот вариант ОС. Для этой платформы необходимо использовать сборку Windows RT.
**Включает следующие версии операционных систем на базе Windows CE 4.2-5.2: Windows Mobile 2003, Windows Mobile 2003 SE, Windows Mobile 5, Windows Mobile 6, Windows Mobile 6.1, Windows Mobile 6.5
***Windows 10 и Только виндовс 11. Универсальные драйверы для Windows позволяют разработчикам создавать единый пакет драйверов для различных типов устройств, от встроенных систем до планшетов и настольных ПК.
****Windows 10 и Windows 11 только для ПК с Windows на базе ARM64. Также работает на Mac M1 с Parallels VM с Windows.
Больше не поддерживается:
Архитектура процессора | |||||||||
Операционная система | Дата выпуска | x86 (32-разрядная версия) | x64 (64-разрядная версия) | КПП | РУКА | МИПСII | МИПСIV | Ш5 | Комментарии |
---|---|---|---|---|---|---|---|---|---|
Окна* | 30.![]() | 2.12.28 | 2.12.28 | – | – | – | – | – | Сертифицировано WHQL. Включает VCP и D2XX. Доступен в виде исполняемого файла установки . Пожалуйста, прочтите Примечания к выпуску и Руководства по установке . |
Windows XP, Vista, Server 2003, Server 2008 | 13.04.2012 | 2.08.24 | 2.08.24 | – | – | – | – | – | Сертифицировано WHQL Также доступно в версии исполняемый файл установки Примечания к выпуску Это последний выпуск FTDI перед тем, как Microsoft прекратила сертификацию драйверов для этих версий Windows. |
Windows 2000 | 22.10.2009 | 2.06.00 | – | – | – | – | – | – | Сертифицировано WHQL Доступно как исполняемый файл установки Примечания к выпуску |
Windows 98/ME | 25.![]() | 1.09.06 | – | – | – | – | – | – | Не поддерживает устройства FT2232 или FT4232 |
Windows 98/ME | 2004-03-12 | 1.0.3 | – | – | – | – | – | – | Поддерживает только устройства FT2232D |
Mac OS 9 Mac OS 8 | 18.05.2004 | – | – | 1.0f4 | – | – | – | – | |
Mac OS X 10.9 и выше | 15.04.2015 | – | 2,3 | – | – | – | – | – | Этот драйвер подписан Apple |
Линукс | 14.05.2009 | 1.5.0 | 1.5.0 |
СтранаАфганистанАлбанияАлжирАмериканское СамоаАндорраАнголаАнгильяАнтарктидаАнтигуа и БарбудаАргентинаАрменияАрубаАвстралияАвстрияАзербайджанБагамыБахрейнБангладешБарбадосБеларусьБельгияБелизБенинБермудыБутанБоливияОстров БоливияИндияБосния и ГерцеговинаБорусинаБоувин ТориБруней-ДаруссаламБолгарияБуркина-ФасоБурундиКамбоджаКамерунКанадаКабо-ВердеКаймановы островаЦентральноафриканская РеспубликаЧадЧилиКитайОстров РождестваКокосовые острова (Килинг)КолумбияКоморские островаКонгоОстрова КукаКоста-РикаКот-д'ИвуарХорватияКубаКипрЧехияДанияДжибутиДоминикаДоминиканская РеспубликаВосточный ТиморЭквадорЭквадорЭквадорЭль-Сальвадор Острова (Мальвинские)Фарерские островаФиджиФинляндияФранция, МетрополитенФранцузская ГвианаФранцузская ПолинезияФранцузские Южные ТерриторииГабонГамбияГрузияГерманияГанаГибралтарГрецияГренландияГренадаГваделупаГуамГватемалаГвинеяГвинея-БисауГайанаГаитиСлышал и острова Мак-ДональдГондурасГонконгВенгрияИсландияИндияИндонезияИран (Исламская Республика)ИракИрландияИзраильИталияЯмайкаЯпонияИорданияКазахстанКенияКирибатиСеверная КореяЮжная КореяКувейтКыргызстанЛаосская Народно-Демократическая РеспубликаЛатвияЛиванЛесотоЛиберияЛивийская Арабская ДжамахирияЛихтенштейнЛитваМакарМакаЛюксембургМакаоFYROM altaМаршалловы островаМартиникаМавританияМаврикийМайоттаМексикаМикронезия, Федеративные Штаты Молдовы, Республика МонакоМонголияМонтсерратМароккоМозамбикМьянмаНамибияНауруНепалНидерландыНидерландские Антильские островаНовая КаледонияНовая ЗеландияНикарагуаНигерНигерияНиуэ Остров НорфолкСеверные Марианские островаНорвегияПапинайПапвайская ГвинеяПакистанПалауПанама airnПольшаПортугалияПуэрто-РикоКатарРеюньонРумынияРоссийская ФедерацияРуандаСент-Китс и НевисСент-ЛюсияСент-Винсент и ГренадиныСамоаСан-МариноСан-Томе и ПринсипиСаудовская АравияСенегалСейшельские островаСьерра-ЛеонеСингапурСловакия РеспубликаСловенияСоломоновы островаСомалиЮжная АфрикаЮжная Джорджия & Южные Сандвичевы островаИспанияШри-ЛанкаSt.