реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Управление прибором на AVR через COM-port компьютера, нужна помощь
smk
сообщение Apr 3 2008, 20:44
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



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

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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Apr 3 2008, 22:18
Сообщение #2


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(smk @ Apr 3 2008, 19:44) *
Сам вопрос: вынося на поле Form1 любую из кнопок-компонент при попытке компиляции получаю для строки
сообщение об ошибке: [C++ Error] CPort.hpp(683): E2238 Multiple declaration for '_fastcall EComPort::EComPort(int)'
Это у всех так? Помогите разобраться. Заранее спасибо!

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


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 3 2008, 22:29
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(smk @ Apr 3 2008, 22:44) *
Это у всех так? Помогите разобраться. Заранее спасибо!

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

http://bcbsql.narod.ru/pub/rabcomm.htm
Go to the top of the page
 
+Quote Post
sysel
сообщение Apr 4 2008, 04:40
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



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

В дополнение, чтобы предостеречь от ошибок:
Работа с портом(ReadFile, WriteFile) должна осуществляться только в том потоке, который открыл этот порт (CreateFile).
Go to the top of the page
 
+Quote Post
gena_dj
сообщение Apr 4 2008, 05:13
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 24-03-08
Пользователь №: 36 189



Цитата(sysel @ Apr 4 2008, 10:40) *
Работа с портом(ReadFile, WriteFile) должна осуществляться только в том потоке, который открыл этот порт (CreateFile).

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

Единственное, что нельзя делать - одновременно пытаться работать в двух разных потоках.
Go to the top of the page
 
+Quote Post
Axxel
сообщение Apr 4 2008, 06:11
Сообщение #6


Частый гость
**

Группа: Новичок
Сообщений: 140
Регистрация: 31-01-07
Из: Челябинск
Пользователь №: 24 896



Цитата(smk @ Apr 4 2008, 02:44) *
Это у всех так? Помогите разобраться. Заранее спасибо!

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


--------------------
Если боишься - не говори. если сказал - не бойся. ©
Go to the top of the page
 
+Quote Post
Ruslan Konovalov
сообщение Apr 4 2008, 11:01
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 25-07-07
Пользователь №: 29 364



Цитата(smk @ Apr 3 2008, 23:44) *
Пробую создать программу для управления прибором с помощью ПК. Програму пишу в среде 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/
Может там найдете что нибудь.
Go to the top of the page
 
+Quote Post
bloodden
сообщение Apr 7 2008, 13:01
Сообщение #8


Бывалый
***

Группа: Validating
Сообщений: 375
Регистрация: 19-10-05
Из: Kiev, UA
Пользователь №: 9 853



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


--------------------
Заходите кому надо на мой сайт
Go to the top of the page
 
+Quote Post
smk
сообщение Apr 9 2008, 20:42
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



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

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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Axxel
сообщение Apr 10 2008, 01:56
Сообщение #10


Частый гость
**

Группа: Новичок
Сообщений: 140
Регистрация: 31-01-07
Из: Челябинск
Пользователь №: 24 896



пункт 7, C++ Builder notes
файл прикрепил.
Прикрепленные файлы
Прикрепленный файл  readme.txt ( 11.1 килобайт ) Кол-во скачиваний: 654
 


--------------------
Если боишься - не говори. если сказал - не бойся. ©
Go to the top of the page
 
+Quote Post
gagik
сообщение Apr 10 2008, 05:51
Сообщение #11





Группа: Новичок
Сообщений: 2
Регистрация: 24-09-04
Пользователь №: 714



Попробуй этот класс. Я его часто использую с AVR в Visual C++ 6.0 - все нормально работает.
Прикрепленные файлы
Прикрепленный файл  serial.rar ( 5.7 килобайт ) Кол-во скачиваний: 89
 
Go to the top of the page
 
+Quote Post
smk
сообщение Apr 10 2008, 18:34
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата
использую с 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.

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

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

Сообщение отредактировал smk - Apr 10 2008, 18:50


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Axxel
сообщение Apr 11 2008, 01:52
Сообщение #13


Частый гость
**

Группа: Новичок
Сообщений: 140
Регистрация: 31-01-07
Из: Челябинск
Пользователь №: 24 896



Я проверял-работает smile.gif


--------------------
Если боишься - не говори. если сказал - не бойся. ©
Go to the top of the page
 
+Quote Post
smk
сообщение Apr 11 2008, 19:41
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата
Я проверял-работает


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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Andrew O. Shadou...
сообщение Apr 12 2008, 17:39
Сообщение #15


Участник
*

Группа: Свой
Сообщений: 37
Регистрация: 13-05-07
Из: Minsk, Belarus
Пользователь №: 27 694



Цитата(gena_dj @ Apr 4 2008, 08:13) *
Это еще почему?
Можно открыть в одном потоке, а читать в другом.

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

Можно работать не только в разных потоках, но и в разных процессах при применении некоторой эквилибристики. Естественно, механизмы синхронизации никто не отменял.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.0148 секунд с 7
ELECTRONIX ©2004-2016