Здравствуйте уважаемые коллеги!
Впервые столкнулся с панелями 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 это два слова и мне как раз два слова и нужно сбросить
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
преобразование ASCII кода в float
Модераторы: Глоб.модераторы, специалисты Weintek
-
- здесь недавно
- Сообщения: 98
- Зарегистрирован: 01 апр 2022, 11:08
- Имя: Артем
- город/регион: Благовещенск
- Благодарил (а): 1 раз
- Поблагодарили: 25 раз
преобразование ASCII кода в float
Потому что последний параметр это не количество слов, а количество элементов массива. Если бы у вас 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) вы выходите за пределы массива из одного элемента.
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) вы выходите за пределы массива из одного элемента.