Вверх ↑
Этот топик читают: Гость
Ответов: 85
Рейтинг: 0
#1: 2018-02-04 14:46:49 ЛС | профиль | цитата
Добрый день!
Есть набор стриговых значений которые необходимо последовательно ( один за другим ) передать в ком-порт. Передача каждого значения только по внешнему сигналу (с того же ком-порта). Короче, нужен что-то типа командоаппарата. В пакете есть командный центр, но я не понимаю как с ним работать.Если можно парочку наводок в этом направлении
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 8886
Рейтинг: 823
#2: 2018-02-04 15:43:53 ЛС | профиль | цитата
RT9U,


Add(MainForm,2953706,196,147)
{
link(onCreate,6234234:doOpen,[])
}
Add(COM,6234234,266,161)
{
link(onRead,7827589:doCompare,[])
}
Add(Timer,16687086,147,189)
{
Interval=33
link(onTimer,14441446:doData,[])
}
Add(DoData,14441446,196,189)
{
Data=Integer(32)
link(onEventData,6234234:doRead,[])
}
Add(ListBox,5837369,448,112)
{
Left=185
Top=30
Width=75
Height=220
Strings=#1:а|1:б|1:в|1:г|1:д|1:е|1:ж|1:з|1:и|1:й|1:к|1:л|1:м|1:н|1:о|1:п|
}
Add(If_else,7827589,322,168)
{
link(onTrue,5612449:doData,[])
link(Op2,11291386:Text,[])
}
Add(Edit,11291386,329,112)
{
Left=35
Top=10
Width=100
Text="Внешний сигнал"
}
Add(Label,8556026,448,70)
{
Left=160
Top=10
Width=150
Height=17
Caption="набор стриговых значений"
}
Add(Hub,2694601,413,168)
{
link(onEvent1,10576942:doRead,[])
link(onEvent2,5837369:doDelete,[(438,181)(438,132)])
}
Add(DoData,5612449,371,168)
{
link(onEventData,2694601:doEvent1,[])
}
Add(ArrayRW,10576942,462,168)
{
link(onRead,6234234:doWrite,[(501,174)(501,216)(256,216)(256,188)])
link(Array,5837369:Array,[])
}

карма: 19

0
Ответов: 85
Рейтинг: 0
#3: 2018-02-04 16:04:11 ЛС | профиль | цитата
Леонид, Спасибо! Только вот вопрос, в вашем случае список строк будет пустой при следующем цикле программы??? Если это так то этот вариант не пойдет. Я прошу прощения просто еще опыта мало при работе с пакетом, поэтому такие вопросы
карма: 0

0
Ответов: 8886
Рейтинг: 823
#4: 2018-02-04 16:37:26 ЛС | профиль | цитата
RT9U писал(а):
..список строк будет пустой..
Да
Без удаления


Add(MainForm,6763416,203,189)
{
link(onCreate,6234234:doOpen,[])
}
Add(COM,6234234,273,203)
{
link(onRead,7827589:doCompare,[])
}
Add(Timer,16687086,154,231)
{
Interval=33
link(onTimer,14441446:doData,[])
}
Add(DoData,14441446,203,231)
{
Data=Integer(32)
link(onEventData,6234234:doRead,[])
}
Add(ListBox,5837369,462,147)
{
Left=185
Top=30
Width=75
Height=220
Strings=#1:а|1:б|1:в|1:г|1:д|1:е|1:ж|1:з|1:и|1:й|1:к|1:л|1:м|1:н|1:о|1:п|
link(onChange,1259766:doOperation,[(501,153)(501,139)(396,139)(396,167)])
}
Add(If_else,7827589,329,210)
{
link(onTrue,4510374:doNext,[])
link(Op2,11291386:Text,[])
}
Add(Edit,11291386,336,154)
{
Left=35
Top=10
Width=100
Text="Внешний сигнал"
}
Add(Label,8556026,462,91)
{
Left=160
Top=10
Width=150
Height=17
Caption="набор стриговых значений"
}
Add(ArrayRW,10576942,476,210)
{
link(onRead,6234234:doWrite,[(515,216)(515,251)(263,251)(263,230)])
link(Array,5837369:Array,[])
}
Add(Counter,4510374,406,210)
{
Max=99999
Default=-1
Point(doMax)
Point(Max)
link(onNext,10576942:doRead,[])
link(Max,1259766:Result,[])
}
Add(Math,1259766,406,161)
{
OpType=1
Op2=1
ResultType=0
Default=15
link(onResult,4510374:doMax,[(445,167)(445,202)(396,202)(396,237)])
link(Op1,5837369:Count,[(412,152)(454,152)(454,201)(475,201)])
}

карма: 19

0
Ответов: 85
Рейтинг: 0
#5: 2018-02-05 14:27:42 ЛС | профиль | цитата
Леонид, спасибо. Вроде как должно работать.
карма: 0

0
Ответов: 8886
Рейтинг: 823
#6: 2018-02-05 16:18:57 ЛС | профиль | цитата
RT9U, раз вы работаете с каким-то железом через СОМ, да ещё и по запросу этого железа, полагаю, что запросы разные?
И всегда-ли они идут в определённом порядке? Не может случиться изменение порядка, запрос на одно, а по порядку последует совсем другое
карма: 19

0
Ответов: 85
Рейтинг: 0
#7: 2018-04-24 06:27:55 ЛС | профиль | цитата
Прошу прощения долго не заглядывал в эту тему!!
Леонид, Нет запрос один это окончание данного измерения в моем случае. Однако возникла проблема. Дело в том, что в сом-порт надо передать часть стринговых переменных, при этом происходит подготовка к измерению, т.е. включится нужный режим измерения, потом надо сделать выдержку, примерно 2сек, чтобы всё "устаканилось", дать команду на измерение. После чего обратно прилетает сигнал окончания измерения. Далее включается другой режим, опять выдержка 2 сек, опять измерение и так по кругу, в течении еще 10 циклов. ( циклов 12 всего) Как это реализовать используя ваше предложение?
Т.е. другими словами как воткнуть выдержку в 2 сек между стринговыми переменными в одном цикле???
Возможно между циклами тоже надо сделать выдержку в тоже 2 сек, но с этим пока не определился.....

Редактировалось 3 раз(а), последний 2018-04-24 06:31:23
карма: 0

0
Ответов: 8886
Рейтинг: 823
#8: 2018-04-24 09:48:08 ЛС | профиль | цитата
RT9U, установить таймер (два события через 2 сек) перед чтением команд:
Таймер 2 сек


Add(MainForm,6763416,154,308)
{
link(onCreate,6234234:doOpen,[])
}
Add(COM,6234234,224,322)
{
link(onRead,14926331:doCompare,[])
}
Add(Timer,16687086,105,350)
{
Interval=33
link(onTimer,14441446:doData,[])
}
Add(DoData,14441446,154,350)
{
Data=Integer(32)
link(onEventData,6234234:doRead,[])
}
Add(ListBox,5837369,574,273)
{
Left=10
Top=35
Width=115
Height=220
Strings=#12:Подготовка 1|11:Измерение 1|12:Подготовка 2|11:Измерение 2|12:Подготовка 3|11:Измерение 3|12:Подготовка 4|11:Измерение 4|12:Подготовка 5|11:Измерение 5|12:Подготовка 6|11:Измерение 6|12:Подготовка 7|11:Измерение 7|12:Подготовка 8|11:Измерение 8|12:Подготовка 9|11:Измерение 9|13:Подготовка 10|12:Измерение 10|13:Подготовка 11|12:Измерение 11|13:Подготовка 12|12:Измерение 12|
link(onChange,1259766:doOperation,[(613,279)(613,265)(508,265)(508,293)])
}
Add(If_else,7827589,350,336)
{
link(onTrue,4789049:doWork2,[])
link(Op2,11291386:Text,[])
}
Add(Edit,11291386,357,280)
{
Left=160
Top=5
Width=100
Text="Внешний сигнал"
}
Add(Label,8556026,574,217)
{
Left=10
Top=5
Width=150
Height=17
Caption="набор стриговых значений"
}
Add(ArrayRW,10576942,588,336)
{
link(onRead,6234234:doWrite,[(628,342)(628,404)(214,404)(214,349)])
link(Array,5837369:Array,[])
}
Add(Counter,4510374,518,336)
{
Max=99999
Default=-1
Point(doMax)
Point(Max)
link(onNext,10576942:doRead,[])
link(Max,1259766:Result,[])
}
Add(Math,1259766,518,287)
{
OpType=1
Op2=1
ResultType=0
Default=15
link(onResult,4510374:doMax,[(557,293)(557,328)(508,328)(508,363)])
link(Op1,5837369:Count,[(524,278)(566,278)(566,327)(587,327)])
}
Add(Button,11793687,406,280)
{
Left=270
Top=5
Caption="Пуск"
link(onClick,4789049:doWork1,[(445,286)])
}
Add(ListBox,2935648,357,224)
{
Left=170
Top=75
Width=205
Height=180
AddType=1
}
Add(Label,1481935,357,182)
{
Left=225
Top=55
Width=93
Height=17
Caption="Принятые строки"
}
Add(Hub,8391723,315,329)
{
link(onEvent1,2935648:doAdd,[(340,335)(340,230)])
link(onEvent2,7827589:doCompare,[])
}
Add(If_else,14926331,273,329)
{
Type=5
Op2=String()
link(onTrue,8391723:doEvent1,[])
}
Add(Timer,9407116,462,336)
{
Interval=2000
Enable=1
AutoStop=2
link(onTimer,4510374:doNext,[])
}
Add(HubEx,4789049,441,336)
{
link(onEvent,9407116:doTimer,[])
}

карма: 19

0
Ответов: 85
Рейтинг: 0
#9: 2018-04-25 04:07:37 ЛС | профиль | цитата
Леонид, спасибо!!! Только я не понял предназначение блока if-else, которой включен сразу после сом-порта.. Для чего он??? Сравнивать с "", для чего???
карма: 0

0
Ответов: 8886
Рейтинг: 823
#10: 2018-04-25 09:39:38 ЛС | профиль | цитата
RT9U, не пропускает пустые строки (опрос порта ~30 раз/сек), чтобы их не давать на запись.
карма: 19

0
Ответов: 85
Рейтинг: 0
#11: 2018-04-25 10:08:07 ЛС | профиль | цитата
Леонид, Спасибо, буду пробывать. Если будут вопросы спрошу!!
карма: 0

0
Ответов: 85
Рейтинг: 0
#12: 2018-05-14 06:57:53 ЛС | профиль | цитата
У меня возникла опять проблема. Проблема следующего характера. Необходимо остановить выборку стринговых значений, которые отправляются в сом-порт после полного цикла прохождения. в Моём случае опять по кругу идет без остановки. Пробовал стопорить таймер не получается... подскажите пожалуйста. выкладываю часть проекта.

Make(delphi)
ver(4.05 build 186)
Add(MainForm,2953706,21,105)
{
}
Add(GroupBox,6675238,252,63)
{
Left=225
Top=42
Width=779
Height=247
Visible=1
Caption=""
Point(doVisible)
}
Add(ListBox,5837369,532,210)
{
Left=600
Top=45
Width=115
Height=220
Visible=1
Strings=#22:{1}2@1#2$2%1&1~1*1(2)2|2:^1|22:{1}2@1#1$2%2&2~2*1(2)2|2:^1|22:{1}2@1#2$1%2&2~2*2(2)1|2:^1|22:{1}2@1#2$2%2&1~2*2(1)2|2:^1|22:{1}2@2#2$1%2&1~2*2(1)2|2:^1|22:{1}2@2#2$2%2&2~2*2(2)2|2:^1|22:{2}1@1#2$2%1&1~1*1(2)2|2:^1|22:{2}1@1#1$2%2&2~2*1(2)2|2:^1|22:{2}1@1#2$1%2&2~2*2(2)1|2:^1|22:{2}1@1#2$2%2&1~2*2(1)2|2:^1|22:{2}1@2#2$1%2&1~2*2(1)2|2:^1|22:{2}1@2#2$2%2&2~2*2(2)2|2:^1|0
link(onChange,1259766:doOperation,[(574,216)(574,194)(522,194)(429,195)(429,230)])
}
Add(If_else,7827589,175,266)
{
link(onTrue,641462:doEvent1,[])
link(Op2,11291386:Text,[])
}
Add(Edit,11291386,182,217)
{
Left=600
Top=10
Width=100
Visible=1
Text="END1RAY"
Point(doVisible)
}
Add(ArrayRW,10576942,539,308)
{
link(Array,5837369:Array,[(545,274)(552,274)])
}
Add(Counter,4510374,399,301)
{
Max=23
Default=-1
Point(doMax)
Point(Max)
link(onNext,7203513:doEvent1,[(436,307)(436,314)])
link(Max,1259766:Result,[(405,279)(447,279)])
}
Add(Math,1259766,441,224)
{
OpType=1
Op2=1
ResultType=0
Default=15
link(onResult,4510374:doMax,[(478,230)(478,262)(345,262)(345,328)])
link(Op1,5837369:Count,[(447,212)(496,212)(496,267)(545,267)])
}
Add(Timer,9407116,266,273)
{
Interval=3000
Enable=1
AutoStop=2
OverCall=1
Point(Enabled)
link(onTimer,10031665:doEvent1,[])
}
Add(ChildGroupBox,8984142,245,140)
{
link(onEvent1,14718205:doEvent1,[(359,146)(359,139)])
link(onEvent2,641462:doEvent2,[(352,153)(352,216)(219,216)(219,279)])
}
BEGIN_SDK
Add(EditMulti,4808595,14,28)
{
EventCount=3
WorkCount=3
Width=706
Height=417
link(doWork1,5633900:doVisible,[(28,34)(28,125)])
link(doWork2,9935064:doSearch,[(154,41)(154,97)])
link(doWork3,13787912:doEvent1,[(42,48)(42,62)])
}
Add(Image,5435298,665,161)
{
Left=11
Top=11
Width=320
Height=115
Color=-16777216
Ctl3D=0
WinStyle=4
}
Add(LED,14726973,595,203)
{
Left=70
Top=45
ColorOn=65280
ColorOff=32768
}
Add(Label,15866377,665,119)
{
Left=48
Top=18
Width=66
Height=20
Font=[MS Sans Serif,10,1,0,1]
Caption="НАЧАЛО"
CaptionOnClick=0
}
Add(Label,3966933,665,70)
{
Left=204
Top=19
Width=100
Font=[MS Sans Serif,10,1,0,1]
Caption="ОКОНЧАНИЕ"
}
Add(Button,16481273,21,154)
{
Left=50
Top=80
Width=230
Font=[MS Sans Serif,10,1,0,1]
Caption="СТАРТ"
Data=String(1)
link(onClick,10376737:doEvent1,[])
}
Add(LED,1760349,595,70)
{
Left=240
Top=45
}
Add(BlockFind,9935064,189,91)
{
IncludeBlock=1
StartBlock="END"
EndBlock="RAY"
Point(doStop)
link(onSearch,3316688:doEvent1,[])
}
Add(Hub,3316688,329,91)
{
OutCount=5
link(onEvent3,1760349:doOff,[(469,111)(469,83)])
link(onEvent4,3234029:doWork1,[(367,118)(367,170)(203,170)(203,300)])
link(onEvent5,10093336:doNext,[(399,125)(399,167)])
}
Add(ListBox,11608254,294,175)
{
Left=105
Top=415
Width=120
Height=100
Visible=1
Strings=#1:1|0000
Point(onSelect)
Point(doSelect)
Point(String)
link(onSelect,13119274:doData,[(338,195)(338,233)(296,233)(296,272)])
}
Add(ChanelToIndex,3234029,224,294)
{
link(onIndex,11608254:doSelect,[(275,300)(275,223)])
}
Add(DoData,13119274,308,266)
{
link(onEventData,10376737:doEvent2,[(352,272)(352,220)(72,220)(72,167)])
link(Data,11608254:String,[(314,240)(321,240)])
}
Add(Switch,6709506,126,196)
{
Point(onOn)
Point(onOff)
link(onOn,14726973:doOn,[(376,209)(376,223)])
link(onOff,14726973:doOff,[])
}
Add(GroupBox,5633900,42,119)
{
Left=165
Top=72
Width=353
Height=140
Visible=1
Caption=""
Point(doVisible)
}
Add(Hub,10376737,84,154)
{
InCount=2
link(onEvent1,6709506:doSwitch,[(118,160)(118,202)])
link(onEvent2,4808595nEvent2,[(409,167)(409,41)])
}
Add(Hub,13787912,70,56)
{
link(onEvent1,1760349:doOn,[(340,62)(340,90)])
link(onEvent2,6709506:doReset,[(105,69)(105,209)])
}
Add(CounterEx,10093336,455,161)
{
Min=1
Max=120
Point(doValue)
Point(onThroughMax)
Point(doReset)
link(onNext,4808595nEvent3,[(603,167)(603,48)])
link(onThroughMax,13348106:doEvent1,[])
}
Add(Hub,13348106,518,168)
{
OutCount=4
link(onEvent1,4808595nEvent1,[(603,174)(603,34)])
link(onEvent2,10093336:doReset,[(544,181)(544,169)(443,169)(443,181)])
link(onEvent3,3234029:doWork2,[(539,188)(539,255)(210,255)(210,307)])
link(onEvent4,9935064:doStop,[(544,195)(544,149)(177,149)(177,104)])
}
END_SDK
Add(Hub,15583620,133,63)
{
link(onEvent1,6675238:doVisible,[])
link(onEvent2,8984142:doWork1,[(171,76)(171,146)])
}
Add(Hub,9201717,133,147)
{
link(onEvent1,8984142:doWork2,[])
link(onEvent2,14926331:doCompare,[(159,160)(159,216)(100,216)(100,286)])
}
Add(Hub,641462,231,266)
{
InCount=2
OutCount=1
link(onEvent1,9407116:doTimer,[(255,272)(255,279)])
}
Add(If_else,14926331,112,280)
{
Type=5
Op2=String()
link(onTrue,7827589:doCompare,[(160,286)(160,272)])
}
Add(Hub,10031665,308,273)
{
link(onEvent1,4510374:doNext,[(360,279)(360,307)])
link(onEvent2,13852583:doNext,[(337,286)(337,447)])
}
Add(CounterEx,13852583,371,441)
{
Max=24
Point(doReset)
Point(onThroughMax)
link(onThroughMax,8940787:doEvent1,[])
}
Add(Hub,8940787,420,448)
{
OutCount=3
link(onEvent1,13852583:doReset,[(446,454)(446,432)(359,432)(359,454)])
link(onEvent2,8984142:doWork3,[(466,461)(466,180)(226,180)(226,160)])
}
Add(Hub,14718205,378,133)
{
OutCount=3
}
Add(If_else,8642142,483,364)
{
Op2=Integer(23)
link(onTrue,5177111:doEvent1,[(527,370)(527,328)])
}
Add(Hub,7203513,476,308)
{
OutCount=4
link(onEvent1,10576942:doRead,[])
link(onEvent2,8642142:doCompare,[(502,321)(502,345)(464,345)(464,370)])
}
Add(Hub,5177111,504,322)
{
link(onEvent1,9407116:doStop,[(254,328)(254,286)])
}

карма: 0

0
Ответов: 1328
Рейтинг: 69
#13: 2018-05-14 14:46:41 ЛС | профиль | цитата
RT9U, https://yadi.sk/i/ZzLuZv0m3VsoWP вставка кода

--- Добавлено в 2018-05-14 14:53:21

Если не получается остановить, можно не принимать ;-)

код


Add(MainForm,2953706,336,266)
{
}
Add(IndexToChanel,4156532,560,280)
{
Point(Index)
link(onEvent2,1617761:doAdd,[])
link(Index,16377758:Checked,[])
}
Add(CheckBox,16377758,560,224)
{
Left=95
Top=60
Width=120
Checked=0
Caption="Пропускать"
}
Add(Timer,3861846,406,280)
{
link(onTimer,5801178:doRandom,[])
}
Add(Memo,1617761,644,287)
{
Left=50
Top=110
Width=280
Height=145
}
Add(Random,5801178,476,280)
{
Min=9999999
Max=11111111
link(onRandom,4156532:doEvent,[])
}

Редактировалось 3 раз(а), последний 2018-05-14 14:53:21
карма: 2

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