Вверх ↑
Этот топик читают: Гость
Ответов: 55
Рейтинг: 0
#1: 2011-05-18 11:34:04 ЛС | профиль | цитата
Не могу понять как работает элемент Switch. Как мне кажется по сигналу с элемента If_else переключатель включает нужный канал
и изменения данных передаются на выход. Но на деле данные передаются только в момент переключения сигнала с If_else, т.е. по схеме
на выход проходит только одно значение при переходе через 127 в любую сторону.
Пробовал от кнопки подавать событие на do Compare у If_else, не помогло.
(Это обработка однобайтного значения температуры со знаковым старшим битом.)
code_24007.txt
карма: 0

0
файлы: 1code_24007.txt [868B] [154]
Ответов: 3889
Рейтинг: 362
#2: 2011-05-18 11:51:41 ЛС | профиль | цитата
Что-то у Вас там намудрено. Старший бит указывает на отрицательное число, так?
------------ Дoбавленo в 11.51:

Add(Edit,4535685,280,350)
{
Left=30
Top=20
Text=""
DataType=2
link(onEnter,8120724:doCompare,[])
}
Add(If_else,8120724,336,357)
{
Type=2
Op2=Integer(127)
link(onTrue,9523974:doOperation,[])
link(onFalse,9775296:doWork3,[(452,370)])
}
Add(Edit,6746395,469,357)
{
Left=110
Top=20
Text=""
DataType=2
}
Add(Math,9523974,399,357)
{
OpType=1
Op1=128
ResultType=0
link(onResult,9775296:doWork2,[])
}
Add(HubEx,9775296,448,357)
{
link(onEvent,6746395:doText,[])
}


------------ Дoбавленo в 11.51:
Выше пример, под тегом "код", не этого часом хотели? (Ввести в левое поле число, нажать Enter)
карма: 1

0
Ответов: 8961
Рейтинг: 824
#3: 2011-05-18 12:02:30 ЛС | профиль | цитата
AVladM, и вдумчиво, не торопясь читать примечания к точкам code_24008.txt
карма: 19

0
файлы: 1code_24008.txt [882B] [166]
Ответов: 3889
Рейтинг: 362
#4: 2011-05-18 12:31:00 ЛС | профиль | цитата
Автоматизированный вариант того, что хотел автор)

code_24009.txt
карма: 1

0
файлы: 1code_24009.txt [629B] [172]
Ответов: 55
Рейтинг: 0
#5: 2011-05-18 16:05:28 ЛС | профиль | цитата
Спасибо!Легко и просто, когда понимаешь. Век живи ...
карма: 0

0
Ответов: 3889
Рейтинг: 362
#6: 2011-05-18 16:53:06 ЛС | профиль | цитата
AVladM писал(а):
Легко и просто, когда

Знаешь арифметику и прочёл вторую страницу справки - "Основы", секция "Циркуляция данных".
карма: 1

0
Ответов: 55
Рейтинг: 0
#7: 2011-05-19 04:36:39 ЛС | профиль | цитата
Вообще-то ответа почему не работает Switch я не получил. Но за решение проблемы спасибо.
карма: 0

0
Ответов: 3889
Рейтинг: 362
#8: 2011-05-19 06:49:45 ЛС | профиль | цитата
AVladM, Вообще-то, в 3-м посте этой темы коллега Леонид дал исчерпывающий ответ на этот вопрос
карма: 1

0
Ответов: 55
Рейтинг: 0
#9: 2011-05-20 15:51:27 ЛС | профиль | цитата
Спасибо за пример,разобрался. Главное действующее лицо doCheck. Но по справке это понять сложно.
code_24049.txt
Вариант без свича лучше.
карма: 0

0
файлы: 1code_24049.txt [1KB] [131]
Ответов: 16884
Рейтинг: 1239
#10: 2011-05-20 15:56:44 ЛС | профиль | цитата
Ну и какая разница в результате ?
code_24050.txt
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_24050.txt [389B] [148]
Ответов: 55
Рейтинг: 0
#11: 2011-05-21 04:42:39 ЛС | профиль | цитата
Большая. Мне нужно реализовать, то что на Си выглядит так:
T = (T&0x80)? -(T-0x80):T;
code_24009.txt меня устраивает.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#12: 2011-05-21 12:03:49 ЛС | профиль | цитата
AVladM писал(а):
Мне нужно реализовать, то что на Си выглядит так:
T = (T&0x80)? -(T-0x80):T;
Что на русском языке выглядит так:
Если старший бит=1 то убрать старший бит и умножить на -1 иначе ничего не делать.
А дословно в HiAsm это выглядит так:
code_24058.txt
Или элементарно можно решить на одном MathParse
Add(Button,9688009,105,273)
{
Left=65
Top=75
link(onClick,6485618:doCalc,[])
}
Add(Edit,13245669,168,224)
{
Left=70
Top=35
Text="128"
DataType=2
}
Add(Label,10438205,224,273)
{
Left=180
Top=40
}
Add(MathParse,6485618,168,273)
{
DataCount=1
MathStr="(%1>=128)*(-(%1-128)) + (%1<128)*%1"
ResultType=0
link(onResult,10438205:doText,[])
link(X1,13245669:Text,[])
}
Даже если Вас съели - у Вас есть два выхода
------------ Дoбавленo в 12.03:
nesco, нехватает нам кубика Iif. Давно хотел сделать.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_24058.txt [883B] [158]
Разработчик
Ответов: 26305
Рейтинг: 2146
#13: 2011-05-21 13:23:35 ЛС | профиль | цитата
Tad писал(а):
нехватает нам кубика Iif

Что за зверь
Tad писал(а):
Давно хотел сделать

Кто мешает
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#14: 2011-05-21 18:42:10 ЛС | профиль | цитата
nesco писал(а):
Что за зверь

По идее If_Else + Switch в одном флаконе.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26305
Рейтинг: 2146
#15: 2011-05-21 18:51:35 ЛС | профиль | цитата
Tad писал(а):
If_Else + Switch

Switch с условием.
А чем не устраивает Switch в спарке с If
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)