1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

преобразование ASCII кода в float

Модератор: специалисты Weintek

Ответить

Автор темы
Curr93
освоился
освоился
Сообщения: 222
Зарегистрирован: 03 фев 2011, 06:51
Имя: Андерс
город/регион: Екатеринбург
Благодарил (а): 59 раз
Поблагодарили: 5 раз

преобразование ASCII кода в float

Сообщение Curr93 »

Здравствуйте уважаемые коллеги!

Впервые столкнулся с панелями Weintek и поэтому возникли вопросы по преобразованию ASCII кода в float

float Result // инициализация float
char arr [14] = {'S','T',',','+','0','0','4','7','5','.','6','9','[пробел]','g'} // инициализация пробного массива для оффлайн симулятора, т.е. это код получаемый с СОМ порта, т.е. это итоговый код, обозначающий вес: "ST,+00475.69 g"

ASCII2FLOAT (arr[0], Result, 14) // преобразование ASCII
SetData(Result, "Local HMI", LW, 40, 1) // вот здесь вопрос у меня - почему если Result инициализирован как float то почему я не могу сбросить SetData два слова и постоянно идет ошибка "error C31. parameter type is incorrect" в случае если я изменяю на
SetData(Result, "Local HMI", LW, 40, 2) , я немного не понимаю ведь Result это два слова и мне как раз два слова и нужно сбросить

SBeaRM
здесь недавно
здесь недавно
Сообщения: 69
Зарегистрирован: 01 апр 2022, 11:08
Имя: Артем
город/регион: Благовещенск
Поблагодарили: 16 раз

преобразование ASCII кода в float

Сообщение SBeaRM »

Потому что последний параметр это не количество слов, а количество элементов массива. Если бы у вас Result был объявлен как массив float`ов, то вы бы могли сразу несколько элементов массива копировать в локальные переменные одной командой, например:
float Result[5]
SetData(Result[0], "Local HMI", LW, 40, 3)
получите
LW40,LW41 = Result[0]
LW42,LW43 = Result[1]
LW44,LW45 = Result[2]
Поэтому используя команду
SetData(Result, "Local HMI", LW, 40, 2) вы выходите за пределы массива из одного элемента.
Ответить

Вернуться в «WEINTEK (операторские панели)»