|
1 / 1 / 0
Регистрация: 23.05.2012
Сообщений: 16
|
|||||||
Ошибка ДЛЛ для связи весового контроллера с ПК23.05.2012, 11:09. Показов 3924. Ответов 36
Метки нет (Все метки)
Добрый день!
Передо мной поставлена задача написания программы для связи весового контроллера с ПК через СОМ-порт. Мне предоставлена готовая DLL-библиотека(без исходника) для связи с ПК с контроллером. Программа должна вести учет взвешиваний, но суть не в этом... Я никак не могу разобратться с DLL. То есть как бы все просто... Есть 3 функции для работы с весами(контроллером). Для регистрации весов, для получения мгновенного веса и для получения стабильного веса. С документации библотеки:
Код компилируется. Проблема в том, что у меня постоянно выбивает ошибку памяти Access Violation at Adress... при обращении к функциям. Выбивает ошибку на переменной p_szErrorTextBuffer. И выбивает в основном на функции Scales_GetImmidiateWeightr(...). Вот кусок кода с функциями:
0
|
|||||||
| 23.05.2012, 11:09 | |
|
Ответы с готовыми решениями:
36
Написание драйвера для терминала весового оборудования
|
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 23.05.2012, 12:59 | |
|
вы должны передавать в функцию указатель на массив указанной (простите за каламбур) длины. если у вас заявлено p_uErrorTextBufferLegth = 100, то почему вы передаете указатель на пустую строку (LPSTR p_szErrorTextBuffer="")?
1
|
|
|
1 / 1 / 0
Регистрация: 23.05.2012
Сообщений: 16
|
|
| 23.05.2012, 13:38 [ТС] | |
|
Потому что, как я понял, эту строку должна формировать непосредственно функция самой ДЛЛ библиотеки, указывая на причину ошибки, если таковая есть.
Добавлено через 6 минут
0
|
|
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 23.05.2012, 16:22 | |
|
она и формирует. в предоставляемом вами буфере. а если вы ей не даете этот буфер она пишет данные непойми куда (туда куда указывает указатель) полагая что на том месте лежит массив длиной в 100 байт. при этом естественно будет ошибка доступа.
1
|
|
|
1 / 1 / 0
Регистрация: 23.05.2012
Сообщений: 16
|
|||||||||||
| 23.05.2012, 22:19 [ТС] | |||||||||||
|
LPSTR p_szErrorTextBuffer - это мой буфер... Я его указал в парамнтрах функций.
Добавлено через 28 минут Прописал все таки массив.
Но на функции получения веса:
0
|
|||||||||||
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
|
| 23.05.2012, 22:36 | |
|
все-таки меня очень интересует такая деталь: как с одним DLL Вы построили проект с использованием функций этой библиотеки? Можно вкратце... - извлекали LIB, создавали соотв. H файл... - как?!
0
|
|
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 24.05.2012, 09:21 | |
|
конечно ваш буфер. поэтому он и должен быть выделен вами. функция его не выделяет. во всяком случае я догадываюсь об этом исходя из того что в функцию передается указатель и длинна буфера (если бы выделение памяти под строку ошибки делала функция она принимала бы в качестве параметра указатель на указатель и длина была бы ей не нужна). длина буфера передаваемая в функцию соответствует его фактической длине? то есть не так что бы массив длиной 50 а передаете в функцию длину 100?
1
|
|
|
1 / 1 / 0
Регистрация: 23.05.2012
Сообщений: 16
|
|||||||||||||||||||||
| 24.05.2012, 11:29 [ТС] | |||||||||||||||||||||
|
nick42, да, в Import Type Librrary я добавил DLL. Клас Scales появился. Так же в дистрибутиве библиотеи имелись Хэдер-файли для С++. Вот их "начинка":
ScalesLib.h
Так же в дистрибутиве ДЛЛ имеется пример на VBS, который работает, лично проверял.
0
|
|||||||||||||||||||||
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
||||||
| 24.05.2012, 12:06 | ||||||
|
я изменил вот так: __
0
|
||||||
|
1 / 1 / 0
Регистрация: 23.05.2012
Сообщений: 16
|
|
| 24.05.2012, 12:19 [ТС] | |
|
При компиляции, после вызова процедуры, программа создает какое-то окно и зависает, компилятор даже не выдает причин ошибки. Должен уходить, вечером отпишу еще, дам скрин. За помощь пока огромное спасибо!
0
|
|
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 24.05.2012, 13:08 | |
|
если нам не интересна детализация ошибки допускается ли передача в качестве буфера NULL?
0
|
|
|
1 / 1 / 0
Регистрация: 23.05.2012
Сообщений: 16
|
|
| 24.05.2012, 20:46 [ТС] | |
|
http://ifolder.ru/30694226 - тут библиотека и документация и примеры.
Правда документация на украинском, но гугл транслейт, если что, переведет все без проблем Добавлено через 1 минуту vxg, При НУЛЛ тоже ошибка памяти Аксесс Виолейшн..
0
|
|
|
|
||
| 24.05.2012, 23:53 | ||
|
TC, не смешно.
1- там exe-ник в RAR-е ...проверять, что это самораспаковующийся архив, да на вирусы неохота 2- архивы и картинки принято прикладывать в теме, а не на файлопомойках ...это еще местный модератор сквозь пальцы смотрит, а я пока сомневаюсь, переносить ли тему к себе в раздел или нет
p.s.: а не подумывали напрямую поработать с весами, минуя DLL-ку? Обмен с ними обычно в аски, включаем утилиту от производителя, ведь должна быть тестовая, снифферим portmon и выделяем запросы, после формируем такие же у себя. Это опять лирическое отступление, доков я пока не увидел.
0
|
||
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
|
| 25.05.2012, 01:09 | |
|
Ваш проект на BCB 6.0 у меня скомпилировался без ошибок и запускается тоже нормально ("проект", конечно, с единственной кнопкой). К проекту подключил библиотеку ScalesDll.lib , но ее пришлось переконвертировать программой coff2omf.exe. Убедиться в работоспособности, понятно, не могу, так как не имею соотв. устройства, да и не вникал в смысл этой библиотеки. Во всяком случае пока никакого обращения к порту СОМ не происходит (да и не должно, мне кажется; все-таки эти Н-файлы неполноценные какие-то; к DLL обращения тоже не происходит. Разбираться надо...).
0
|
|
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 25.05.2012, 09:22 | |
|
у меня проходит регистрацию и падает на Scales_GetImmediateValue с сообщением "обратилась к адресу 0". звонить кулибину не пробывали?
0
|
|
|
1 / 1 / 0
Регистрация: 23.05.2012
Сообщений: 16
|
|
| 25.05.2012, 12:10 [ТС] | |
|
raxp, разработка местного программиста, потому и на украинском язіке. Основные аспекты я перевел в одном с предыдущих постов. Если нужно, переведу все.
Прощу прощения за несоответствие неких правил форума, ссылок и т.п. Исправлюсь. На прямую не пробовал. К сожалению, особых идей нету. Связь с контроллером можно вести через Hyper Terminal. Это к слову. raxp, да, я тоже конвертировал. Извините, что забыл это указать. Кстати долго мучился. vxg, вот и у меня аналогичная ошибка памяти, которая и стала причиной создания поста.
0
|
|
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
|||||||
| 25.05.2012, 18:04 | |||||||
(Windows 7 32 ultim. BCB 5.0 )
0
|
|||||||
|
return (true);
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
|
|
| 25.05.2012, 18:22 | |
|
0
|
|
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
|
| 26.05.2012, 23:29 | |
|
Сегодня попробовал и на RAD XE2; похоже - работает (правда, похоже ТС ушел искать счастья в другие палестины; или таки добился работы с той длл-кой). Достаточно установить Scales v1.08 и затем добавить из Import a type library те пару компонентов (см.выше). Во всяком случае сообщения об ошибке подключения программа получает из той злополучной DLL.
0
|
|
| 26.05.2012, 23:29 | |
|
Помогаю со студенческими работами здесь
20
нет связи контроллера Schleicher MCS 20-21 и терминальным эвм DEVIPC MSC Rechnerbox на линуксе Внутреняя ошибка связи или нет связи с удалённым сервером Cтранная ошибка в подключении длл (char, wchar_t) Можно с ДЛЛ для MSVC 6 работать из С++ для Нета ? CDialogEx + dll, После завершения модального диалога (CDialogEx) из длл-библиотеки работа длл-библиотеки прерывается Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|