Opendiag не может создать файл

Обновлено: 01.07.2024

Эта страница содержит планы по созданию устройства для интерфейса RS-232 (портативный компьютер) с диагностическим разъемом ISO9141-2 / ISO14230 / SAE J1962 (OBD-II) на многих автомобилях Volkswagen, Audi, Seat, Skoda и Subaru. автомобили. Он также должен работать на многих моделях до OBD-II. Он был протестирован на двух моих автомобилях: VW GTI 8v 1998 года и VW Passat GLS 1998 года.

Обратите внимание, что эта страница _не_ содержит программное обеспечение. Свободное программное обеспечение было целью проекта Freediag. Также доступно коммерческое программное обеспечение, которое работает с этим интерфейсом.

Пожалуйста, не присылайте мне вопросы по этому проекту по электронной почте.

Этот документ просматривают сотни человек в день. Он помог тысячам создать описанный здесь интерфейс. Представленная здесь информация настолько полна и точна, насколько это необходимо человеку, обладающему достаточными навыками для построения собственного интерфейса. Если вам нужна помощь, обратитесь за ней в дискуссионную группу или к местному гуру электроники. У меня не хватает времени (а часто и возможности) отвечать на вопросы. Спасибо за понимание.

Вот список запчастей для Digi-Key:

< /tr>< /tr>
ЭлементКоличествоНомер деталиОписаниеПриложение
13PS2501- 1-ND1 КАНАЛ ОПТОРАЗВЯЗКА TRANS DIPКОМБИНИРОВАННЫЙ СОСТАВЛЯЕТ A 2501-3
2 22N3904-NDNPN SML SIG GP AMP&SWITCH TO92T1 и T2
321N4004DICT-NDВЫПРЯМИТЕЛЬ GPP 1A 400V DO-41 ДИОДЫD1 & D2
4 101.0KQBK-ND1.0K OHM 1/4W 5% УГЛЕРОДНАЯ ПЛЕНКА RES R1,R2,R5,R6,R7,R9
551.5KQBK-ND1.5K OHM 1/4W 5% CARBON FILM RESR3
6510KQBK-ND10K OHM 1/4W 5% CARBON FILM RESR4
75150KQBK-ND150K OHM 1/4W 5% CARBON FILM RESR8
81P10312-NDCAP 1UF 50V ELECT FC RADIALC1
91A23279-ND09 ВИЛКА MSFL RA 318 (SL,FM,BL)DB9 MALE
101A23305-ND09 MSFL RCPT RA 318 ( SL,FM,BL)DB9 FEMALE

21 мая 2002 г. стоимость этих деталей составляла 8,33 доллара США, плюс 5 долларов США за обработку и доставку. Вы можете приобрести другие детали, например перфорированную доску и т. д., на сайте Fry’s или, возможно, на AliExpress. запчасти не продаю. Вам необходимо получить их у дистрибьютора электроники, такого как Digi-Key.

Часто задаваемые вопросы и ответы:

ВопросОтвет
Будет ли это устройство работать с моей машиной? Если ваш автомобиль поддерживает VAG, ISO9141-2 или ISO14230, он должен работать. Сюда входят автомобили, продаваемые Volkswagen, Audi, Seat, Skoda и Subaru (1996+). Большинство автомобилей, продаваемых Ford, GM или Chrysler, электрически несовместимы с этим интерфейсом. Более подробную информацию о стандартах OBD-II и ISO можно найти здесь. Многие новые автомобили (модель 2001+) используют две K-линии, а это устройство поддерживает только одну. Если вы хотите предоставить схему или другую информацию о том, как поддерживать двойные K-линии, свяжитесь со мной. Но не спрашивайте меня — если вы не видите здесь информации, значит, у меня ее нет. Спасибо!
Вы продаете эти вещи?Нет. В эти дни вы должны просто купить адаптер OBD-II для своего смартфона.
Какой тип конденсатора я должен использовать?Это не т критично. Если вы используете поляризованный конденсатор, убедитесь, что вы правильно соблюдаете полярность. (Вы должны сами в этом разобраться.)
Это действительно работает?Да, сотни людей построили эту штуку , и это работает. Однако я предлагаю вам заменить резистор 140k на резистор 150k для достижения наилучших результатов.
Я не могу найти NEC 2501-3. Что мне следует использовать?Нет такой вещи, как 2501-3. Я просто соединил три 2501-1 вместе и назвал их 2501-3. В Северной Америке вы можете легко найти NTE NTE-3098 (совместимость подтверждена Дейлом Кирштейном). Fry’s Electronics поставляет детали NTE. Вы также можете попробовать Infineon SFH615-A2 (Совместимость подтверждена Найджелом Миддлтоном)
Мой разъем OBD-II (J1962) имеет электрические контакты только в положениях контактов 4, 5, 7. и 16.Почему отсутствует контакт 15 (L-линия)?Не в каждом автомобиле есть разъем L-линии. Если у вас нет, не волнуйтесь. Эта схема по-прежнему будет работать.
У моего разъема OBD-II есть контакт для контакта 4 (или контакта 5), но не для обоих. Я предлагаю вам соединить два контакта заземления вместе на печатной плате. Некоторые автомобили обеспечивают только одно из заземлений.
Доступно ли бесплатное программное обеспечение?Да, но оно не обновлялось с 2003 года. Для получения дополнительной информации посетите Freediag. Дискуссионная группа Opendiag в Yahoo Groups — еще один ресурс. Ross-Tech, похоже, прекратила выпуск бесплатной версии VAG-COM.
Как мне сделать печатную плату?Я написал базовое руководство, которое объясняет, как построена плата на фотографиях. В настоящее время я использую дешевые производители печатных плат в Малайзии и Китае. Некоторые могут даже принимать файлы EAGLE напрямую.
Я заинтересован в написании программного обеспечения. Где я могу найти техническую документацию по OBD-II в Интернете?Вы, вероятно, хотите получить копию HS-3000 от Общества автомобильных инженеров. Стоимость составляет около 240 долларов США (в 2009 г.).
У моего компьютера нет последовательного порта.Keyspan USA-19HS является отличным адаптером USB-Serial (RS-232) для этого приложения. Имейте в виду, что большинство других адаптеров USB-Serial доставят вам много проблем с этой схемой. Вы были предупреждены.
У меня есть еще один вопрос, на который вы не ответили здесь.Поищите в Интернете или спросите ваш дружелюбный местный гуру электроники.

Изображения

Верх прототипа

Первый собранный прототип

Низ прототипа

Перемычки внизу не нужны при текущей компоновке платы.

Сборка

Это изображение, использованное в последней версии доски. Это однослойная конструкция. Если вы планируете травить свою собственную плату, используйте файлы Postscript или PDF в разделе файлов для большей точности.

На этом рисунке показаны значения компонентов и их размещение. Обратите внимание, что 2501-3 на самом деле представляет собой три оптоизолятора NEC 2501-1. Номер детали Digi-Key: PS2501-1-ND.

Замены деталей

Для замены подходят следующие детали:

  • Оптоизолятор NEC 2501: Infineon SFH615-A2 (спасибо: Найджел Миддлтон) или NTE NTE-3098 (спасибо: Дейл Кирштейн)
  • Транзистор 2N3904: NTE NTE-123AP (спасибо: Дейл Кирштейн)

Эти замены были использованы другими, создавшими это устройство.

УВЕДОМЛЕНИЕ О ЛИЦЕНЗИИ / АВТОРСКИХ ПРАВАХ

Файлы, указанные ниже, и изображения на этой странице (также называемые «программным обеспечением») защищены авторским правом © 2000 Jeff Noxon и распространяются в соответствии с условиями публичной лицензии GNU. Скачивая эти файлы, вы соглашаетесь с условиями лицензии.

Лицензия GPL была выбрана по двум причинам. Во-первых, документация, необходимая для реализации этого проекта, была опубликована на открытых условиях. Во-вторых, я потратил много времени на этот проект. Любой коммерческий поставщик, который продает это устройство (или устройство, созданное на основе этих файлов), в соответствии с лицензией обязан предоставить схемы и/или макет платы своим клиентам.

Файлы/Загрузки

< td align=center>Лицензионное соглашение для всех файлов
ФайлОписание
COPYING.TXT
ISO_B1.PSРазметка платы, редакция B1, Postscript
ISO_B1_LJET.PCLКомпоновка платы, версия B1, PCL, 300 dpi, HP LaserJet
ISO_B1_LJET4.PCL Компоновка платы, версия B1, PCL, 600 dpi, HP LaserJet 4+
ISO_B1.PDFКомпоновка платы, редакция B1, PDF
SCHEMATIC_B1.PDFСхема (формат PDF)
ISO_B1.SCHСхема (формат EAGLE)
ISO_B1.BRDПлата Макет (формат EAGLE)

Ссылки

OpenDiag — направлен на разработку программного обеспечения под лицензией GPL для использования с этим устройством. OpenDiag также послужил основой для этой схемы.

B&B Electronics — продает довольно дорогой, но хороший кабель SAE J1962 — DB9F, совместимый с этим проектом. (Ссылка не работает, старый артикул OBDIIJ1962, похоже, недоступен.)

Multiplex Engineering — продает альтернативный, гораздо более дешевый кабель SAE J1962 — DB9F. См. это электронное письмо для получения дополнительной информации. Я не пробовал этот кабель.

Cadsoft — продает программное обеспечение CAD для Windows и Linux (EAGLE), используемое для разработки платы.

В раздел "файлы" на странице списка рассылки Yahoo Groups загружено несколько интересных файлов. Кроме того, информационная страница VAG была перемещена, а ссылка исправлена.

10 октября 2000 г.

Новая информационная страница VAG с подробной информацией о протоколе VWAG (VW, Audi, SEAT и Skoda могут использовать форматы ISO/OBDII, но вы можете получить доступ не только к основным данным двигателя, если вы выберете проприетарный протокол). Отличный материал!

9 июля 2000 г.

Я получил список каналов данных для ЭБУ двигателя A4 1.8T. Похоже, они в основном такие же, как у моего Passat 1.8T без электронного управления.

Доступна схема и макет печатной платы

Джефф Ноксон взял (действительно) грубую схему с этой страницы, очистил ее и разработал для нее новую печатную плату. Вы можете найти всю эту информацию здесь.

Список рассылки

Введение

Это началось как проект по подключению Palm Pilot к Passat с двигателем 1,8T, чтобы он работал в качестве датчика турбонаддува. Это должен был быть коммерческий проект, и я дошел до того, что выяснил, как зарегистрировать вымышленное название компании и поставить все части для TTL-серийного (не совсем RS-232) Palm на 12-вольтовый интерфейс диагностического порт на Passat.

У меня больше нет времени на эту ерунду, и я понял, что возврат будет довольно мизерным, хотя риск был не слишком высок - самое худшее - это минимальная покупка разъемов для диагностики.

Я решил сделать проект открытым в смысле GNU/Linux. Все, что я узнаю, что не защищено авторским правом (SAE и ISO довольно строги, но я дойду до этого), я пропущу. Я призываю людей присылать мне то, что они находят, и я добавлю это сюда.

Начало работы

Я начал с VWTool от CalComp. Я разобрал RS-232 (используется ноутбуком) на модуль 12 В, нарисовал схему и изучил детали (щелкните, чтобы увеличить изображение):

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

Вот несколько комментариев, которые я отправил ученику:

Гм... на изображении модуля преобразования уровня черный — это GND, красный — это батарея +12 В, оранжевый — L, а коричневый — K.

Я использовал инструмент последовательного анализа, у которого есть собственный странный формат для сохранения трасс (он должен уметь отличать Tx от Rx, поэтому нельзя просто сохранять их в необработанном виде). Он называется CommLite 32, и как только я разберусь с форматом трассировки, я пришлю вам несколько трассировок, если хотите. На данный момент я сделал снимок экрана и распечатал его.

Похоже, что во время простоя, чтобы поддерживать связь, ПК и ЭБУ считают, что ПК делает четные, а ЭБУ - нечетные:

ЭБУ: 03 19 09 03

ПК делает 1A, ECU делает 1B и т. д.

Повороты довольно странные. Похоже, они делают это, отправляя 03, а другой конец отправляет 03 вместо обычной инверсии-FC. Следовательно, приведенный выше обмен действительно выглядит так:

Обычные запросы блоков данных выглядят очень похоже, и довольно легко запутаться во всех (как выглядит) вещах поддержания активности, пытаясь найти фактический запрос данных и ответ. Я собираюсь написать анализатор более высокого уровня, чтобы отсеять все вещи, связанные с инверсией байтов, контрольной суммой и эхом шины для байтов, передаваемых ПК, чтобы я мог более четко видеть структуру сообщения.

RTS подключается (через преобразователь уровня) к линии L и "пробуждает" ECU на скорости 5 бод или что-то в этом роде.

ISO 9141-2 также говорит, что вам нужно говорить на скорости 5 бит/с по линии L, чтобы начать связь, но VWTool, похоже, использует пользовательский протокол VAG, а не ISO в противном случае. Запутанно, но я просто пытаюсь подражать VWTool, а не выяснять для чего.

Другие комментарии

Автор VWTool скончался в прошлом году. Baum Tools всегда продавал его (по более высокой цене, чем напрямую от CarComp) и до сих пор продает, хотя предположительно в улучшенной версии. Какое-то время у них было обновление на их сайте. Он был полностью функционален, но у вас должен был быть преобразователь уровней, который, как мы видим здесь, на самом деле не так уж и сложен. Там могут быть копии, плавающие вокруг. Если кто-то в районе залива Сан-Франциско захочет взломать это (и может серьезно посвятить время), я одолжу ему или ей свою копию (законно: я заплатил CarComp 400 долларов за нее, когда это было прибыльным делом). схема).

Я еще не упомянул спецификации SAE и ISO. На самом деле они не так уж полезны, если вы хотите отслеживать VWTool, а не пытаться общаться, реализуя его в соответствии со спецификацией (на мой взгляд, это сложнее, но менее ориентировано на VW). Как я упоминал ранее, VWTool использует собственный протокол. Автомобили VW также должны использовать стандарт ISO 9141-2. Протокол VW использует скорость 9600 бит/с, что очень удобно. ISO использует 10,4 кбит/с и другие протоколы SAE (публикация SAE HS-3000 включает J1962, J1978 и кучу других) протоколы (они включили в спецификацию пользовательские системы GM и Ford. Chrysler использует ISO, который является третьим вариантом SAE) Схемы широтно-импульсной модуляции.

Кстати, ANSI продает спецификации ISO.

Названия, которые VWTool показывает на экране, не содержатся в данных, получаемых от автомобиля, а переводятся в зашифрованный файл (labels.csv, если у вас есть программа). Юридически решить эту проблему будет сложнее (если VW не предоставит нам список ключевых слов и их номеров).

Этого пока достаточно. Вот несколько ссылок:

ComLab32 и Comlite32 Это инструмент для последовательного анализа. Это намного проще, чем строить "следящий" кабель.

< td>штифты (необходимо 4)
12110252 оболочка (требуется 1)
12047581
12110254 фиксирующий зажим (необходим 1)

Пожалуйста, будьте добры к PP: они не привыкли иметь дело с большим количеством запросов образцов или хакеров.

Я не могу предоставить компании, производящей разъемы для Palm, потому что я связан договором с разработчиком оборудования, но вы не можете заказывать у них, пока не подпишете контракт с 3Com (сейчас я думаю, Palm, Inc.!) в любом случае. Я скажу, что их условия очень справедливы, и они принимают заказы на небольшие количества.

Я хочу, чтобы пользователь выбрал каталог, в котором будет сохранен файл, который я затем сгенерирую. Я знаю, что в WPF я должен использовать OpenFileDialog из Win32, но, к сожалению, диалог требует выбора файла (файлов) - он остается открытым, если я просто нажимаю OK, не выбирая ни одного. Я мог бы «взломать» функциональность, позволив пользователю выбрать файл, а затем удалить путь, чтобы выяснить, к какому каталогу он принадлежит, но это в лучшем случае неинтуитивно. Кто-нибудь видел это раньше?

15 ответов 15

Для этого можно использовать встроенный класс FolderBrowserDialog. Не обращайте внимания на то, что он находится в пространстве имен System.Windows.Forms.

Если вы хотите, чтобы окно было модальным поверх какого-либо окна WPF, см. вопрос Как использовать FolderBrowserDialog из приложения WPF.

РЕДАКТИРОВАТЬ: Если вы хотите что-то более причудливое, чем простое, уродливое диалоговое окно Windows Forms FolderBrowserDialog, есть несколько альтернатив, которые позволяют вам вместо этого использовать диалоговое окно Vista:

Обратите внимание, что это диалоговое окно недоступно в операционных системах старше Windows Vista, поэтому сначала проверьте CommonFileDialog.IsPlatformSupported.


Обратите внимание, что это ужасный диалог. Вы не можете скопировать и вставить в него путь, и он не поддерживает избранные папки. В целом, я бы дал ему 0 из 5 и никому не рекомендую его использовать. За исключением того, что не было разумной альтернативы, пока Windows Vista не выпустила гораздо лучший диалог папки. Есть хорошие бесплатные библиотеки, которые показывают хорошие диалоги в Vista+ и плохие в XP.

Тем не менее, почему WPF предлагает отличный OpenFileDialog, но не OpenFolderDialog? Разве это не немного странно? Почему здесь отсутствует WPF? Есть ли планы добавить класс для этого диалогового окна в WPF?

Обратите внимание, что для использования CommonOpenFileDialog из WindowsAPICodePack вам необходимо Install-Package WindowsAPICodePack-Shell . Ссылка, указанная в ответе, не содержит этого списка.

Я создал UserControl, который используется следующим образом:

Исходный код xaml выглядит следующим образом:

и программный код

+1, хороший пример того, как написать UserControl. Один вопрос: зачем вам be.UpdateSource? Разве уведомления об изменениях не должны быть автоматическими в свойствах зависимостей?

Вы можете указать в привязке, когда запускать обновления. По умолчанию он находится на LostFocus, но вы также можете указать ему запускать обновления на PropertyChanged.

Привязка также будет обновляться при каждом нажатии клавиши. Если пользователь выполняет какую-либо проверку при обновлении (например, Directory.Exist), это может вызвать проблемы.

Диалоговое окно папки Ookii можно найти в Nuget.

PM> Установить пакет Ookii.Dialogs.Wpf

Пример кода приведен ниже.


Как указывалось в предыдущих ответах, для этого используется класс FolderBrowserDialog. У некоторых людей есть (оправданные) опасения по поводу внешнего вида и поведения этого диалогового окна. Хорошей новостью является то, что он был «модернизирован» в NET Core 3.0, поэтому теперь он является жизнеспособным вариантом для тех, кто пишет приложения Windows Forms или WPF, ориентированные на эту или более позднюю версию (хотя вам не повезло, если вы все еще используете NET Framework).

Чтобы сослаться на System.Windows.Forms в приложении NET Core WPF, необходимо отредактировать файл проекта и добавить следующую строку:

Этот элемент можно разместить непосредственно после существующего элемента.

Тогда это просто случай использования диалога:

FolderBrowserDialog имеет свойство RootFolder, которое предположительно "устанавливает корневую папку, из которой начинается просмотр", но что бы я ни устанавливал для него, это не имело никакого значения; SelectedPath кажется лучшим свойством для этой цели, однако в конце требуется обратная косая черта.

Кроме того, свойство ShowNewFolderButton, по-видимому, также игнорируется, кнопка отображается всегда независимо.


Ookii Dialogs включает диалоговое окно для выбора папки (вместо файла):

Ookii Dialogs Select Folder Screenshot


Для тех, кто не хочет создавать собственное диалоговое окно, но все же предпочитает 100% WPF и не хочет использовать отдельные DDL, дополнительные зависимости или устаревшие API, я придумал очень простой прием с помощью команды Сохранить Как диалог.

Директива using не требуется, вы можете просто скопировать и вставить приведенный ниже код!

Он по-прежнему должен быть очень удобным для пользователя, и большинство людей этого даже не заметят.

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

Конечно, это большой хак, но, возможно, он отлично подойдет для вашего использования.

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

Единственные проблемы с этим взломом:

  • Кнопка подтверждения по-прежнему говорит «Сохранить» вместо чего-то вроде «Выбрать каталог», но в таких случаях, как шахты, я «сохраняю» выбор каталога, поэтому он все еще работает.
  • В поле ввода по-прежнему указано «Имя файла» вместо «Имя каталога», но мы можем сказать, что каталог — это тип файла.
  • По-прежнему есть раскрывающийся список "Тип файла", но его значение говорит "Каталог (*.this.directory)", и пользователь не может изменить его на что-то другое, мне подходит.

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

Это было круто. Удивлен, что никто больше не пробовал это. Пакет NuGet, конечно, намного лучше, но без NuGet WindowsAPICodePack это отличный способ взломать возможность выбора папки без добавления каких-либо новых пакетов/ссылок.

Фууу. У вас было, пока я не увидел способ dialog.FileName = "select"; // Тогда имя файла будет "select.this.directory". Это немного сбивает с толку нетехнических конечных пользователей. Но в остальном интересный хак с нулевой зависимостью.

Чтобы диалоговое окно каталога получило путь к каталогу, сначала добавьте ссылку System.Windows.Forms, а затем разрешите, а затем поместите этот код одним нажатием кнопки.

(folderpathTB — это имя TextBox, куда я хочу поместить путь к папке, ИЛИ вы также можете назначить его строковой переменной, т.е.)

И если вы хотите получить имя файла/путь, просто сделайте это при нажатии кнопки

(folderpathTB — это имя TextBox, куда я хочу указать путь к файлу, ИЛИ вы также можете назначить его строковой переменной)

Примечание. Для диалогового окна папки в проект необходимо добавить System.Windows.Forms.dll, иначе он не будет работать.

Я нашел приведенный ниже код по ссылке ниже. и это сработало диалоговое окно выбора папки WPF

Как исправить ошибку «Не удается создать файл .» при установке TWS на MacOS

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

Некоторое программное обеспечение на вашем компьютере может изменить или переопределить разрешения, назначенные операционной системой. При определенных обстоятельствах это предотвращает доступ установщика TWS к папке, в которой должны быть созданы файлы ядра приложения (/users/youruser/home/Applications). В таких случаях при установке TWS обычно отображается ошибка "Не удается создать . файл. Повторить попытку?"

В этой статье мы объясним, как сбросить разрешение файловой системы для папки «Приложения», расположенной в домашней папке пользователя, чтобы обеспечить бесперебойную работу установки TWS.


<р>2. Выберите папку «Приложения» в своей домашней папке и нажмите ⌘CMD + I, чтобы открыть панель Информация

.




<р>4. В строке, соответствующей «eвсем», нажмите «Нет доступа» (Рисунок 5), а затем выберите «Читать и Напишите" (Рисунок 6)





<р>7. После успешного завершения установки повторите предыдущие шаги с 1. по 5., изменив права доступа «eвсех» на «Только чтение», чтобы отменить изменения исходный статус

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