Вверх ↑
Этот топик читают: Гость
Ответов: 85
Рейтинг: 0
#1: 2018-03-07 05:31:46 ЛС | профиль | цитата
Здравствуйте! Уже неделю бьюсь над следующим, не получается сделать что-то рабочее.
При нажатии кнопки в UART улетает команда ^1 и загорается зеленый светодиод. Через некоторое время с UART прилетает команда на блок Block{TXT} END1RAY, которая должна погасить зеленый светодиод, зажечь красный и отправить в UART команду ^2. Просьба помочь!!!

Add(MainForm,2953706,21,105)
{
}
Add(Image,7126235,574,196)
{
Left=11
Top=11
Width=320
Height=115
Color=-16777216
Ctl3D=0
WinStyle=4
}
Add(LED,11345280,518,378)
{
Left=240
Top=45
}
Add(LED,3736595,448,105)
{
Left=70
Top=45
ColorOn=65280
ColorOff=32768
}
Add(Label,16031668,574,154)
{
Left=48
Top=18
Width=66
Height=20
Font=[MS Sans Serif,10,1,0,1]
Caption="НАЧАЛО"
CaptionOnClick=0
}
Add(Label,9191340,574,112)
{
Left=204
Top=19
Width=100
Font=[MS Sans Serif,10,1,0,1]
Caption="ОКОНЧАНИЕ"
}
Add(Button,9039285,119,91)
{
Left=50
Top=80
Width=230
Font=[MS Sans Serif,10,1,0,1]
Caption="СТАРТ"
Data=String(1)
link(onClick,14783814:doEvent1,[])
}
Add(Hub,14783814,182,91)
{
link(onEvent1,16762439:doSwitch,[(210,97)(210,83)])
link(onEvent2,15661738:doReset,[(273,104)(273,356)])
}
Add(Switch,16762439,224,77)
{
Point(onOn)
Point(onOff)
link(onOn,2736618:doEvent1,[])
link(onOff,7524290:doEvent1,[(286,97)(286,160)])
}
Add(ListBox,9988678,483,161)
{
Left=105
Top=415
Width=120
Height=100
Visible=1
Strings=#0:|2:^1|0:|
Point(onSelect)
Point(doSelect)
Point(String)
link(onSelect,12439972:doData,[(520,181)(520,265)(464,265)(464,307)])
}
Add(ChanelToIndex,12219394,399,161)
{
link(onIndex,9988678:doSelect,[(450,167)(450,209)])
}
Add(Hub,7524290,308,154)
{
link(onEvent1,3736595:doOff,[(347,160)(347,118)])
link(onEvent2,12219394:doWork1,[])
}
Add(Hub,2736618,308,84)
{
link(onEvent1,3736595:doOn,[(347,90)(347,125)])
link(onEvent2,12219394:doWork2,[(354,97)(354,174)])
}
Add(DoData,12439972,476,301)
{
link(Data,9988678:String,[(482,257)(510,257)])
}
Add(BlockFind,16367655,119,217)
{
IncludeBlock=1
StartBlock="END"
EndBlock="RAY"
link(onSearch,8032059:doCase,[])
}
Add(Case,8032059,273,217)
{
Value=String(1)
link(onTrue,3627094:doEvent1,[])
}
Add(Switch,15661738,392,343)
{
Point(onOn)
Point(onOff)
link(onOn,11345280:doOn,[(475,356)(475,398)])
link(onOff,11345280:doOff,[(446,363)(446,391)])
}
Add(Hub,3627094,336,224)
{
link(onEvent1,15661738:doSwitch,[(371,230)(371,349)])
link(onEvent2,16762439:doReset,[(355,237)(355,205)(212,205)(212,90)])
}

карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 8888
Рейтинг: 823
#2: 2018-03-07 10:56:50 ЛС | профиль | цитата
RT9U
RT9U


Add(MainForm,3219610,427,91)
{
}
Add(Image,7126235,525,42)
{
Left=51
Top=141
Width=280
Height=115
Color=-16777216
Ctl3D=0
WinStyle=4
}
Add(LED,11345280,707,168)
{
Left=240
Top=45
}
Add(LED,3736595,700,119)
{
Left=70
Top=45
ColorOn=65280
ColorOff=32768
}
Add(Label,16031668,427,42)
{
Left=48
Top=23
Width=66
Height=20
Font=[MS Sans Serif,10,1,0,1]
Caption="НАЧАЛО"
CaptionOnClick=0
}
Add(Label,9191340,476,42)
{
Left=204
Top=24
Width=100
Font=[MS Sans Serif,10,1,0,1]
Caption="ОКОНЧАНИЕ"
}
Add(Button,9039285,427,140)
{
Left=50
Top=80
Width=230
Font=[MS Sans Serif,10,1,0,1]
Caption="СТАРТ"
Data=String(1)
link(onClick,3816624:doWork2,[])
}
Add(BlockFind,16367655,553,203)
{
IncludeBlock=1
StartBlock="END"
EndBlock="RAY"
link(onSearch,14157366:doEvent1,[])
}
Add(StrList,16400863,539,84)
{
Strings=#8:Команда0|8:Команда1|8:Команда2|8:Команда3|
}
Add(ArrayRW,5616863,553,140)
{
link(onRead,16172668:doEvent1,[])
link(Array,16400863:Array,[])
}
Add(Counter,7256672,497,140)
{
Max=3
Default=-1
link(onNext,5616863:doRead,[])
}
Add(Hub,16172668,602,140)
{
OutCount=4
link(onEvent1,4645252:doString,[(627,146)(627,48)])
link(onEvent2,3736595:doOn,[(634,153)(634,139)])
link(onEvent3,11345280:doOff,[(697,160)(697,181)])
link(onEvent4,10746308:doWork2,[(627,167)(627,188)(487,188)(487,209)])
}
Add(Label,8521194,707,42)
{
Left=85
Top=5
}
Add(FormatStr,4645252,658,42)
{
DataCount=1
Mask="Выдана %1"
link(onFString,902978:doWork2,[])
}
Add(Hub,14157366,602,203)
{
OutCount=4
link(onEvent1,6691445:doString,[(641,209)(641,83)])
link(onEvent2,3736595:doOff,[(648,216)(648,132)])
link(onEvent3,11345280:doOn,[(655,223)(655,188)])
link(onEvent4,12326340:doTimer,[(627,230)(627,244)(417,244)(417,188)])
}
Add(FormatStr,6691445,658,77)
{
DataCount=1
Mask="%1 выполнена!"
link(onFString,902978:doWork3,[(697,83)])
}
Add(Timer,12326340,427,182)
{
Enable=1
AutoStop=1
link(onTimer,3816624:doWork3,[(480,188)])
}
Add(HubEx,3816624,476,140)
{
link(onEvent,7256672:doNext,[])
}
Add(HubEx,902978,693,42)
{
link(onEvent,8521194:doText,[])
}
Add(MultiElement,10746308,497,196)
{
@Hint=#4:UART|
link(onEvent2,16367655:doSearch,[])
}
BEGIN_SDK
Add(EditMulti,12137439,21,21)
{
EventCount=2
WorkCount=2
link(doWork2,14803907:doValue,[(62,34)(62,97)])
}
Add(FormatStr,12020067,147,140)
{
DataCount=1
Mask="END%1RAY"
link(onFString,12137439:onEvent2,[(193,146)(193,34)])
link(Str1,14803907:Value,[])
}
Add(Timer,459315,70,140)
{
Enable=1
AutoStop=1
link(onTimer,12020067:doString,[])
}
Add(Memory,14803907,147,91)
{
link(onData,459315:doTimer,[(186,97)(186,132)(60,132)(60,146)])
}
END_SDK

карма: 19

0
Ответов: 85
Рейтинг: 0
#3: 2018-03-07 11:15:33 ЛС | профиль | цитата
Леонид, спасибо, но маленько не то конечно. Я наверное неправильно выразился с UARTом. Под UARTом я понимал СОМ-порт, организованный на основе USB-порта. Короче нужно чтоб был СОМ-порт. Другими словами. Еще раз ПАРДОН!! попробую с вашей подсказкой что-нибудь сваять.
карма: 0

0
Ответов: 8888
Рейтинг: 823
#4: 2018-03-07 13:24:20 ЛС | профиль | цитата
RT9U, при работе через СОМ порт надо учитывать возможность разрыва принимаемого ответа при считывании, поэтому необходимо "склеивание" строк при приёме и дальнейший парсинг принятого:
СОМ


Add(MainForm,3219610,259,77)
{
Point(onClose)
link(onCreate,12236021:doOpen,[])
link(onClose,12236021:doClose,[])
}
Add(Image,7126235,371,28)
{
Left=51
Top=141
Width=280
Height=115
Color=-16777216
Ctl3D=0
WinStyle=4
}
Add(LED,11345280,602,203)
{
Left=240
Top=45
}
Add(LED,3736595,595,154)
{
Left=70
Top=45
ColorOn=65280
ColorOff=32768
}
Add(Label,16031668,259,28)
{
Left=48
Top=23
Width=66
Height=20
Font=[MS Sans Serif,10,1,0,1]
Caption="НАЧАЛО"
CaptionOnClick=0
}
Add(Label,9191340,308,28)
{
Left=204
Top=24
Width=100
Font=[MS Sans Serif,10,1,0,1]
Caption="ОКОНЧАНИЕ"
}
Add(Button,9039285,91,112)
{
Left=50
Top=80
Width=230
Font=[MS Sans Serif,10,1,0,1]
Caption="СТАРТ"
Data=String(1)
link(onClick,16127872:doEvent1,[])
}
Add(BlockFind,16367655,455,224)
{
IncludeBlock=1
StartBlock="END"
EndBlock="RAY"
link(onSearch,14157366:doEvent1,[])
}
Add(StrList,16400863,210,56)
{
Strings=#8:Команда0|8:Команда1|8:Команда2|8:Команда3|
}
Add(ArrayRW,5616863,224,112)
{
link(onRead,12236021:doWrite,[])
link(Array,16400863:Array,[])
}
Add(Counter,7256672,182,112)
{
Max=3
Default=-1
link(onNext,5616863:doRead,[])
}
Add(Hub,16172668,497,91)
{
OutCount=4
link(onEvent1,4645252:doString,[(522,97)(522,83)])
link(onEvent2,3736595:doOn,[(529,104)(529,174)])
link(onEvent3,11345280:doOff,[(522,111)(522,216)])
}
Add(Label,8521194,609,77)
{
Left=85
Top=5
}
Add(FormatStr,4645252,553,77)
{
DataCount=1
Mask="Выдана %1"
link(onFString,902978:doWork2,[])
link(Str1,5616863:Item,[(559,70)(419,70)(419,151)(230,151)])
}
Add(Hub,14157366,497,224)
{
OutCount=3
link(onEvent1,6691445:doString,[(536,230)(536,118)])
link(onEvent2,3736595:doOff,[(543,237)(543,167)])
link(onEvent3,11345280:doOn,[(550,244)(550,223)])
}
Add(FormatStr,6691445,553,112)
{
DataCount=1
Mask="%1 выполнена!"
link(onFString,902978:doWork3,[(599,118)])
}
Add(HubEx,902978,595,77)
{
link(onEvent,8521194:doText,[])
}
Add(COM,12236021,308,91)
{
link(onWrite,9286098:doCompare,[])
link(onRead,16529548:doStrCat,[(347,104)(347,138)(270,138)(270,174)])
}
Add(If_else,9286098,357,91)
{
Type=5
Op2=Integer(0)
link(onTrue,16172668:doEvent1,[])
link(onFalse,367295:doData,[(410,104)(410,34)])
}
Add(DoData,367295,553,28)
{
Data=String(Ошибка передачи команды)
link(onEventData,902978:doWork1,[(599,34)])
}
Add(StrCat,16529548,280,168)
{
link(onStrCat,12144632:doEvent1,[])
link(Str1,7007842:Var3,[(286,159)(370,159)])
}
Add(Memory,1667408,378,168)
{
}
Add(Hub,12144632,322,168)
{
link(onEvent1,6792426:doWork2,[])
link(onEvent2,3327846:doCompare,[(347,181)(347,223)])
}
Add(StrMask,3327846,378,217)
{
Mask="END*RAY"
link(onTrue,14966646:doEvent1,[])
link(Str,16728896:Var2,[])
}
Add(GetDataEx,16728896,378,203)
{
link(Data,1667408:Value,[])
}
Add(Timer,11812872,182,168)
{
Interval=32
Enable=1
link(onTimer,14951102:doData,[])
}
Add(Hub,16127872,133,112)
{
link(onEvent1,11511096:doWork2,[])
link(onEvent2,11812872:doTimer,[(172,125)(172,174)])
}
Add(DoData,14951102,224,168)
{
Data=Integer(64)
link(onEventData,12236021:doRead,[(263,174)(263,125)])
}
Add(Position,9934359,259,224)
{
Target="END"
link(onSearch,13463562:doDelete,[])
link(Str,1251374:Var1,[(265,208)])
}
Add(GetDataEx,7007842,364,203)
{
Angle=1
link(Data,16728896:Var1,[])
}
Add(Delete,13463562,308,224)
{
Position=0
Count=128
link(onDelete,6792426:doWork3,[(361,230)])
link(Str,1251374:Var2,[])
}
Add(HubEx,6792426,357,168)
{
link(onEvent,1667408:doValue,[])
}
Add(GetDataEx,1251374,308,203)
{
Angle=1
link(Data,7007842:Var1,[])
}
Add(Hub,14966646,420,224)
{
OutCount=3
link(onEvent1,16367655:doSearch,[])
link(onEvent2,9934359:doSearch,[(450,237)(450,265)(249,265)(249,230)])
link(onEvent3,5969470:doTimer,[(443,244)(443,272)(81,272)(81,181)])
}
Add(InfoTip,8959653,273,147)
{
Info=#28:Соединение принятых символов|
Width=155
Height=46
}
Add(InfoTip,13711459,224,203)
{
Info=#80:Поиск "END*RAY", выделение ответа и удаление из принятой строки найденного блока|
Width=274
Height=88
}
Add(Timer,5969470,91,175)
{
Enable=1
AutoStop=1
link(onTimer,11511096:doWork3,[(158,181)])
}
Add(HubEx,11511096,154,112)
{
link(onEvent,7256672:doNext,[])
}

И конечно должно быть соответствие установленной скорости СОМ порта и количества принимаемых символов/сек.
карма: 19

0
Ответов: 85
Рейтинг: 0
#5: 2018-03-08 08:49:15 ЛС | профиль | цитата
Леонид, попробую применить Ваш метод. Большое спасибо. Если будут еще вопросы обращусь .
карма: 0

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