Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.52/159: Рейтинг темы: голосов - 159, средняя оценка - 4.52
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 383

Управление J2534 устройствами

06.09.2017, 17:13. Показов 38007. Ответов 83
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день ! Очень хочу разобраться с управление так называемых J2534 устройств .
Как я понимаю что информация о всех установленных устройствах хранится в реестре .
Но не нашел параметров ( Com port , baudrate).
У меня есть один из шнурков Mini Vci . С ним идет dll. Если кто обладает информацией - поделитесь )))
Миниатюры
Управление J2534 устройствами   Управление J2534 устройствами  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.09.2017, 17:13
Ответы с готовыми решениями:

Управление HID устройствами и com в одном проекте
Добрый день Уважаемые форумчане. Имеется 4 прибора: Считыватель RFID карт (прикручено, подключено, данные вижу) Алкотестер Динго...

Работа с Usb устройствами
Подскажите пожалуйста пакет для работы с Usb устройствами. Или подскажите как вообще правильно с ними работать в шарпе. Планируется...

Работа с устройствами MTP
Доброго времени суток! Стоит задача, переместить с Android устройства файл в память компьютера (в будущем еще и на устройство с...

83
5 / 5 / 0
Регистрация: 01.02.2019
Сообщений: 22
05.02.2019, 23:14
Студворк — интернет-сервис помощи студентам
Это как раз пример виноват. там 2 строчки кода. протокол 2534 как раз подразумевает получение ЗАДАННОГО числа сообщений по принципу FIFO.
А автор этого г**но примера таким вот ..... даже слово то приличное не могу подобрать ... образом ....отрезал отчет о доставке / успешной передаче. Несмотря на присутствие в стандарте специального для этого флага.

Еще раз - библиотека это всего лишь обертка dll, за ссыль на обертку от Дрю - сенкс, погляжу.

Я никаких исходников не давал )))

Да у меня тоже уже работает. и оборудование у меня хорошее ))) Я ж четко причину показал. )
0
2 / 2 / 0
Регистрация: 06.03.2017
Сообщений: 50
05.02.2019, 23:22
А вот не думали время выставить больше, может быть просто не принимаете потому что принимать нечего.

Добавлено через 2 минуты
Цитата Сообщение от _ladan_ Посмотреть сообщение
А автор этого г**
Я б не стал так категорично ибо автор был первый который привел исходники для работы j2534 на платформе Net
0
5 / 5 / 0
Регистрация: 01.02.2019
Сообщений: 22
05.02.2019, 23:32
Ну вы код то видели? о чем мы с вами спорим?

Если по вашему логика

"Получать N сообщений перезатирая буфер пока статус устройства ОК"
с учетом того что последнее по любому не ОК, а все сообщения полученные до того благополучно "пох**ны" является нормальной то как бы ой....

Я ж не ругаю саму библиотеку, я ругаю вполне конкретные примеры ее использования к ней приложенные. Сам класс не считая костыля на PASS/BLOCK фильтр написан вполне прилично, и его явно переписывал на указатели не тот же человек который его сочинял )))

Я ж написал - я шину всю вижу причем с таймингом, я точно знаю что когда и как пришло.
0
2 / 2 / 0
Регистрация: 06.03.2017
Сообщений: 50
05.02.2019, 23:53
Цитата Сообщение от _ladan_ Посмотреть сообщение
Ну вы код то видели? о чем мы с вами спорим?
код я видел и более того учился понимать этот протокол через этот код. Я писал что там много не доделано, а кто сказал что вам будут давать готовый продукт.По этому коду и утечка памяти наблюдается. За основу его брать можно ,ну и дорабатывать ни кто не мешает.
0
5 / 5 / 0
Регистрация: 01.02.2019
Сообщений: 22
06.02.2019, 00:44
Да не нужно мне ничего, враппер есть, дефайны есть, типы данных есть - и слава богу руками писать не нужно. я для тех кто будет потом в этом разбираться написал где они споткнутся, что б они не тратили так же как я свое время на разбор, а сразу пошли дальше.

Вы вот стандартиком 2534 лучше поделитесь, если есть, а то стандарт через код осваивать дело сомнительное. Лучше уж юзать описание от производителей девайсов.
Если кому пригодится:
https://beta.quantexlab.com/de/develop/j2534.html
http://www.drewtech.com/support/passthru.html

Сам стандарт я только 2002 год нарыл.... а последняя редакция 2015.

Ну и сам стандарт, если вас не душит жаба (как меня)
https://www.sae.org/standards/... /1_201510/
1
2 / 2 / 0
Регистрация: 06.03.2017
Сообщений: 50
06.02.2019, 03:58
максимум что у меня есть
Вложения
Тип файла: pdf iso_15765-4.pdf (1,003.8 Кб, 103 просмотров)
0
5 / 5 / 0
Регистрация: 01.02.2019
Сообщений: 22
06.02.2019, 11:32
Ну это 15765, про него я и так все знаю ))) Мне именно по 2534 нужно, вы ж твердите по соответствие стандарту, значит с чем то сравнивали )))
0
0 / 0 / 0
Регистрация: 11.05.2019
Сообщений: 1
11.05.2019, 07:19
Возможно это пригодится
Вложения
Тип файла: pdf iso 22900-1-2008.pdf (770.6 Кб, 59 просмотров)
Тип файла: pdf ISO 22900-2-2009.pdf (3.77 Мб, 67 просмотров)
Тип файла: pdf ISO 22900-3.pdf (3.81 Мб, 65 просмотров)
0
5 / 5 / 0
Регистрация: 01.02.2019
Сообщений: 22
12.05.2019, 11:41
Это стандарт MCD сервера... спасибо, в коллекцию точно пригодится ))) Это следующая ступень после 2534 ))
0
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 18
11.09.2019, 17:27
Тема ещё актуальна?
0
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 383
11.09.2019, 17:48  [ТС]
Эта тема всегда актуальна ))
1
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 18
11.09.2019, 18:08
Изучаю код по ранней ссылки из этой темы. Пытаюсь выполнить команду IOCTL Get_CONFIG, не получается. Я не понимаю, как это выполнить.Вот перепаханный мной.фрагмент кода
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public J2534Err GetConfig(int channelId, ref List<SConfig> config)
        {
            IntPtr output = Marshal.AllocHGlobal(5800);
           
            SConfig sconf = new SConfig();
            SConfigList sconfl = new SConfigList();
            sconf.Parameter = ConfigParameter.J1962_PINS;
            sconf.Value = 5;
            sconfl.Count = 1;
            var size = Marshal.SizeOf(sconfl);
            IntPtr input = Marshal.AllocHGlobal(Marshal.SizeOf(sconf));
            sconfl.ListPtr = Marshal.AllocHGlobal(Marshal.SizeOf(sconf));
           
            Marshal.StructureToPtr(sconf, input, false);
            var ret = (J2534Err)m_wrapper.Ioctl(channelId, (int)Ioctl.GET_CONFIG, input, IntPtr.Zero); Исключение . Описание снизу
            var config1 = (SConfig)Marshal.PtrToStructure(input, typeof(SConfig));
            return ret;
        }
Необработанное исключение типа "System.AccessViolationException" в J2534DotNet.dll

Дополнительные сведения: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.

Добавлено через 6 минут
Вот если комментирую строку :Marshal.StructureToPtr(sconf, input, false); то переменная ret получает значение = ERR_NULL_PARAMETER. Если не заполняю структуру sconf, то ret получает значение = 5, которого нет в перечислении J2534Err. Короче, запутался и не понимаю
0
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 383
11.09.2019, 18:35  [ТС]
А какой адаптер ?
0
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 18
11.09.2019, 18:44
mini VCI
0
5 / 5 / 0
Регистрация: 01.02.2019
Сообщений: 22
11.09.2019, 20:08
так вы бы не писали в одну строчку, раз путаетесь ))

хотя мне кажется вы чуть раньше запутались ))

C#
1
2
SConfigList sconfl = new SConfigList();
m_wrapper.Ioctl(channelId, (int)Ioctl.GET_CONFIG, sconfl.ListPtr, IntPtr.Zero);
Собственно ПОЛУЧЕНИЕ настроек которое предполагает команда GET_CONFIG должно куда то вернуться, верно? Иначе зачем их ПОЛУЧАТЬ? В данном случае, на сколько я вижу доку - "очень логично" возвращается в SConfigList по указателю переданному как параметр "input"

Код не проверял, если что, но пару важных моментов думаю заметите, даже если я ошибся. я бы написал напрямую через PassThruIoctl (но это уже мои тараканы))) )
C#
1
J2534Extended_OBJECT.PassThruIoctl(channelId, (int)Ioctl.GET_CONFIG,sconfl.ListPtr, IntPtr.Zero);
0
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 18
11.09.2019, 20:19
Спасибо, что включаетесь в ответы!!!

Цитата Сообщение от _ladan_ Посмотреть сообщение
1
J2534Extended_OBJECT.PassThruIoctl(chann elId, (int)Ioctl.GET_CONFIG,sconfl.ListPtr, IntPtr.Zero);
Да и эту строку включал. Исключение.

Добавлено через 3 минуты
Почему, когда я включаю в структуру параметр с его значением, то исключение. А вот если я не заполняю структуру(просто по умолчанию создал и всё), то без исключения, но ret =5 . Что такое 5?

Добавлено через 2 минуты
Цитата Сообщение от _ladan_ Посмотреть сообщение
Собственно ПОЛУЧЕНИЕ настроек которое предполагает команда GET_CONFIG должно куда то вернуться, верно?
Ещё не понимаю назначение Input и Output вот здесь
C#
1
long PassThruIoctl(unsigned long ChannelID, unsigned long IoctlID, void *pInput, void *pOutput)
0
5 / 5 / 0
Регистрация: 01.02.2019
Сообщений: 22
11.09.2019, 20:54
ну, а как бы штатным методом то религия не позволяет?
C#
1
2
List<SConfig> sconfl = new List<SConfig>();
J2534Extended_OBJECT.GetConfig(ChannelID, ref sconfl);
Input / Output это условно....

Слушайте... у меня во дворе лежит 4 кирпича, а сегодня дождь, почему рядом с кирпичами всего 5 голубей?

В процедуру получения конфигурации нужно передать УКАЗАТЕЛЬ на ЛИСТ настроек, а не УКАЗАТЕЛЬ на настройку (как у вас), не говоря уже про ваши эксперименты с выделением памяти, ради указателей.

не нужен вам тут маршалинг вообще.

Добавлено через 18 минут
Цитата Сообщение от kirson Посмотреть сообщение
Ещё не понимаю назначение Input и Output вот здесь
делегат универсальный и используется для всего контроля ввода вывода, при контроле предполагается что нужно передать какие то параметры (настройки) - Это Input (ну как бы в переводе) и получить результат запроса - он сохраняется в OutPut. Почему я взял в кавычки "очень логично" потому что в моей доке результат GET_CONFIG почему то возвращается в Input (т.е. в первый указатель) хотя логика кричит о том что нужно бы соблюсти единообразие и читабельность.
Хотя не факт, что моя дока правильная, и что все интерфейсные библиотеки делают все как в доке.

Добавлено через 9 минут
Цитата Сообщение от kirson Посмотреть сообщение
Что такое 5?
http://www.drewtech.com/suppor... error.html

INVALID_IOCTL_VALUE
1
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 18
12.09.2019, 06:18
Цитата Сообщение от _ladan_ Посмотреть сообщение
J2534Extended_OBJECT.GetConfig(ChannelID , ref sconfl);
Там нет такой функции. Я так понимаю, что вы мне показываете обёртку для IOCTL. Но ведь любая обёртка будет ссылаться к нативной функции, а она изначально вот такая
C#
1
2
3
4
5
6
7
public J2534Err GetConfig(int channelId, ref List<SConfig> config)
        {
            IntPtr input = IntPtr.Zero;
            IntPtr output = IntPtr.Zero;
 
            return (J2534Err)m_wrapper.Ioctl(channelId, (int)Ioctl.GET_CONFIG, input, output);
        }
где input и output - указатели IntPtr. И как тут без маршалинга?

Добавлено через 4 минуты
Цитата Сообщение от _ladan_ Посмотреть сообщение
http://www.drewtech.com/support/passthru/possible-error.html
INVALID_IOCTL_VALUE
Спасибо! Просто в исходной структуре нет
C#
1
INVALID_IOCTL_VALUE = 0x05
.
Добавлю!!!

Добавлено через 4 минуты
Цитата Сообщение от _ladan_ Посмотреть сообщение
Почему я взял в кавычки "очень логично" потому что в моей доке результат GET_CONFIG почему то возвращается в Input (т.е. в первый указатель) хотя логика кричит о том что нужно бы соблюсти единообразие и читабельность.
Во во, не понятно, почему и запрос , того, чего желаем получить передается в Input и ответ тоже в Input???. Он там перезаписывается что-ли или добавляется?

Добавлено через 4 минуты
Цитата Сообщение от _ladan_ Посмотреть сообщение
В процедуру получения конфигурации нужно передать УКАЗАТЕЛЬ на ЛИСТ настроек, а не УКАЗАТЕЛЬ на настройку (как у вас),
Не у меня, а и в описании
pInput - Pointer to input structure. Must be NULL if parameter is unused.

pOutput - Pointer to output structure. Must be NULL if parameter is unused.
Добавлено через 4 минуты
Хотя там же этот указатель ссылается на список

GET_CONFIG
Reports various CarDAQ configuration parameters. The values of multiple parameters may be obtained with a single function call, by initializing an array of SCONFIG items.

C#
1
2
3
4
5
6
7
8
9
10
unsigned long status;
SCONFIG CfgItem;
SCONFIG_LIST Input;
 
CfgItem.Parameter = DATA_RATE;
CfgItem.Value = 0;
Input.NumOfParams = 1;
Input.ConfigPtr = &CfgItem;
 
status = PassThruIoctl(ChannelID, GET_CONFIG, &Input, NULL);
0
5 / 5 / 0
Регистрация: 01.02.2019
Сообщений: 22
12.09.2019, 11:18
Цитата Сообщение от kirson Посмотреть сообщение
нативной функции, а она изначально вот такая
Ну так что мешает ей воспользоваться? я именно ее и имел ввиду постом выше.

Добавлено через 4 минуты
Цитата Сообщение от kirson Посмотреть сообщение
И как тут без маршалинга?
есть же свойство
C#
1
.ListPtr
я вам в коде написал.понятно что перевод в неуправляемую зону там все равно присутствует, но зачем по 10 раз то?
0
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 18
12.09.2019, 16:56
Цитата Сообщение от _ladan_ Посмотреть сообщение
Ну так что мешает ей воспользоваться? я именно ее и имел ввиду постом выше.
И как ей воспользоваться, она же пустая. Там с нулевыми указателями ничего не работает. Их надо инициализировать

Добавлено через 4 часа 37 минут
Сделал, но пока только для одного параметра

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public J2534Err GetConfig(int channelId, ref List<SConfig> config)
        {
            SConfig sconf = new SConfig();
            SConfigList sconfl = new SConfigList();
            sconf.Parameter = ConfigParameter.DATA_RATE; sconf.Value = 0;
            sconfl.Count = 1;
            IntPtr input = Marshal.AllocHGlobal(Marshal.SizeOf(sconf));
            IntPtr input1 = Marshal.AllocHGlobal(Marshal.SizeOf(sconfl));
            Marshal.StructureToPtr(sconf, input, false);
            sconfl.ListPtr = input;
            Marshal.StructureToPtr(sconfl, input1, false);
            var ret = (J2534Err)m_wrapper.Ioctl(channelId, (int)Ioctl.GET_CONFIG, input1, IntPtr.Zero);
            var config1 = (SConfigList)Marshal.PtrToStructure(input1, typeof(SConfigList));
            var list = config1.GetList();
            return ret;
        }
Добавлено через 1 минуту
в переменной list - полученный ответ

Добавлено через 1 минуту
Вот такая была...
C#
1
2
3
4
5
6
7
public J2534Err GetConfig(int channelId, ref List<SConfig> config)
        {
            IntPtr input = IntPtr.Zero;
            IntPtr output = IntPtr.Zero;
 
            return (J2534Err)m_wrapper.Ioctl(channelId, (int)Ioctl.GET_CONFIG, input, output);
        }
Добавлено через 3 минуты
Буду думать, как одной командой получить несколько параметров
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.09.2019, 16:56

Эмулирование работы с устройствами ввода
Есть ли возможность посредством C# заставить компьютер думать, что мы нажали на клавиатуре определённую клавишу или передвинули мышь? Мне...

Как работать с USB устройствами
Всем Добрый день!!! Скажите пожалуйста как средствами C# работать с Usb устройствами?

Обмен данными между устройствами
Всем привет. Требуется совет по поводу реализации обмена данными, между несколькими устройствами. Первое устройство ПК, только у которого...

Взаимодействие с принтерами и др. внешними устройствами
Кто подскажет, как работать с принтерами, сканерами и т.д. в C#? Может, есть какая-то библиотека для этого?

Какие библиотеки использовать для работы с Wi-Fi устройствами
Доброго времени суток.Такой вопрос,какие dll библиотеки,функции и т.д. использовать для работы с вай фай устройствами?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru