Показано с 1 по 9 из 9

Тема:

  1. Гость

    По умолчанию Доступ к com-порту в С++

    Программисты vegalab, помогите.
    Для последующей обработки ПК требуется читать данные через com-порт по RS232 c контроллера. Он является slave по протоколу Modbus RTU и допускает обращения с кодами функций 3,4 и 65. Программа, вычисляющая контрольную сумму сообщения, на Borland C++ Builder у меня есть.А как выдать сообщение в com-порт и принять ответ имею только отрывочные сведения. Видел обращение к функции ClientSocketRead. Прочел в Интернете о доступе к порту через файловые функции WinAPI. Как это реализовать не знаю.Может быть у кого-то есть библиотеки, позволяющие обратиться к этим функциям. Буду благодарен за любую информацию.

  2. Частый гость Аватар для McCulic
    Регистрация
    23.10.2006
    Адрес
    Москва
    Возраст
    31
    Сообщений
    130

    По умолчанию Re: Доступ к com-порту в С++

    Поищи в билдере, там должен быть нужный компонент
    Через WinAPI будет долго и нудно
    Последний раз редактировалось McCulic; 24.09.2008 в 15:12.

  3. Гость

    По умолчанию Re: Доступ к com-порту в С++

    Цитата Сообщение от McCulic Посмотреть сообщение
    Поищи в билдере, там должен быть нужный компонент
    Через WinAPI будет долго и нудно
    На искомое слово modbus в Help ничего нет. На COM1 есть CreateFile и другие функции WinAPI.

  4. Начинающий Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    55
    Сообщений
    23.983

    По умолчанию Re: Доступ к com-порту в С++

    На модбас естественно ничего не будет, а вот на СОМ-порт - если не хочеться через WinAPI, то для Дельфи и Билдера в свое время (я давно этим не занимаюсь) было море готовых компонетнов (не в комплекте, сторонних).
    Для С# вроде есть прямо внутри.
    Я сдаюсь, шизотерия победила. Пишите что хотите.
    <>
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  5. Частый гость Аватар для Shim
    Регистрация
    18.02.2005
    Адрес
    Украина, г.Донецк
    Возраст
    41
    Сообщений
    165

    По умолчанию Re: Доступ к com-порту в С++

    Есть утилитка DLPortIO, позволяет обращаться напрямую к портам, как в старом добром DOS (пишем/читаем 2F8, 3F8 напрямую). Универсальная вещь, можно работать и с LPT, ему всё равно какие адреса портов вычитывать/записывать. Работает под WinNT/2000/XP, может и под висту есть версия, не уверен. С инсталлятором идут заголовочные файлы, в том числе и для С.
    Если городить какую-нибудь тестовую поделку, то самое оно. Если что-то серьёзное - разбирайся с WinAPI, ничего там страшного и ужасного нет. Использовать готовые компоненты - тоже вариант, но зависит от задач. Если просто гонять байтики туда-сюда, то пойдут однозначо, даже самые простые.

  6. Старый знакомый Аватар для Quasar
    Регистрация
    16.03.2005
    Адрес
    Russia, Moscow.
    Сообщений
    619

    По умолчанию Re: Доступ к com-порту в С++

    Че-то недопонимаю я, нафига нужны какие-то там компоненты ...

    Код:
    thePortHandle = CreateFile ( portName
                               , GENERIC_READ | GENERIC_WRITE
                               , 0
                               , NULL
                               , OPEN_EXISTING
                               , FILE_FLAG_NO_BUFFERING
                               , NULL
                               );
    .
    .
    .
    ReadFile ( (HANDLE(thePortHandle))
                      , &buffer
                      , sizeof(char)
                      , &charsRead
                      , NULL
                      );
    
    .
    .
    .
    WriteFile ( (HANDLE(thePortHandle))
                    , &buffer
                    , sizeof(char)
                    , &charsWritten
                    , NULL
                    );
    и т.п....
    PS.
    Примеры вроде как тут есть..
    http://sources.ru/cpp/cpp_system.shtml#7
    Спонсор данного сообщения - Газпром.

  7. Начинающий Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    55
    Сообщений
    23.983

    По умолчанию Re: Доступ к com-порту в С++

    Цитата Сообщение от Shim Посмотреть сообщение
    Есть утилитка DLPortIO, позволяет обращаться напрямую к портам, как в старом добром DOS
    Для СОМ-а - это из пушки по воробьям.
    Его обычно используют для ЛПТ (программаторы там всякие, и т.п.).
    Я сдаюсь, шизотерия победила. Пишите что хотите.
    <>
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  8. Гость

    По умолчанию Re: Доступ к com-порту в С++

    Цитата Сообщение от Quasar Посмотреть сообщение
    Че-то недопонимаю я, нафига нужны какие-то там компоненты ...

    Код:
    thePortHandle = CreateFile ( portName
                               , GENERIC_READ | GENERIC_WRITE
                               , 0
                               , NULL
                               , OPEN_EXISTING
                               , FILE_FLAG_NO_BUFFERING
                               , NULL
                               );
    .
    .
    .
    ReadFile ( (HANDLE(thePortHandle))
                      , &buffer
                      , sizeof(char)
                      , &charsRead
                      , NULL
                      );
    
    .
    .
    .
    WriteFile ( (HANDLE(thePortHandle))
                    , &buffer
                    , sizeof(char)
                    , &charsWritten
                    , NULL
                    );
    и т.п....
    PS.
    Примеры вроде как тут есть..
    http://sources.ru/cpp/cpp_system.shtml#7
    Спасибо за разъяснение. Я буду так делать.

  9. Частый гость Аватар для McCulic
    Регистрация
    23.10.2006
    Адрес
    Москва
    Возраст
    31
    Сообщений
    130

    По умолчанию Re: Доступ к com-порту в С++

    Цитата Сообщение от Quasar Посмотреть сообщение
    Че-то недопонимаю я, нафига нужны какие-то там компоненты ...
    А я с сокетами перепутал спросоня

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •