Добрый день!
Есть набор стриговых значений которые необходимо последовательно ( один за другим ) передать в ком-порт. Передача каждого значения только по внешнему сигналу (с того же ком-порта). Короче, нужен что-то типа командоаппарата. В пакете есть командный центр, но я не понимаю как с ним работать.Если можно парочку наводок в этом направлении
Этот топик читают: Гость
Ответов: 85
Рейтинг: 0
|
|||
карма: 0 |
|
Google
vip
|
#1.1контекстная реклама от партнеров
|
Ответов: 8886
Рейтинг: 823
|
|||
RT9U,
|
|||
карма: 19 |
|
Ответов: 85
Рейтинг: 0
|
|||
Леонид, Спасибо! Только вот вопрос, в вашем случае список строк будет пустой при следующем цикле программы??? Если это так то этот вариант не пойдет. Я прошу прощения просто еще опыта мало при работе с пакетом, поэтому такие вопросы
|
|||
карма: 0 |
|
Ответов: 8886
Рейтинг: 823
|
|||
RT9U писал(а): ..список строк будет пустой.. Без удаления
|
|||
карма: 19 |
|
Ответов: 85
Рейтинг: 0
|
|||
Леонид, спасибо. Вроде как должно работать.
|
|||
карма: 0 |
|
Ответов: 8886
Рейтинг: 823
|
|||
RT9U, раз вы работаете с каким-то железом через СОМ, да ещё и по запросу этого железа, полагаю, что запросы разные?
И всегда-ли они идут в определённом порядке? Не может случиться изменение порядка, запрос на одно, а по порядку последует совсем другое |
|||
карма: 19 |
|
Ответов: 85
Рейтинг: 0
|
|||
Прошу прощения долго не заглядывал в эту тему!!
Леонид, Нет запрос один это окончание данного измерения в моем случае. Однако возникла проблема. Дело в том, что в сом-порт надо передать часть стринговых переменных, при этом происходит подготовка к измерению, т.е. включится нужный режим измерения, потом надо сделать выдержку, примерно 2сек, чтобы всё "устаканилось", дать команду на измерение. После чего обратно прилетает сигнал окончания измерения. Далее включается другой режим, опять выдержка 2 сек, опять измерение и так по кругу, в течении еще 10 циклов. ( циклов 12 всего) Как это реализовать используя ваше предложение? Т.е. другими словами как воткнуть выдержку в 2 сек между стринговыми переменными в одном цикле??? Возможно между циклами тоже надо сделать выдержку в тоже 2 сек, но с этим пока не определился..... Редактировалось 3 раз(а), последний 2018-04-24 06:31:23 |
|||
карма: 0 |
|
Ответов: 8886
Рейтинг: 823
|
|||
RT9U, установить таймер (два события через 2 сек) перед чтением команд:
Таймер 2 сек
|
|||
карма: 19 |
|
Ответов: 85
Рейтинг: 0
|
|||
Леонид, спасибо!!! Только я не понял предназначение блока if-else, которой включен сразу после сом-порта.. Для чего он??? Сравнивать с "", для чего???
|
|||
карма: 0 |
|
Ответов: 8886
Рейтинг: 823
|
|||
RT9U, не пропускает пустые строки (опрос порта ~30 раз/сек), чтобы их не давать на запись.
|
|||
карма: 19 |
|
Ответов: 85
Рейтинг: 0
|
|||
Леонид, Спасибо, буду пробывать. Если будут вопросы спрошу!!
|
|||
карма: 0 |
|
Ответов: 85
Рейтинг: 0
|
|||
У меня возникла опять проблема. Проблема следующего характера. Необходимо остановить выборку стринговых значений, которые отправляются в сом-порт после полного цикла прохождения. в Моём случае опять по кругу идет без остановки. Пробовал стопорить таймер не получается... подскажите пожалуйста. выкладываю часть проекта.
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 |
|
Ответов: 1328
Рейтинг: 69
|
|||
RT9U, https://yadi.sk/i/ZzLuZv0m3VsoWP вставка кода
--- Добавлено в 2018-05-14 14:53:21 Если не получается остановить, можно не принимать ;-) код
Редактировалось 3 раз(а), последний 2018-05-14 14:53:21 |
|||
карма: 2 |
|
13