На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> BCX Basic-to-C-транслятор , как сделать нормальную программу для WinCE не зная C/C++
    После долгих мытарств: как сделать нормальную программу для WinCE не зная C/C++
    -------------------------------------------------------------------------------
    Мне нужно сделать программу для Windows Mobile (2002-2005), но я совсем не знаю C/C++ !
    Программа должна соединяться по COM-порту с GPS приемниками и навигаторами фирмы
    Garmin и получать от них данные не только текстового протокола NMEA, но и так назывемый
    бинарный поток данных Garmin-Binary. Эти данные нужно декодировать в понятные человеку
    цифры широты, долготы, высоты, времени и так далее, и вывести на экран дисплея.
    Данные (сырые и декодированные) надо записать в файлы. Ну и еще кое-что специфическое
    для темы GPS-позиционирования и навигации. Короче - это современная геодезия.

    Для десктопа я сделал программу в MS VB5 и она выполняет то, что я от нее ожидал.
    Но наладонник с ОС WinCE (Mobile) это отдельная песня, как все у фирмы MS.
    Есть среда разработки embedded VC-3 (4), VS-xxxx - для меня все это марсианская речь.
    Есть embedded VB-3, это вижуал бейсик, которому обрезание делал пьяный раввин, результат
    очень печальный. На выходе модуль в P-коде. Нужна установка интерпретатора в наладоннике.
    Библиотека MSComm.dll работает хуже аналогичной для десктопа. Вообще работа с COM-портом
    через MSComm.dll создает нюансы, не прозволяющие послать некоторые команды GPS-приемнику
    и получить от него ответ. Уже открытый COM-порт при этом теряется, программа не может
    продолжать работу. Стабильная работа возможна через обращение программно к структуре
    блочного управления COM-портом под названием DCB. На десктопе для этого есть вызов Win-API
    из главной системной библиотеки Kernel32.dll, но ее нет в WinCE - есть аналог CoreDll.dll,
    в котором отсутствуют некоторые важные функции Kernel32.dll (например BuildCommDCB).
    И наконец в VB WinCE невозможно создать пользовательские типы данных UDT, необходимые для
    работы со структурами Windows (в данном случае Type DCB, COMSTAT, COMMTIMEOUTS).

    Компилятор и линкер MS VB-6 имеют ключи компиляции под ARM-процессор для WinCE, но
    как-то скрытно, секретно. Может MS бросил эту тему на пол-пути, как не раз случалось,
    а может и нет, но разобраться с этими возможностями может только настоящий профессионал.
    Я к таким не отношусь. Но решение должно быть найдено в мировой помойке Internet!
    И я его нашел. Это два свободных продукта: BCX (Basic to C Xtranslator) и Pelles-C.
    Первый позволяет писать программы почти как в MS-VB, а если надо и умеешь, то делать в них
    вставки на обычном C и даже ASM. Для создания окон и элементов управления ими есть несколько
    инструментов. Написанный BAS-код транслируется в C-код, который BCX может компилировать на
    различных компиляторах: LCC, Pelles-C, MS-VC++, Borland-С, Vatcom-С, MinGw, DigitalMars-C.
    Солидный список! Скажу о двух из него: LCC и PellesC проверял, примеры работают.

    Инструментов для разработки программ в среде BCX много и даже многовато, что вызвало у меня
    некоторую растерянность. Особенно ценно то, что все они (и даже от MS) бесплатны для
    разработки коммерческих программ. Исключение составляет только LCC.
    Компиляция возможна и под WinCE (что и было предметом моего поиска).
    Получаются шустрые и компактные нативные *.EXE. На удивление легко разрабатываются
    различного рода библиотеки *.DLL. Работа с консольными приложениями - с этого начинался BCX.

    Для программ, которые будут компилироваться под LCC никаких особых приемов не нужно.
    Все продумано автором и прописано в нескольких BAT-файлах. Компиляция под PellesC чуть сложнее.
    После чтения и тыкания в разные инструменты остановил свой выбор на EZ-IDE.

    Для понимания процесса разработки программы в среде BCX под PellesC, используя EZ-IDE:
    1. берем из примеров в папке C:\Program Files\BCX DevSuite Pro\Examples\Gui\
    .BAS файл проекта (я выбрал \EZ_GUI\Demo\Demo.Bas);
    2. открываем его в EZ-IDE (Open a existing sourcefile) и
    3. получаем сообщение: This is not a EZ-IDE SourceFile;
    4. подтверждаем кнопкой OK, файл открывается, а еще создается пустое окно;
    5. вызываем компиляцию того, что есть под PellesC:
    меню File -> Compile -> Make EXE using PellesC;
    6. начинается компиляция и в левой части окна открытого нами файла
    кроме закладки Declarations появляется новая закладка Compile-Log,
    где в случае удачи последняя строка такая: Compiled successful;
    7. если есть сообщения об ошибках (они указываются для вновь созданного
    C-файла), то смотрим их по номерам строк сначала в новом C-файле,
    а исправления делаем ОБЯЗАТЕЛЬНО В BAS-файле, ОТКРЫТОМ В ОКНЕ EZ-IDE;
    8. повторяем процесс компиляции.
    ......
    9. После этого был получен нормально работающий Demo.exe из примеров автора BCX
    (C:\Program Files\BCX DevSuite Pro\Examples\Gui\EZ_GUI\Demo\Demo.Bas).
    Этот пример интересен тем, что автор показал в нем все стандартные элемены
    управления окном (так привычные в MS-VB) включая управление цветом, GIF-анимацию
    и манипуляции в RichEdit-Control боксе, с копированием графики.

    10. Старая версия этого примера имела строки, вызывающие ошибку компиляции под PellesC
    и нормально компилировалась под LCC. В первых строках SUB FORMLOAD были
    закомментированы значения: Form1_Styles = '1422852096 и Form1_XStyles = '320
    По указанию строк с ошибками в C-файле легко нашел эти строки в исходном BAS-файле
    и поправил в рабочем окне EZ-IDE, после чего компиляция прошла успешно.

    Есть 3 заметных недостатка у этих программ: отладка в BCX в зачаточном состоянии;
    HELP касающийся создания оконного интерфейса небогат в обеих программах;
    C-файл оттранслированный BCX из BAS-файла успешно компилится из командной строки в EXE,
    но этот же C-файл при компиляции в IDE-PellesC вызывает кучу ошибок, их смысл мне непонятен.
    Хотелось бы HELP подробней и с короткими, но внятными примерами в самих HELP.CHM, но до
    MSDN не по силам дотянуться команде даже самых одаренных энтузиастов-разработчиков. Да и
    сам MSDN не так хорош, как его гигантский размер. Хватает и путаницы и неосвещенных мест.
    Поэтому спасибо этим ребятам (Kevin Diggins, Pelle Orinius и командам их помощников) за то,
    что они отважились выступить на фоне таких монстров, как MS и Borland, и сделали интересные
    и полезные инструменты и выложили их бесплатно. Их конференции в интернете освещают много
    сложных вопросов. Версии программ обновляются нечасто (но и нередко), что свидетельствует
    о профессионализме авторов.
    Есть одно, но заметное достоинство у этих программ: приверженность авторов к WinAPI-стилю
    программирования. Никаких MFC и dotNET, притом OOP наличествует и активно развивается.
    Поэтому программы сделанные на их инструментах не требуют тянуть за собой никакой требухи,
    они компактны и быстры. Их содержимое легко просмотреть и понять. Они самодостаточны
    настолько, насколько это возможно в такой ОС как Виндоус.

    После примеров автора написал свой код в BCX. Компилю под WinDesktop. Работает.
    Под WinMobile пока не пробовал. По ходу смотрю как VB код выглядит в C-трансляции.

    END!

    Для тех, кто не умеет пользоваться поиском (а как тогда можно уметь программировать?),
    привожу ссылки на BCX, PellesC, LCC (но! время меняет многое, особенно в интернете):
    http://www.BcxGurus.com/
    http://bcx.vpndns.com/
    прямая ссылка:
    http://rjpcomputing.wordpress.com/programming/bcx/devsuite-pro/
    http://groups.yahoo.com/group/BCX/
    http://bcxolr.bcxgurus.com

    это непрямые ссылки, но по ним можно найти:
    http://smorgasbordet.com/pellesc/index.htm
    http://forum.pellesc.de
    http://wiki.pellesc.de

    без подробной регистрации LCC не получить, поэтому только через ftp:
    ftp://ftp.ku.lt/pub/Windows/lang/lcc...cwin32.exe
    ---------------------------------------------------------------------------------

    Мои вопросы к серьезным программерам (а их здесь немало), в 1-ю очередь к модераторам:
    1. Есть-ли возможность "заставить" MS-VB-компилятор/линкер делать код под WinCE
    (в ключах компилятора и линкера это теоретически присутствует);
    2. Если кто-то работал в BCX, то какова грамотная цепочка создания программы с
    графическим интерфейсом, так чтобы это было почти как в VB (пока я свои элементы
    окна прописываю циферками в едином BAS-файле - как и во многих примерах автора).

    Если есть интерес, исходник (BAS и C могу выложить).

    Я обращался в группу BCX-Yahoo, но внятных ответов - 0, может-быть виной тому
    мой английский, вот текст моего вопроса:
    1. I shoise EZIDE for begin to write and compile my BCX code,
    and not found Samples to work in EZIDE from 0.
    Many samples from mr.BCX (Schoene Beispielen!!!) includes declarations to
    Form and Controls is in one BAS-file, not in separate *.RC (or *.RES) file.
    If my BAS-file has these declarations for Form and its Controls, all right!
    (my Form in EZIDE after opening BAS-file as existing Project must by empty!)
    But if I create Form & Controls in EZIDE, compilation is NOT sussefull.
    I know only MS-Basic, who Code & Form created in one Time: I paint Form,
    then write Code for those Form and compile my Program. All work fine!
    C-language I do't know. Maiby nomore read C-text.
    Who can my send Sample, painted and coded in EZIDE from none, whose can
    by compiled uhder PellesC? - 1 Form, 2 Commands, 2 ComboBoxes, 1 EditBox.
    2. If C-file, compiled by BCX to PellesC, I open in PellesC IDE-environment,
    then found Errors for C-strings in Standard Prototypes section:
    HWND BCX_Form(char*,int=0,int=0,int=250,int=150,int=0,int=0);
    HWND BCX_Input(char*,HWND,int,int,int,int,int,int=0,int=-1);
    HWND BCX_Button(char*,HWND,int=0,int=0,int=0,int=0,int=0,int=0,int=-1);
    HWND BCX_Label(char*,HWND,int=0,int=0,int=0,int=0,int=0,int=0,int=0);
    HWND BCX_Group(char*,HWND,int,int,int,int,int,int=0,int=0);
    HWND BCX_Combobox(char*,HWND,int,int,int,int,int,int=0,int=-1);
    PellesC Compiler-Linker NOT assept "int=...".
    BCX get working *.exe, but PellesC do't work and generated Errors.

    Now I build Win-Desktop Program (it works fine), but further these Program shuld by Win-Mobile.
    Mayby then needed Compile-Link it in PellesC-Environment.

    Сергей.
      Многабукв, все не осилил. Но вот здесь ты смотрел: http://www.microsoft.com/downloads/details.aspx?FamilyID=2D12142C-F8C7-4FC2-BE13-45F253648E5B&displaylang=en ?
        Спасибо за быстрое реагирование, но там под названием:
        Microsoft Windows CE Toolkit for Visual Basic 6.0
        лежит пример VB-проекта Simple ADOCE (33кБ), а дальше тишина. WinCE ToolKit BV6 они отдали торговцам - продается за немалые деньги, но на сайтах MS давно отсутствует. Да и старенький он больно - 1999г.
        Я уже пробовал eVB3 - П-код на выходе и все очень убого и кривенько, а он поновее чем WinCE ToolKit BV6.
        Может быть SCINER сможет ответить на мои вопросы, кажется он не так уж давно занимался темой "NativeDLL from VB6".

        А вообще, то что я написал не о VB, а о BCX и PellesC, это не противоречит политике партии?
        Сергей.
          Бейсик программы в BCX (бейсик транслируется в Си и далее компилируется код уже Си компилятором доступным в системе MinGW, VS, LCC, Pelles C, ...)
          сам исходник BCX написан на BCX Бейсике и транслируется в Си для сборки в целевой системе (как в Windows так и Linux и для других ОС).

          Погонял примеры программ пользователей в Linux под Wine сделанные за годы существования этого проекта.
          Основная площадка пользователей с форумом проекта https://bcxbasiccoders.com/

          https://sourceforge.net/projects/bcx-basic/ https://sourceforge.net/projects/bcxdevsuite/
          IDE (EZIDE) в системе написана на BCX и собирается нормально.


          Интересно, что какие то программы (файл бейсика) могут работать в LCC и нет в Pelles C и могут отличаться в некоторых ньюансах (в запуске среды под Wine)
          и по скорости Pelles C в целом быстрее LCC, но не сильно кардинально. Алгоритм сортировки таблицы примера отработал 5 и 3, 10 мс
          Какие то программы для сборки брал из архива пользователей группы Yahoo вышеприведённой сайта.

          Pelles C Загрузить не последние версии можно по такому шаблону адреса http://www.smorgasbordet.com/pellesc/1000/setup.exe (10.0)
          после 8.0 выпускаются только 64-ёх битные. (последняя версия 11.0)

          LCC https://lcc-win32.services.net/ и ещё сайт https://drh.github.io/lcc/



          P.S. Под Linux тоже есть некоторые варианты проектов на базе BCX.
          Сообщение отредактировано: Kopa -
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0254 ]   [ 16 queries used ]   [ Generated: 29.03.24, 10:44 GMT ]