Перейти к содержанию
Fire Monkey от А до Я

lis

Пользователи
  • Постов

    23
  • Зарегистрирован

  • Посещение

Весь контент lis

  1. огромное спасибо!
  2. Спасибо! На первый взгляд, по ссылке куда меньше текста=) Проще разобраться! напрямую через WinAPI? Да, очень интересно!
  3. Потому, что проект уже написан на fmx. И переписывать все под vcl - последнее дело
  4. тогда может есть другой какой компонент для работы с com-портом в fmx?
  5. Я не умудрялся, располагая компонент на форме, он был сразу доступен Зашел в заголовочные файлы, подключаемые к моему проекту при расположении компонента 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
  6. Получается, менять надо в исходниках компонента vcl на fmx? По-моему, это как-то "по-вандальному" что ли.. Есть недюжие сомнения, что после моих манипуляций компонента заработает нормально. Да и если я так сделаю - то старые проекты, которые на vcl написаны, получается уже не смогу пересобрать на этом ПК.. Я так понимаю, AsyncPro в принципе заточен под vcl и перетащить его значит нехило переписать.. Скомпилировать я пытаюсь пустую форму, на которую кинул один единственный компонент ком-порта.
  7. lis

    com-порт FireMonkey

    Здравствуйте Собственно вопрос в названии: подскажите, кто знает, подходящие компоненты. Раньше пользовался AsyncPro, но в FireMonkey от него получаю ошибки вида Заранее спасибо!
  8. kami, a это мысль=) гаворд, я тебе всё уже сказал, не маяч пожалуйста. лучше пей пустырник
  9. да, я пробовал отослать 10 байт - и тогда вместо 0C было 0A, так что длина, как минимум последний байт=) А замена idCMD на idTCP, к сожалению, ничего не изменила...
  10. Что получилось в итоге unsigned char MessageToController[12]; /*заполняем MessageToController*/ TMemoryStream *t = new TMemoryStream; // t->SetSize(12); // t->Clear(); t->Write(MessageToController, 12); t->Position = 0; IdCmdTCPClient1->Socket->WriteBufferClear(); IdCmdTCPClient1->Socket->WriteBufferOpen(); IdCmdTCPClient1->Socket->Write(t,12,true); IdCmdTCPClient1->Socket->WriteBufferClose(); все отсылается, wireshark тому свидетель, но почему-то добавляется 4 байта перед моим массивом (00 00 00 0С), видимо длина посылки. И я так полагаю именно из за этой приставки сервер меня отключает, и я получаю 10054 ошибку. Можно ли префикс этот убрать как-то?
  11. kami, спасибо, сейчас как раз этот write пытаюсь заставить работать на меня
  12. вот так всегда.. задашь вопрос на форуме, и обязательно найдется нечто, которое по делу сказать ничего не сможет, но с умным видом примется писать никому ненужную ересь про мозги, хелп, гугл, и как оно само когда-то что-то накодило... по теме: мне не нужен чат, отправку строки я вполне себе сделал. мне нужно отправить массив. этого я в примерах, увы, не нашел. а собачится тут, по крайней мере до твоего вброса, никто не собачился. ребята помогали мне решить мою проблему, за что им огромное спасибо. кстати, форум для того и нужен, для помощи в решении вопросов. при чем тут манна? резюмирую: если есть чего сказать по делу - буду очень признателен. если нет - иди ты в... хелп ну и конечно же, бессмертное: американский форум задаешь вопрос получаешь ответ. Израильский форум задаешь вопрос тебе отвечают но вопросом на вопрос. Русский форум задаешь вопрос и тебе долго и нудно объясняют какой ты ч(м)удак.
  13. контроллер scadapack, протокол modbus_tcp
  14. kami, будь у меня в наличии компонент ServerSocket - этой темы на форме бы не было.. Не найдя его для FMX, я и стал искать что-то похожее, и набрел на TTcpServer, у которого, по крайней мере мне, не удалось найти тот самый массив Connections.. За совет про кодировку - спасибо. Если потом полезут глюки - проверю! xenon54, спасибо, буду пробовать!
  15. спорно.. но да это не тема разговора А можно узнать название подходящего метода? У меня вылетают только то, что на картинке и нигде в параметрах нет ничего похожего на массив чар..
  16. ксенон, вы не поверите, за МКАДом есть другие часовые пояса ps ок, посмотрим, какая активность будет в теме спустя сутки после создания
  17. Гуглил уже, и много.. И про writeln писал выше.. только это отправка строки. а мне надо отправить, например unsigned char mes[3] mes[0] = 0x0A; mes[1] = 0x23; mes[2] = 0xBC; IdCMDTCPClient1->Socket->WriteLn(mes, 3); а не WideString mytext = "hello word"; IdCMDTCPClient1->Socket->WriteLn(mytext, IndyTextEncoding_UTF8);
  18. Блин, неужели никто с сетью в фаерманки не работает?
  19. Попробовал через TcpClient1... От клиента серверу строка уходит, от сервера клиенту - нет.. (для начала строку хотя бы стараюсь ловить) TcpClient1->Sendln("1223"); //работает TcpServer1->Sendln("asd"); //не работает
  20. lis

    TServerSocket TClientSocket в FireMonkey

    Здравствуйте Мне нужно организовать обмен массивами типа unsigned char между приложением и контроллером через Ethernet. То есть "в сети" будет всегда 1 клиент и 1 сервер. Столкнулся со следующей проблемой: При создании приложения на VCL для передачи массивов типа char пользовался указанными в названии темы компонентами ServerSocket1->Socket->Connections[0]->SendBuf(Message,MessLenght) void __fastcall TfrmMain::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { RecLenght = Socket->ReceiveLength(); Socket->ReceiveBuf(RecBuffer,RecLenght); } Сейчас пишу аналогичное приложение на FireMonkey, и тут указанных компонентов нет.. Попробовал заморочиться с Indy (IdCmdTCPServer1, IdCmdTCPClient1) - пока получается только отправить/получить String, и то как-то неудобно и муторно.. MyContext->Connection->IOHandler->WriteLn("lala"); AContext->Connection->IOHandler->ReadLn(); Подскажите пожалуйста, есть ли "заменитель" TServerSocket TClientSocket в FireMonkey? Или может чем ещё можно решить мою задачу.. Или хоть как это сделать через Indy?.. Заранее спасибо!
  21. спасибо, пока ждал одобрения темы модератором уже нашел ответ на других ресурсах. таймер объявлять в классе надо в разделе private. теперь о задаче: мне нужна проверка связи с сервером постоянная. делаю я её пингами, которые с заданным интервалом засылает таймер. связь хреновая и пинги порой идут по несколько секунд. на это время главная форма умирает. вот решил попробовать в отдельный поток эти пинги вывести.
  22. Здравствуйте Столкнулся со следующей проблемой: решил вывести одну из операций приложения в отдельный поток. Описал класс. В классе нужно сделать таймер, который регулярно будет запускать функцию из этого потока. Вот собсно и вопрос: как обратиться к таймеру, который создается в моём классе. Будь таймер элементом формы - FindComponent() меня бы спас наверное.. А так.. о себе: RAD Studio, C++ Builder XE3, FireMonkey. немного кода //----main.h-------------------------------- class TPingThread : public TThread { __published: private: protected: public: void __fastcall CreateControls(); void __fastcall Execute(); void __fastcall tmrTimer(TObject *Sender); }; TPingThread *PingThread; //----main.cpp---------------------------- void __fastcall TPingThread::CreateControls() { TTimer *NewTimer = new TTimer(NULL); NewTimer->OnTimer = TPingThread::tmrTimer; NewTimer->Interval = 1000; NewTimer->Enabled = true; NewTimer->Name = "tmr"; } //--------------------------------------------------------------------------- void __fastcall TPingThread::tmrTimer(TObject *Sender) { ShowMessage("Ok"); } Тут все работает. А вот как мне, например, выключить таймер вне функции tmrTimer CreateControls? Заранее спасибо!
×
×
  • Создать...