smk 0 3 апреля, 2008 Опубликовано 3 апреля, 2008 · Жалоба Пробую создать программу для управления прибором с помощью ПК. Програму пишу в среде C++ Builder 6. Подключил библиотеку ComPort. Собственно по ней и вопрос. А в теме по AVR потому что девайс на AVR и еще потому что не знаю куда еще можно. Сам вопрос: Вынося на поле Form1 любую из кнопок-компонент при попытке компиляции получаю для строки /* Exception.CreateRes */ inline __fastcall EComPort(int Ident)/* overload */ : Sysutils::Exception(Ident) { } сообщение об ошибке: [C++ Error] CPort.hpp(683): E2238 Multiple declaration for '_fastcall EComPort::EComPort(int)' а для строки: __fastcall EComPort(int ACode); сообщение об ошибке:[C++ Error] CPort.hpp(675): E2344 Earlier declaration of '_fastcall EComPort::EComPort(int)' также для строки: typedef TBitmap TLedBitmap; сообщение об ошибке: [C++ Error] CPortCtl.hpp(242): E2015 Ambiguity between 'TBitmap' and 'Windows::TBitmap' Это у всех так? Помогите разобраться. Заранее спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=GM= 0 3 апреля, 2008 Опубликовано 3 апреля, 2008 · Жалоба Сам вопрос: вынося на поле Form1 любую из кнопок-компонент при попытке компиляции получаю для строки сообщение об ошибке: [C++ Error] CPort.hpp(683): E2238 Multiple declaration for '_fastcall EComPort::EComPort(int)' Это у всех так? Помогите разобраться. Заранее спасибо! У вас же всё написано: Multiple declaration, значит несколько раз объявили. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 3 апреля, 2008 Опубликовано 3 апреля, 2008 · Жалоба Это у всех так? Помогите разобраться. Заранее спасибо! С компонентом не работал, а по работе с портом - все довольно просто - точно также как с файлом. Почитайте тут: http://bcbsql.narod.ru/pub/rabcomm.htm Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sysel 0 4 апреля, 2008 Опубликовано 4 апреля, 2008 · Жалоба Все эти компоненты для порта от лукавого... По собственному опыту знаю, что потом как вылезет какой-нибудь нюанс использования, что придётся в конечном итоге всё руками переписывать. Так что пишите сразу на WinAPI. В дополнение, чтобы предостеречь от ошибок: Работа с портом(ReadFile, WriteFile) должна осуществляться только в том потоке, который открыл этот порт (CreateFile). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gena_dj 0 4 апреля, 2008 Опубликовано 4 апреля, 2008 · Жалоба Работа с портом(ReadFile, WriteFile) должна осуществляться только в том потоке, который открыл этот порт (CreateFile). Это еще почему? Можно открыть в одном потоке, а читать в другом. Единственное, что нельзя делать - одновременно пытаться работать в двух разных потоках. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Axxel 0 4 апреля, 2008 Опубликовано 4 апреля, 2008 · Жалоба Это у всех так? Помогите разобраться. Заранее спасибо! Если у вас установлен компонент от Dejan (TComPort) то в ридми файле, там написано, что нужно закомментировать пару строчек в заголовочниках. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
raslmc 0 4 апреля, 2008 Опубликовано 4 апреля, 2008 · Жалоба Пробую создать программу для управления прибором с помощью ПК. Програму пишу в среде C++ Builder 6. Подключил библиотеку ComPort. Собственно по ней и вопрос. А в теме по AVR потому что девайс на AVR и еще потому что не знаю куда еще можно. Сам вопрос: Вынося на поле Form1 любую из кнопок-компонент при попытке компиляции получаю для строки /* Exception.CreateRes */ inline __fastcall EComPort(int Ident)/* overload */ : Sysutils::Exception(Ident) { } сообщение об ошибке: [C++ Error] CPort.hpp(683): E2238 Multiple declaration for '_fastcall EComPort::EComPort(int)' а для строки: __fastcall EComPort(int ACode); сообщение об ошибке:[C++ Error] CPort.hpp(675): E2344 Earlier declaration of '_fastcall EComPort::EComPort(int)' также для строки: typedef TBitmap TLedBitmap; сообщение об ошибке: [C++ Error] CPortCtl.hpp(242): E2015 Ambiguity between 'TBitmap' and 'Windows::TBitmap' Это у всех так? Помогите разобраться. Заранее спасибо! Зайдите на http://www.pcports.ru/ Может там найдете что нибудь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bloodden 0 7 апреля, 2008 Опубликовано 7 апреля, 2008 · Жалоба Вы, скорее всего, подключили инклюдом в нескольких файлах, а потом их подключили и.т.д. В итоге в одном самом главном :) файле получилось несколько раз подключен один и тот же файл с ком портом вашим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 9 апреля, 2008 Опубликовано 9 апреля, 2008 · Жалоба Если у вас установлен компонент от Dejan (TComPort) то в ридми файле, там написано, что нужно закомментировать пару строчек в заголовочниках. Не нашел где это написано... подскажите плз! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Axxel 0 10 апреля, 2008 Опубликовано 10 апреля, 2008 · Жалоба пункт 7, C++ Builder notes файл прикрепил. readme.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gagik 0 10 апреля, 2008 Опубликовано 10 апреля, 2008 · Жалоба Попробуй этот класс. Я его часто использую с AVR в Visual C++ 6.0 - все нормально работает. serial.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 10 апреля, 2008 Опубликовано 10 апреля, 2008 (изменено) · Жалоба использую с AVR в Visual C++ 6.0 интересует для C++ Builder 6.0 7. C++ Builder Notes ------------------------------------------------------------------------------ The .hpp file C++ Builder creates for cport.pas will have a bug in it. The first time you compile a project, you will get one or two duplicate definitions within the EComPort exception class. It seems to be safe to delete or comment out the duplicates. Also, the CPortCtl.HPP may have a bug in it. If you get an error about the following being ambiguous; typedef TBitmap TLedBitmap; Change it to: typedef Graphics::TBitmap TLedBitmap; If someone knows how to fix these more cleanly, please post what you find to the CPort Forum so that we can incorporate your findings in future revisions. Если четно, то с английским не настолько хорошо чтоб быть уверенным в правильности своих действий. Если можно, то подскажите что и как. Спасибо! Я закомментировал строчки, на которые указал компилятор. Начал компилировать... теперь надо как-то проверить работоспособность... Изменено 10 апреля, 2008 пользователем smk Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Axxel 0 11 апреля, 2008 Опубликовано 11 апреля, 2008 · Жалоба Я проверял-работает :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 11 апреля, 2008 Опубликовано 11 апреля, 2008 · Жалоба Я проверял-работает Разбираюсь с хелпом. А есть ли у Вас какойнить примерчик: обнаружить все порты-открыть порт-отправить пару байт-принять пару байт? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bugzilla 0 12 апреля, 2008 Опубликовано 12 апреля, 2008 · Жалоба Это еще почему? Можно открыть в одном потоке, а читать в другом. Единственное, что нельзя делать - одновременно пытаться работать в двух разных потоках. Можно работать не только в разных потоках, но и в разных процессах при применении некоторой эквилибристики. Естественно, механизмы синхронизации никто не отменял. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться