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

Стартовая страница Форумы Понять, как работает ПО Формулы как правильно достать текст

Помечено: ,

Просмотр 4 сообщений - с 46 по 49 (из 49 всего)
  • Автор
    Сообщения
  • #42013
    manjey73
    Участник

    А может быть чуть иначе :), извините не помню сам уже..

    public string GetRegAscii(int ftNum, int quant, int paramlen = 2)
    {
    string outStr = "";
    List<string> lStr = new List<string>();
    for (int i=0; i<quant; i++)
    {
    var str = "";
    if (paramlen == 2)
    {
    ushort us = Convert.ToUInt16(Val(ftNum + i));
    byte[] buf = BitConverter.GetBytes(us);
    str = Encoding.ASCII.GetString(buf).TrimEnd((char)0);
    }
    else if (paramlen == 4)
    {
    uint ui = Convert.ToUInt32(Val(ftNum + i));
    byte[] buf = BitConverter.GetBytes(ui);
    str = Encoding.ASCII.GetString(buf).TrimEnd((char)0);
    }
    else if (paramlen == 8)
    {
    ulong ul = Convert.ToUInt64(Val(ftNum + i));
    byte[] buf = BitConverter.GetBytes(ul);
    str = Encoding.ASCII.GetString(buf).TrimEnd((char)0);
    }
    lStr.Add(str);
    } 
    if (lStr.Count > 0) { outStr = string.Join("", lStr.ToArray()); }
    return outStr;
    }

    Тут в данному случае указываем во входной формуле SplitAscii(()=> GetRegAscii(300, 1, 8))

    8 здесь, длина канала, если вам попадает сразу 8 байт, по умолчанию 2 и можно не вводить (если мы по регистрово настраиваем)
    300 — это номер канала, куда прилетают данные
    1 — всего один канал обрабатывать

    Формат String

    #42014
    manjey73
    Участник

    Есть предположение, что в ядре присутствует ошибка, и вы получите серое значение, никак не идентифицируемое как Строка.

    Сделайте расчетный канал на канал из устройства и в нем примените формулу

    GetRegAscii(300, 1, 8) где 300, это входной канал. А во входном канале поставьте формат Дата например, чтобы у вас там сумасшедшее число не высвечивалось, будет либо левая дата, либо !!!

    Возможно даже сработает DecodeAscii(Val(300))

    #42015
    GoodJuK
    Участник

    всё оказалось проще, формулы не нужны для 8 символов, просто данные нужно принимать коммуникатором как double, настройки в канале: тип данных ASCII, формат Строка

    спасибо за уделённое время

    #42017
    manjey73
    Участник

    ну да, все формулы нужны, когда у вас больше 8-ми Ascii или 4-х Unicode символов.

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