Показано с 1 по 10 из 12

Тема: TRM138 + owen_io + C++ (qt)

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от Дмитрий Егоренков Посмотреть сообщение
    мой вам совет -- выбросить из головы C++, Qt и gcc, и писать на C#.

    посмотрите внимательней в owen_io.h -- там есть правильные объявления функций.

    и вот еще: http://owen.ru/forum/showthread.php?p=28888#post28888
    Спасибо за совет, однако же, мне критично использовать именно С++ qt. Авторы библиотеки овен предполагали ее использование на С++, иначе этого бы небыло в описании к библиотеке и в примерах.
    Порты открываются и закрываются корректно. В случае попытки повторного открытия порта или закрытия неоткрытого порта - функции возвращают верные коды ошибок, а значит функции я объявляю верно.
    Хотелось бы уточнить использование функции
    Покачто моя функция чтения только обнуляет принимаемые параметры time и value =(
    может быть у кого-нибудь есть примеры считывания параметров на С++ ? поделитесь, буду благодарен
    Последний раз редактировалось АлексейЕкатеринбург; 16.08.2010 в 14:50. Причина: разобрался зачем нужен index

  2. #2

    По умолчанию

    критично? вот это "решил использовать qt" называется критично? в чем смысл использовать qt для написания windows приложения (а других вы с owen_io.dll не напишите)?

    > а значит функции я объявляю верно
    никакой связи. функции объявлены неправильно. должно быть так:

    typedef int _stdcall (*OPENPORT)(DWORD n,DWORD speed,DWORD parity,DWORD bits,DWORD stop,DWORD converter);

    ссылку на то, как импортировать библиотеку без этих объявлений, я уже давал.

  3. #3

    По умолчанию

    Уважаемый Дмитрий! выбор технологии предлагаю не обсуждать, так как это может затянуться в бесполезный спор из множества постов. По поводу вызова функций:
    БОЛЬШОЕ СПАСИБО! заработала наконец то функция считывания =)
    работаю над функцией смены установки параметра C.SP (это значение измеряемого параметра (в моем случае - температура), при котором должно сработать реле).
    Почему то работает только запись параметра, а функция чтения выдает ошибку памяти (...память не может быть "written"...).

    value = 20.0;
    cout << "write C.SP :" << endl;
    cout << WriteStoredDotS(145,0,"C.SP", value, -1) << endl;
    cout << "read C.SP :" << endl;
    cout << ReadStoredDotS(145,0,"C.SP", value, -1) << endl;
    cout << "C.SP = " << value << endl;

    базовый адрес прибора 144 реле во 2 канале. мб подскажете, где я не прав?

  4. #4

    По умолчанию

    проверьте, что функция правильно объявлена и загружена.

    спорить тут, в общем-то, не о чем. хотите тратить время на бессмысленную борьбу с c++ и прочим зоопарком? да пожалуйста!

  5. #5

    По умолчанию

    Цитата Сообщение от Дмитрий Егоренков Посмотреть сообщение
    ссылку на то, как импортировать библиотеку без этих объявлений, я уже давал.
    Это уже пробывал - предложенный способ, результатов не дал.

    Функцию объявляю следующим образом:

    typedef int _stdcall(*READSTOREDDOTS)(DWORD adr,DWORD adr_type,char *command,float value, int index);

    READSTOREDDOTS ReadStoredDotS;

    if ((ReadStoredDotS = (READSTOREDDOTS)GetProcAddress(hDLL, "ReadStoredDotS")) == NULL)
    {
    cout << "error to find DLL function ReadStoredDotS" << endl;
    }

    Вызываю так:

    float res = 0.0;
    cout << "read C.SP :" << endl;
    cout << ReadStoredDotS(144, 0, "C.SP", res, -1) << endl;
    cout << "C.SP = " << res << endl;

    со всеми остальными функциями проблем нет, только с этой, это раздражает, ведь у меня вся разработка стоит из-за нее(( Пожалуйста, подскажите, где ошибка!!!

  6. #6

    По умолчанию

    typedef int _stdcall(*READSTOREDDOTS)(DWORD adr,DWORD adr_type,char *command,float& value, int index);

    вот это то, о чем я предупреждал. C++ -- бесконечное поле усеянное граблями. на парочку вы уже наступили, дальше будет веселей.

Ваши права

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