Страница 374 из 1053 ПерваяПервая ... 274324364372373374375376384424474874 ... ПоследняяПоследняя
Показано с 3,731 по 3,740 из 10524

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #3731
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,257

    По умолчанию

    Цитата Сообщение от приборист Посмотреть сообщение
    Так он будет ругаться на несоответствие типов (setByte хочет String для отправки).

    Я пробовал по другому:
    Через указатель заполнял переменную command_string
    FOR i:=0 TO command_len-1 DO
    p:=ADR(command)+i;
    p1:=ADR(command_string)+i;
    p1^:=p^;
    END_FOR
    Но когда доходим до 0 байта - строка дальше не пишется.

    В итоге получаем command_string = '$02$03$06'.
    не должно там возникать ни каких ошибок, бибку модбас я реализовывал на unm http://www.owen.ru/forum/showthread....l=1#post143448

    ps я же писал что неточное направление даю, возможно я указатель на строку передаю в функцию, а данные ложу всеравно в массив байт
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  2. #3732
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    884

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    не должно там возникать ни каких ошибок, бибку модбас я реализовывал на unm www.owen.ru/forum/showthread.php?t=6805&page=11&p=143448&viewfull=1# post143448

    ps я же писал что неточное направление даю, возможно я указатель на строку передаю в функцию, а данные ложу все равно в массив байт
    Я же проверил - ругается. SetByte отправляет строку, а у нас массив Byte.

    По ссылке прогу посмотрел, там бибка закрыта, поэтому не знаю как происходит отправка.
    Но как я понял там преобразование функцией byte_to_word и далее отправка через FB.

    Пойду почитаю про SysLibCom.

  3. #3733
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,269

    По умолчанию

    Цитата Сообщение от приборист Посмотреть сообщение
    SetByte(0, '$02$03$06$00$C2$82', 6);
    )) А что такое '$02$03$06$00$C2$82' ? Строковая константа. Компилятор на стадии компиляции отрезает то что за рамками строки. И '$C2$82' просто нету в памяти

    var
    b : array [1..?] of byte =2,3,6,0,16#c2,16#82; //(С) capzap
    ps : pointer to string;
    ---
    ps := adr(b);
    SetByte(x,ps^,6);


    PS
    При этом не нужно смотреть что лежит в ps^ как в строке. Физически там лежит полный набор.

  4. #3734
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    884

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    )) А что такое '$02$03$06$00$C2$82' ? Строковая константа. Компилятор на стадии компиляции отрезает то что за рамками строки. И '$C2$82' просто нету в памяти

    var
    b : array [1..?] of byte =2,3,6,0,16#c2,16#82; //(С) capzap
    ps : pointer to string;
    ---
    ps := adr(b);
    SetByte(x,ps^,6);


    PS
    При этом не нужно смотреть что лежит в ps^ как в строке. Физически там лежит полный набор.
    Мдааа....Сам себе придумал грабли (Посмотрев в примере от Овена кстати )
    Я то сначала указатель брал на байт, и потом копировал его в строковую константу. Что в итоге и обрезало строку.



    capzap и Валенок - спасибо!

  5. #3735
    Пользователь
    Регистрация
    09.08.2013
    Адрес
    Башкортостан
    Сообщений
    234

    По умолчанию

    Подскажите как исправить кодировку в Codesys 2.3? Копирую в буфер фрагмент программы (ST) и вывожу в текстовый файл. В место русских букв вижу кракозябры.

  6. #3736

    По умолчанию

    Цитата Сообщение от Smith2007 Посмотреть сообщение
    Подскажите как исправить кодировку в Codesys 2.3? Копирую в буфер фрагмент программы (ST) и вывожу в текстовый файл. В место русских букв вижу кракозябры.
    http://www.owen.ru/forum/showthread....l=1#post165424

  7. #3737
    Пользователь
    Регистрация
    09.08.2013
    Адрес
    Башкортостан
    Сообщений
    234

    По умолчанию

    Не помогло. Да и вариант такой неудобный. Хотелось бы просто копировать (Ctrl-C, Ctrl-V)

  8. #3738
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    884

    По умолчанию

    У меня нормально копируется.
    Win7 x64 Ultimate

    Правда я колдовал с_1251 и c_1252 по стандартной схеме (была проблема с отображением в СП270).

  9. #3739

    По умолчанию

    Цитата Сообщение от Smith2007 Посмотреть сообщение
    Не помогло. Да и вариант такой неудобный. Хотелось бы просто копировать (Ctrl-C, Ctrl-V)
    Насчёт удобней пока не нашел, а вот почему не помогло, странно. А если выбрать вариант "Сложно" и вручную указать кодировки с ср1252 в ср1251?

  10. #3740

    По умолчанию

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

    Код на ST.
    WHILE Z_K=0 DO
    Z_M:=1;
    END_WHILE;
    Z_M:=0;

    Нужно просто подождать пока сработает датчик, потом поменять значение переменной.
    Можно ли как-нибудь реализовать это на ST? Или придется извращаться с другими языками?

    Манипуляции с настройками задачи не помогли. Может, они просто не работают для PLC_PRG?
    На скриншоте видно. Так вообще можно делать? Или PLC_PRG будет это игнорировать и запускаться в стандартном режиме?

Страница 374 из 1053 ПерваяПервая ... 274324364372373374375376384424474874 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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