| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Помогите рабобраться в коде. Работа с COM портами |
| Автор: AnomaliA 24.9.2009, 15:35 | ||||
У меня тут вот какая проблема. Есть компонент для работы с ком портом в котором есть класс, читающий поток
Когда этот компонент работает с приложением, то всё нормально, а когда я его добавляю в библиотеку то не вызывается метод Execute, который читает ответы COM Порта. Почему такое может быть? Конструктор класса вызывается.
|
| Автор: kami 24.9.2009, 17:27 |
| при добавлении сообщения есть очень полезная кнопочка "Код", которая упрощает чтение кода. По сабжу - где в библиотеке вызывается конструктор потока? То есть - 1. отдельная функция для его создания 2. при инициализации библиотеки 3. etc... Если п.2 - то срочно переделать в п.1 и будет счастье. Сам не так давно напоролся на эти грабли. |
| Автор: AnomaliA 24.9.2009, 19:48 | ||
| Я не гуру в этом деле, поэтому если можно немного попроще Как и где его нужно объявлять? У меня было так, сам компонент я добавил на форму, которая была отдельным Юнитом, а форму создавал в теле библиотеки
|
| Автор: kami 24.9.2009, 22:43 | ||||||||
Мало информации. Где конкретно в теле библиотеки находится эта строка кода? Я имею ввиду что-то типа (далее - курсивом то, как примерно должна была подаваться информация): эта строка находится в процедуре:
Эта процедура вызывается здесь, в коде инициализации длл
Если код так и выглядит, то срочно переделать на что-нибудь эдакое:
И уже из основной программы после подключения библиотеки вызывать процедуру в dll т.е.: (код основной программы)
|
| Автор: AnomaliA 25.9.2009, 10:26 |
| К сожелению это не сработало ((( Хотя может и я нетак выразился, вообщем вот примерно код компонента В нем все функции которые работают когда подгружаешь форму с помошью Create, Но вот процедура TReadThread.Execute нехочет принимать ответ от СОМ порта. В приложениях она выполняется, а вот в библиотеке почему-то нет ((( с чем это может быть связанно? |
| Автор: AnomaliA 25.9.2009, 15:41 |
| Нашёл в чем ошибка, но от этого не легче. Всё упирается в метод Synchronize второго потока, который ждет ответа от ком порта, и насколько я почитал в интернете это нерешаемо. |
| Автор: kami 25.9.2009, 18:22 |
синхронизация двух дополнительных потоков делается не через Synchronize. И это решаемо. P.S.так как ты отказываешься отвечать на мои вопросы, давать дополнительную информацию, необходимую для решения проблемы, покидаю эту тему. |
| Автор: AnomaliA 26.9.2009, 11:31 |
| kami, прости если что не так, просто я действительно нашел в чем там проблема, и всё что я писал касаемо метода Create тут оказалось непричем. А насколько я почитал касаемо Synchronize в DLL выхода нигде не нашёл, но если что подскажешь буду благодарен |
| Автор: СЭНСЭЙ 2.10.2009, 13:14 |
| :() |