как правильно достать текст

Помечено: ,

Просмотр 15 сообщений - с 31 по 45 (из 49 всего)
  • Автор
    Сообщения
  • #38560
    petuhovdmitry
    Участник

    сделать скрипт, например с указанием первого канала, типа
    public string GetVersion(int firstNum)

    МетОда начинает доходить до меня, благодарю!

    #38571
    Mikhail
    Модератор

    Напишите, пожалуйста, получилось ли добиться результата и каким способом.

    #38572
    petuhovdmitry
    Участник

    Напишите, пожалуйста, получилось ли добиться результата и каким способом

    да, конечно, расскажу

    #42000
    GoodJuK
    Участник

    подниму тему, дума будет польза, очень сложно осваивать программу без форума =(

    столкнулся с проблемой вывода текста в канал, следуя инструкциям из этой темы довёл результат до нормального порядка декодирования 7 из 8 символов, не декодируется символ «2», но в ответе от устройства он есть (парсер показал) подозреваю дело в типе данных знаковый/беззнаковый где-то в области скрипта, но знаний моих не хватает что бы разобраться дальше =( подскажите, пожалуйста, как сделать?

    картинки конфигурации:
    https://disk.yandex.ru/d/fvoqCiSsdcvb_Q

    #42001
    manjey73
    Участник

    Вам надо указать длину данных, и использовать скрипт Split (кажется), чтобы он по каналам разложил.
    Ну и убедиться, что там ascii, а не unicode.

    Было же такое уже

    • Ответ изменён 1 месяц, 3 недели назад пользователем manjey73.
    #42003
    GoodJuK
    Участник

    я не топик стартер темы, у меня 1 канал, из которого корректно декодируются 7 из 8 символов по вашему скрипту,

    должно быть: 2TRM1.RS
    получаю: (странный символ)TRM1.RS

    в чём может быть проблема ?

    #42004
    manjey73
    Участник

    Странные символы обычно от кодировки.
    С мобилы плохо скрины вижу, так понимаю вы ответ из прибора декодирует?
    Киньте сюда hex строку и оберните ее в code, чтобы со скрина не печатать.

    #42005
    manjey73
    Участник

    Попробуйте в шаблоне оставить его в double.
    Лишние преобразования происходят, когда вы ставите ulong мне кажется, и чтобы преобразовать правильно, тоже будут требоваться лишние преобразования.

    #42006
    GoodJuK
    Участник

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

    ответ от прибора: 5432 4D50 2E31 5352

    надеюсь правильно сделал…

    #42007
    manjey73
    Участник

    ну 2-ка тут 2-ой байт очевидно (32)

    #42008
    manjey73
    Участник

    У меня работает вариант, когда я формулой последовательные регистры преобразую, 2-ка на месте.
    Пример 2ТРМ

    #42009
    GoodJuK
    Участник

    что вы указываете в формуле? я пробовал из этой ветки форума это:

    // Converts the specified value to an ASCII string up to 8 characters long.
    // Преобразует заданное значение в строку ASCII длиной до 8 символов.
    public string ToAscii(double val)
    {
    long ll = Convert.ToInt64(val);
    byte[] buf = BitConverter.GetBytes(ll);
    return Encoding.ASCII.GetString(buf).TrimEnd((char)0);
    }

    немного другая формула для этого — ToAscii при необходимости переставьте байты драйвером

    не помогает =(

    #42010
    manjey73
    Участник

    Ну у меня там формула сборки каналов, когда регистры читаются отдельно по 2 и их может быть более 4-х. Типа для длинных строк.

    я последовательно ввел в десятичном виде пары байт (видно выше строки) кроме последнего эмулируемого регистра.

    Если у вас всегда 4 регистра, то есть 8 байт, то формула должна быть проще. Просто не преобразуйте ее в ulong для начала.

    #42011
    GoodJuK
    Участник

    спасибо вам за желание помочь, но я не программист, мне словесное описание принципа абсолютно ничего не даёт, вы можете в формате инструкции для домохозяйки сказать как мне вывести текст ?

    #42012
    manjey73
    Участник

    3254 504D 312E 5253 — в канал байты должны попасть вот так — выставьте правильную перестановку байт

    Во входной формуле просто DecodeAscii(Cnl), формат канала String
    Тип данных по умолчанию, то есть Double, соответственно в шаблоне тип оставьте double

    Если я не ошибся. Так как я эмулирую, подавая в канал 16-ричный вариант числа

Просмотр 15 сообщений - с 31 по 45 (из 49 всего)
  • Для ответа в этой теме необходимо авторизоваться.