Jump to content

    
Sign in to follow this  
smk

Управление прибором на AVR через COM-port компьютера

Recommended Posts

Пробую создать программу для управления прибором с помощью ПК. Програму пишу в среде 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'

 

Это у всех так? Помогите разобраться. Заранее спасибо!

Share this post


Link to post
Share on other sites
Сам вопрос: вынося на поле Form1 любую из кнопок-компонент при попытке компиляции получаю для строки

сообщение об ошибке: [C++ Error] CPort.hpp(683): E2238 Multiple declaration for '_fastcall EComPort::EComPort(int)'

Это у всех так? Помогите разобраться. Заранее спасибо!

У вас же всё написано: Multiple declaration, значит несколько раз объявили.

Share this post


Link to post
Share on other sites
Это у всех так? Помогите разобраться. Заранее спасибо!

С компонентом не работал, а по работе с портом - все довольно просто - точно также как с файлом.

Почитайте тут:

 

http://bcbsql.narod.ru/pub/rabcomm.htm

Share this post


Link to post
Share on other sites

Все эти компоненты для порта от лукавого...

По собственному опыту знаю, что потом как вылезет какой-нибудь нюанс использования, что придётся в конечном итоге всё руками переписывать.

Так что пишите сразу на WinAPI.

 

В дополнение, чтобы предостеречь от ошибок:

Работа с портом(ReadFile, WriteFile) должна осуществляться только в том потоке, который открыл этот порт (CreateFile).

Share this post


Link to post
Share on other sites
Работа с портом(ReadFile, WriteFile) должна осуществляться только в том потоке, который открыл этот порт (CreateFile).

Это еще почему?

Можно открыть в одном потоке, а читать в другом.

 

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

Share this post


Link to post
Share on other sites
Это у всех так? Помогите разобраться. Заранее спасибо!

Если у вас установлен компонент от Dejan (TComPort)

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

Share this post


Link to post
Share on other sites
Пробую создать программу для управления прибором с помощью ПК. Програму пишу в среде 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/

Может там найдете что нибудь.

Share this post


Link to post
Share on other sites

Вы, скорее всего, подключили инклюдом в нескольких файлах, а потом их подключили и.т.д. В итоге в одном самом главном :) файле получилось несколько раз подключен один и тот же файл с ком портом вашим.

Share this post


Link to post
Share on other sites
Если у вас установлен компонент от Dejan (TComPort)

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

Не нашел где это написано... подскажите плз!

Share this post


Link to post
Share on other sites
использую с 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.

 

Если четно, то с английским не настолько хорошо чтоб быть уверенным в правильности своих действий. Если можно, то подскажите что и как. Спасибо!

 

Я закомментировал строчки, на которые указал компилятор. Начал компилировать... теперь надо как-то проверить работоспособность...

Edited by smk

Share this post


Link to post
Share on other sites
Я проверял-работает

 

Разбираюсь с хелпом. А есть ли у Вас какойнить примерчик: обнаружить все порты-открыть порт-отправить пару байт-принять пару байт?

Share this post


Link to post
Share on other sites
Это еще почему?

Можно открыть в одном потоке, а читать в другом.

 

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

Можно работать не только в разных потоках, но и в разных процессах при применении некоторой эквилибристики. Естественно, механизмы синхронизации никто не отменял.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this