lis Опубликовано 23 июля, 2015 Поделиться Опубликовано 23 июля, 2015 Здравствуйте Собственно вопрос в названии: подскажите, кто знает, подходящие компоненты. Раньше пользовался AsyncPro, но в FireMonkey от него получаю ошибки вида [bcc32 Error] Unit1.h(17): E2015 Ambiguity between 'Vcl::Forms::TForm' and 'Fmx::Forms::TForm' Full parser context Unit1.cpp(6): #include Unit1.h Unit1.h(16): class TForm1 Заранее спасибо! Цитата Ссылка на комментарий
0 kami Опубликовано 24 июля, 2015 Поделиться Опубликовано 24 июля, 2015 (изменено) Поменяйте объявления в uses, компилятор вам же подсказывает - что на что надо заменить. Но я что-то сомневаюсь, что самому компоненту нужны формы. Скорее всего, вы пытаетесь скомпилировать приложение, использующее компонент. Изменено 24 июля, 2015 пользователем kami Цитата Ссылка на комментарий
0 lis Опубликовано 24 июля, 2015 Автор Поделиться Опубликовано 24 июля, 2015 (изменено) Получается, менять надо в исходниках компонента vcl на fmx? По-моему, это как-то "по-вандальному" что ли.. Есть недюжие сомнения, что после моих манипуляций компонента заработает нормально. Да и если я так сделаю - то старые проекты, которые на vcl написаны, получается уже не смогу пересобрать на этом ПК.. Я так понимаю, AsyncPro в принципе заточен под vcl и перетащить его значит нехило переписать.. Скомпилировать я пытаюсь пустую форму, на которую кинул один единственный компонент ком-порта. Изменено 24 июля, 2015 пользователем lis Цитата Ссылка на комментарий
0 kami Опубликовано 24 июля, 2015 Поделиться Опубликовано 24 июля, 2015 Я так понимаю, AsyncPro в принципе заточен под vcl и перетащить его значит нехило переписать.. AsyncPro заточен на работу с COM-портом средствами API Windows. Неохота устанавливать этот компонент, но я уверен, что зависимостей от FMX.xxxx модулей у него нет, как и зависимостей от VCL.xxxxx. Максимум - используется Forms для Application.ProcessMessages и Controls для возможности размещения на форме. В остальном переписывание не должно потребоваться. Раз вы умудрились положить компонент на FMX-форму, значит он уже скомпилирован и готов к использованию в FMX (поскольку Parent имеют разные типы), все остальное, скорее всего - ваши недочеты. Цитата Ссылка на комментарий
0 lis Опубликовано 27 июля, 2015 Автор Поделиться Опубликовано 27 июля, 2015 (изменено) Я не умудрялся, располагая компонент на форме, он был сразу доступен Зашел в заголовочные файлы, подключаемые к моему проекту при расположении компонента AsyncPro на форму. Увидел, что ему для работы нужны, как минимум #include <Vcl.Controls.hpp> // Pascal unit #include <Vcl.OleCtrls.hpp> // Pascal unit #include <Vcl.Forms.hpp> // Pascal unit #include <Vcl.Graphics.hpp> // Pascal unit Если не сложно, опишите подробнее, в чем мои недочеты и как их можно исправить? Что, где, на что заменить? ps AsyncPro установлен согласно мануалу (c++ builder xe3), в vcl все работает прекрасно. В fmx создаю новый проект, кидаю на него один компонент com-порта (добавляются два заголовочных файла #include "OoMisc.hpp" #include "AdPort.hpp") и, при запуске, начинаются Ambiguity between Изменено 27 июля, 2015 пользователем lis Цитата Ссылка на комментарий
0 Vitaldj Опубликовано 27 июля, 2015 Поделиться Опубликовано 27 июля, 2015 Что то мне подсказывает, что письмена с аббревиатурой Vcl, тут работать не будут, не тот фреймворк. Есть вещи, которые заточены исключительно под Vcl. И Ole объекты автоматизации, тоже исключительно прерогатива windows c Vcl. Хотя могу и ошибаться... Цитата Ссылка на комментарий
0 lis Опубликовано 27 июля, 2015 Автор Поделиться Опубликовано 27 июля, 2015 тогда может есть другой какой компонент для работы с com-портом в fmx? Цитата Ссылка на комментарий
0 Vitaldj Опубликовано 27 июля, 2015 Поделиться Опубликовано 27 июля, 2015 тогда может есть другой какой компонент для работы с com-портом в fmx? Понятия не имею, никогда не работал с com портом. Если такая проблема, почему на Vcl не возвращаешься? Цитата Ссылка на комментарий
0 lis Опубликовано 27 июля, 2015 Автор Поделиться Опубликовано 27 июля, 2015 Потому, что проект уже написан на fmx. И переписывать все под vcl - последнее дело Цитата Ссылка на комментарий
0 Vitaldj Опубликовано 27 июля, 2015 Поделиться Опубликовано 27 июля, 2015 Потому, что проект уже написан на fmx. И переписывать все под vcl - последнее дело Понятно. Ну Инет тебе в помощь. Может Ярослав поможет. Неплохой иностранный ресурс http://www.fmxexpress.com посмотри.... Цитата Ссылка на комментарий
0 lis Опубликовано 27 июля, 2015 Автор Поделиться Опубликовано 27 июля, 2015 ок, спасибо! Цитата Ссылка на комментарий
0 krapotkin Опубликовано 27 июля, 2015 Поделиться Опубликовано 27 июля, 2015 (изменено) вполне можно без компонентов пользоваться просто WinApi portNum='\\.\COM28'; CommHandle:= CreateFile(portNum,GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED,0); ссылка Изменено 27 июля, 2015 пользователем krapotkin Евгений Корепов, Zawuza и Brovin Yaroslav 3 Цитата Ссылка на комментарий
0 Вячеслав Опубликовано 27 июля, 2015 Поделиться Опубликовано 27 июля, 2015 Я тоже в своем проекте пользуюсь COM портом для общения с контроллером. могу выложить, если интересно. Цитата Ссылка на комментарий
0 lis Опубликовано 27 июля, 2015 Автор Поделиться Опубликовано 27 июля, 2015 вполне можно без компонентов пользоваться просто WinApi portNum='\\.\COM28'; CommHandle:= CreateFile(portNum,GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED,0); ссылка Спасибо! На первый взгляд, по ссылке куда меньше текста=) Проще разобраться! Я тоже в своем проекте пользуюсь COM портом для общения с контроллером. могу выложить, если интересно. напрямую через WinAPI? Да, очень интересно! Цитата Ссылка на комментарий
0 Вячеслав Опубликовано 28 июля, 2015 Поделиться Опубликовано 28 июля, 2015 Авторство всецело не мое, только правки вносил, т.к. в разных версиях студии код вел себя по-разному. Прощу прощения за то, что выкладываю в неудобной форме, просто из моего проекта сейчас это будет уже достаточно проблематично вытащить. Код для использования: На форме лежат Мемо, кнопки открытия/закрытия, эдит для отправляемых текстов и кнопка отправить. в паблике у формы добавляем объект GPort: TComPort; // ****************************************************************************** // ПРОЦЕДУРЫ РАБОТЫ С COM ПОРТОМ // открываем порт procedure TFormChannels.OpenPort(PortNum: Byte); begin GPort := TComPort.Create(PortNum, br9600); GPort.OnRead := FormChannels.OnRead; GFlagOpen := true; FormChannels.ButtonClosePort.Enabled := true; end; // закрываем порт procedure TFormChannels.ClosePort; begin GPort.Free; end; // отправляем в порт данные procedure TFormChannels.WritePort(strWrite: string); var arrBytes: array of Byte; i: Integer; begin if GFlagOpen = False then // проверяем, открыт ли порт OpenPort(strtoint(edtPort.Text)); // если нет, то открываем SetLength(arrBytes, Length(strWrite)); for i := Low(arrBytes) to High(arrBytes) do arrBytes[i] := Ord(strWrite[i + 1]); GPort.Write(arrBytes); arrBytes := nil; end; // читаем данные из порта procedure TFormChannels.OnRead(Sender: TObject; ReadBytes: array of Byte); var i: Integer; begin memRead1.Lines.BeginUpdate; for i := Low(ReadBytes) to High(ReadBytes) do begin if i > Low(ReadBytes) then memRead1.Text := memRead1.Text; // + '.'; memRead1.Text := memRead1.Text + char(ReadBytes[i]); end; // подчищаем заполняющийся Мемо if memRead1.Lines.Count > 5 then begin // memRead1.Clear; memRead1.Lines.Delete(0); memRead1.Lines.Delete(1); end; memRead1.Lines.EndUpdate; end; procedure TFormChannels.ButtonClosePortClick(Sender: TObject); begin ClosePort; end; // открываем порт кнопкой procedure TFormChannels.ButtonOpenPortClick(Sender: TObject); begin OpenPort(strtoint(edtPort.Text)); end; // отправляем в порт данные кнопкой procedure TFormChannels.btnWriteClick(Sender: TObject); begin WritePort(FormChannels.edtWrite.Text); end; // КОНЕЦ ПРОЦЕДУР РАБОТЫ С COM ПОРТОМ // ****************************************************************************** ComPort.zip DrunyaRuma, Ильдар, Rusland и 5 других 8 Цитата Ссылка на комментарий
0 lis Опубликовано 29 июля, 2015 Автор Поделиться Опубликовано 29 июля, 2015 огромное спасибо! Цитата Ссылка на комментарий
0 Вячеслав Опубликовано 29 июля, 2015 Поделиться Опубликовано 29 июля, 2015 Пожалуйста. Будут вопросы - обращайтесь! Цитата Ссылка на комментарий
0 DrunyaRuma Опубликовано 1 февраля, 2017 Поделиться Опубликовано 1 февраля, 2017 Добрый день, а будет ли этот модуль работать под Android? Нет ли у вас библиотеки или компонента для Delphi для работы с ComPort под Android (FTDI, Prilific? etc.) Цитата Ссылка на комментарий
0 GASCHE Опубликовано 2 февраля, 2017 Поделиться Опубликовано 2 февраля, 2017 Здесь пытались. Цитата Ссылка на комментарий
0 Rusland Опубликовано 2 февраля, 2017 Поделиться Опубликовано 2 февраля, 2017 18 часов назад, DrunyaRuma сказал: Добрый день, а будет ли этот модуль работать под Android? Нет ли у вас библиотеки или компонента для Delphi для работы с ComPort под Android (FTDI, Prilific? etc.) Для Prolific PL2303 есть платная библиотека Winsoft ComPort for Android Цитата Ссылка на комментарий
0 DrunyaRuma Опубликовано 3 февраля, 2017 Поделиться Опубликовано 3 февраля, 2017 (изменено) Да я видел ее, у них не только для Prolific, но и для других есть. Скачал, установил, судя по всему они тоже за основу брали Java библиотеки и даже открытые из GitHub. Если получится что-то отпишусь. Изменено 3 февраля, 2017 пользователем DrunyaRuma Rusland 1 Цитата Ссылка на комментарий
0 Александр Журавлев Опубликовано 20 апреля, 2020 Поделиться Опубликовано 20 апреля, 2020 Скажите, появились ли за последние 3 года в fireminkey библиотеки, работающие с ком портом и из винды и из линукса? Цитата Ссылка на комментарий
Вопрос
lis
Здравствуйте
Собственно вопрос в названии: подскажите, кто знает, подходящие компоненты. Раньше пользовался AsyncPro, но в FireMonkey от него получаю ошибки вида
Заранее спасибо!
Ссылка на комментарий
21 ответ на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.