На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
Страницы: (6) « Первая ... 3 4 [5] 6  все  ( Перейти к последнему сообщению )  
> ModBus
    может быть все таки не ssize_t, а size_t ????


    Цитата
    typedef LONG_PTR ssize_t
    Вопрос, правильно ли я сделал?


    Я думаю не очень
      насколько я помню size_t это unsigned long, а ssize_t это long.
          Цитата popsa @
          насколько я помню size_t это unsigned long, а ssize_t это long.

          Я скачал файлик libmodbus-3.0.1.tar.gz, в нем хедер modbus-private.h, в строке 90 следующее:
          ssize_t (*send) (modbus_t *ctx, const uint8_t *req, int req_length);
          ssize_t (*recv) (modbus_t *ctx, uint8_t *rsp, int rsp_length);
          В MSDN на странице типов следующее:
          typedef LONG_PTR SSIZE_T
          typedef ULONG_PTR SIZE_T
          название переменных большими буквами, в хедере модбаса маленькими бюуквами.
          Вот я и добавил определение типа. Вроде скачивал библиотеку с родного сайта.
          Компилил, как понятно под виндовсом 7 в среде VS2010 C++.
            Да будет тебе известно, что в язике программирования Си и Си++, все регистро зависимо.
            но у меня тип описан как typedef int ssize_t;
            Сообщение отредактировано: Dem_max -
              у меня в солярисе
              ExpandedWrap disabled
                #ifndef _SSIZE_T
                #define _SSIZE_T
                #if defined(_LP64) || defined(_I32LPx)
                typedef long    ssize_t;    /* size of something in bytes or -1 */
                #else
                typedef int ssize_t;    /* (historical version) */
                #endif
                #endif  /* !_SSIZE_T */
                Цитата popsa @
                у меня в солярисе
                ExpandedWrap disabled
                  #ifndef _SSIZE_T
                  #define _SSIZE_T
                  #if defined(_LP64) || defined(_I32LPx)
                  typedef long    ssize_t;    /* size of something in bytes or -1 */
                  #else
                  typedef int ssize_t;    /* (historical version) */
                  #endif
                  #endif  /* !_SSIZE_T */

                Эта библиотека заточена под линукс, я же кодю в WIN32.
                В ридми к этой библиотеке написано следующее:
                If you want to compile with Microsoft Visual Studio, you need to install
                http://code.google.com/p/msinttypes/ to fill the absence of stdint.h.
                Я скачал этот файлик и сохранил. Может в нем как раз и должен был быть
                описан этот тип? Кто кодит по WIN32, отзовитесь.
                  Цитата

                  Эта библиотека заточена под линукс, я же кодю в WIN32.
                  В ридми к этой библиотеке написано следующее:
                  If you want to compile with Microsoft Visual Studio, you need to install
                  http://code.google.com/p/msinttypes/ to fill the absence of stdint.h.
                  Я скачал этот файлик и сохранил. Может в нем как раз и должен был быть
                  описан этот тип? Кто кодит по WIN32, отзовитесь.

                  Раз написано делай, только stdint.h включи первым
                    Обсуждение ModBus подтолкнуло меня к тому, что бы задать более общий вопрос. Часто приходится писать маленькие программы для опроса какого-либо устройства по ModBus (в основном для проверки устройств в процессе их наладки). Поскольку они заточены под конкретное устройство с фиксированным набором регистров, особых сложностей при опросе не возникает. Сейчас же стоит более сложная задача. Нужно делать что-то вроде системы визуализации, причем набор устройств может быть различным, устройства будут подключаться к шине RS-485, к которой подключен и компьютер(т.е. через один COM порт будут опрашиваться сразу несколько устройств). Опрос по протоколу ModBus. Хочу спросить, есть ли какие-нибудь статьи (или книги) по поводу разработки систем такого типа (получается что-то вроде куска SCADA, занимающегося только визуализацией)? Просто пока мои жалкие попытки приводят к каким-то разрозненным кускам кода, никак не связанным друг с другом. Параллельно пытаюсь разобраться в исходниках OpenScada. Если этот вопрос - сильный оффтоп, скажите, создам новую тему.
                    Сообщение отредактировано: LeonidPr -
                      Цитата Dem_max @
                      Цитата

                      Эта библиотека заточена под линукс, я же кодю в WIN32.
                      В ридми к этой библиотеке написано следующее:
                      If you want to compile with Microsoft Visual Studio, you need to install
                      http://code.google.com/p/msinttypes/ to fill the absence of stdint.h.
                      Я скачал этот файлик и сохранил. Может в нем как раз и должен был быть
                      описан этот тип? Кто кодит по WIN32, отзовитесь.

                      Раз написано делай, только stdint.h включи первым

                      Я так и делаю. Только в том файлике, который я скачал с гугла нет типа о котором мы говорим.
                      Отсюда вопрос, если этот файл не из библиотеки, а из гугла, то не вкралась ли в него какая либо неточность?
                      Есть кто нибудь, кто работает с библиотекой под WIN32? Если есть такие, ответьте, есть в вашем файлике stdint.h
                      тип ssize_t?
                        Цитата
                        Если есть такие, ответьте, есть в вашем файлике stdint.h
                        тип ssize_t?

                        смотри выше.
                          Цитата Dem_max @
                          Да будет тебе известно, что в язике программирования Си и Си++, все регистро зависимо.
                          но у меня тип описан как typedef int ssize_t;

                          Ты кодиш под WIN32 для ModBus? Если да, можешь поделиться примерчиком использования библиотеки ModBus?
                            trainer помоги плиз.
                            Разбираюсь с твоей библиотекой.
                            Строка в примере
                            PortId := TrComPortOpen(0); (* COM1 *)
                            Я так понимаю, что PortId - это хендл порта?
                            И по нумерации портов
                            0 - COM1
                            1 - COM2 и т.д.?

                            Почему спрашиваю, при выполнении PortId := TrComPortOpen(0); возвращается "0"
                            D2010, Win7
                              Цитата
                              получается что-то вроде куска SCADA, занимающегося только визуализацией)? Просто пока мои жалкие попытки приводят к каким-то разрозненным кускам кода
                              сколько устройств будет? Чито мешает взять сразу готовую SCADA? На 32 точки большинство бесплатно, TraceMode например. MasterSCADA
                              например, сама по себе бесплатна.

                              PascalSCADA
                              под Лазарус.
                                Всем привет.
                                Прикрутил к своей разработки компоненту для rs232 из этого проекта https://github.com/tarasii/1c_rs232
                                Кто может помочь прикрутить ModBus для rs485 ?
                                команды имеют вот такой вид "CC0500051800EE"
                                есть исходники от другой компоненты(работает через ком) где есть рабочий код.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0504 ]   [ 17 queries used ]   [ Generated: 28.03.24, 19:11 GMT ]