И снова здравствуйте, сварганил одну приблуду и хотелось бы ее сделать более человеколюбивой, и по классике жанра не знаю куда копать.
Add(MainForm,2953706,161,224) { Width=347 Height=149 Caption="RemPowerControl" Point(onClose) Point(doWidth) Point(doHeight) link(onCreate,13959214:doEvent1,[(240,244)(240,307)]) } Add(Button,3086356,623,567) { Left=100 Top=85 Width=95 Visible=1 Caption="Power_on" Data=String(Power_on) Point(doVisible) link(onClick,10925069:doEvent2,[(671,573)(671,538)]) } Add(Button,12094308,616,448) { Left=230 Top=85 Width=95 Visible=1 Caption="Power_off" Data=String(Power_off) Point(doVisible) link(onClick,14351558:doEvent1,[]) } Add(COMEX,15461939,483,476) { Point(onDCD) Point(onOpen) Point(doDTR) Point(doRTS) Point(doRXClear) Point(onError) Point(onClose) link(Port,3611942:Var,[]) link(onDCD,6630792:doEvent,[(604,503)(604,524)]) link(onOpen,14573883:doOn,[(537,510)(537,524)]) link(onError,13281352:doEvent1,[(523,517)(523,482)]) link(onClose,14573883:doOff,[(537,524)(537,517)]) } Add(LED,1038873,791,483) { Left=200 Top=60 Blick=1 ColorOff=8421504 } Add(IndexToChanel,6630792,623,518) { link(onEvent1,10925069:doEvent1,[(671,524)(671,531)]) link(onEvent2,14351558:doEvent2,[(667,531)(667,461)]) } Add(Message,2898214,1141,476) { Message="Не возможно открыть Com port" Caption="Com port" Icon=4 } Add(DoData,14995888,791,434) { Data=String(Power_off) } Add(DoData,16676006,763,553) { Data=String(Power_on) } Add(Hub,14351558,679,448) { InCount=2 OutCount=3 link(onEvent1,14995888:doData,[(700,454)(700,440)]) link(onEvent2,1038873:doOff,[(745,461)(745,496)]) link(onEvent3,7959721:doData,[(739,468)(739,692)]) } Add(Hub,10925069,686,525) { InCount=2 OutCount=3 link(onEvent1,16676006:doData,[(718,531)(718,559)]) link(onEvent2,1038873:doOn,[(746,538)(746,503)]) link(onEvent3,16425085:doData,[(742,545)(742,650)]) } Add(LED,14573883,560,504) { Left=200 Top=10 Blick=1 ColorOn=65280 ColorOff=8421504 } Add(CheckBox,11345511,532,630) { Left=10 Top=85 Width=85 Caption="Manual Mode" link(onCheck,6580948:doEvent1,[(580,636)(580,573)]) } Add(Hub,6580948,588,567) { link(onEvent1,3086356:doVisible,[]) link(onEvent2,12094308:doVisible,[(614,580)(614,606)(837,606)(837,423)(577,423)(577,454)]) } Add(Button,13973615,273,469) { Left=230 Top=5 Width=95 Height=25 Caption="Открыть порты" link(onClick,6245660:doEvent2,[]) } Add(EnumCOM,4795209,322,301) { link(onEnumPorts,15879246:doEvent1,[]) } Add(Hub,6245660,329,462) { InCount=2 OutCount=5 link(onEvent1,8981816:doEvent1,[(357,468)(357,377)]) link(onEvent2,14055846:In,[]) link(onEvent3,15461939:doOpen,[]) link(onEvent4,14204440:In,[]) } Add(Button,12548643,311,574) { Left=230 Top=35 Width=95 Height=25 Caption="Закрыть порты" link(onClick,10338042:doEvent2,[(357,580)(357,559)]) } Add(ComboBox,15281610,413,315) { Left=100 Top=10 Width=95 Height=21 Text="ComPortSens" DropDownCount=15 Point(Index) Point(doSelect) } Add(GetIndexData,3611942,483,420) { link(Data1,7708773:GetData,[]) } Add(DoData,13113386,420,420) { link(onEventData,3611942:doIndex,[]) } Add(Delete,7374699,420,371) { Count=3 link(onDelete,7708773:doData,[]) link(Str,15281610:String,[]) } Add(EventFromData,7708773,483,371) { } Add(Button,5619865,112,280) { Left=100 Top=60 Width=95 Caption="Обновить" link(onClick,9961641:doEvent1,[]) } Add(Hub,9961641,168,280) { OutCount=6 link(onEvent1,8153651:In,[]) link(onEvent3,4446351:In,[]) link(onEvent4,14485693:In,[]) link(onEvent5,13959214:doEvent2,[]) } Add(Hub,13959214,287,301) { InCount=2 OutCount=1 link(onEvent1,4795209:doEnumPorts,[]) } Add(Hub,10338042,371,546) { InCount=2 link(onEvent1,15461939:doClose,[(424,552)(424,489)]) link(onEvent2,5295513:In,[(399,559)(399,566)]) } Add(LineBreak,4787817,308,546) { link(Out,10338042:doEvent1,[]) Primary=[8153651,-112,-266] } Add(COMEX,14266388,1008,616) { Point(onDCD) Point(onOpen) Point(doDTR) Point(doRTS) Point(doRXClear) Point(onError) Point(onClose) link(Port,7117122:Var1,[]) link(onOpen,2564288:doOn,[(1072,650)(1072,660)]) link(onError,13281352:doEvent2,[(1066,657)(1066,489)]) link(onClose,2564288:doOff,[(1072,664)(1072,653)]) } Add(StreamConvertor,2547758,896,651) { Mode=3 link(onResult,14266388:doWrite,[(968,657)(968,636)]) } Add(Hub,13479268,854,651) { InCount=2 OutCount=1 link(onEvent1,2547758:doConvert,[]) } Add(DoData,16425085,784,644) { Data=String(A00101A2) link(onEventData,13479268:doEvent1,[(835,650)(835,657)]) } Add(DoData,7959721,784,686) { Data=String(A00100A1) link(onEventData,13479268:doEvent2,[(835,692)(835,664)]) } Add(ComboBox,347233,1001,490) { Left=100 Top=35 Width=95 Height=21 Text="ComPort Relay" Point(Text) Point(Data) Point(Index) } Add(LineBreak,1458761,889,609) { link(Out,14266388:doClose,[(925,615)(925,629)]) Primary=[5295513,-476,-49] } Add(LineBreak,10037001,889,588) { link(Out,14266388:doOpen,[(995,594)(995,622)]) Primary=[14204440,-525,-105] } Add(Hub,15879246,378,301) { link(onEvent1,347233:doAdd,[(969,307)(969,496)]) link(onEvent2,15281610:doAdd,[(399,314)(399,321)]) } Add(LineBreak,234941,938,497) { link(Out,347233:doClear,[]) Primary=[14485693,-742,-196] } Add(MultiElement,7117122,1008,546) { link(Data1,347233:String,[]) } BEGIN_SDK Add(EditMulti,8722527,21,21) { WorkCount=1 DataCount=1 VarCount=1 Width=1133 Height=844 link(doWork1,6684048:doEvent1,[(115,27)(115,258)]) link(Var1,15841810:Var,[(27,595)(398,595)]) } Add(GetIndexData,15841810,392,294) { link(Data1,1214412:GetData,[(398,275)(391,275)]) } Add(DoData,11077331,322,294) { link(onEventData,15841810:doIndex,[]) } Add(Delete,10817791,322,196) { Count=3 link(onDelete,1214412:doData,[]) link(Str,8722527:Data1,[(328,108)(27,108)]) } Add(EventFromData,1214412,385,196) { } Add(Hub,6684048,210,252) { link(onEvent1,10817791:doDelete,[(273,258)(273,202)]) link(onEvent2,11077331:doData,[(273,265)(273,300)]) } END_SDK Add(Hub,8981816,371,371) { OutCount=3 link(onEvent1,7374699:doDelete,[]) link(onEvent2,13113386:doData,[(399,384)(399,426)]) } Add(LineBreak,6004050,959,546) { link(Out,7117122:doWork1,[]) Primary=[14055846,-602,-77] } Add(Hub,13281352,1092,476) { InCount=2 link(onEvent1,2898214:doMessage,[]) } Add(LED,2564288,1083,640) { Left=200 Top=35 Blick=1 ColorOn=65280 ColorOff=8421504 } Add(LineBreak,16596305,357,322) { link(Out,15281610:doClear,[]) Primary=[4446351,-161,-28] }
Отсюда возникает вопрос как сделать в хиасме чтобы программа сама определяла нужное устройство и выбирала его в своем месте.
принцип работы программы примитивный сенсор ловит нужный сигнал и передает его на реле. только каждый раз при запуске ПО приходится выбирать COM порты а их как назло иногда2 десятка и они временами почему-то меняются.
Логически я примерно представляю что нужно опросить каждый ком порт на свойства и какие то уникальные характеристики и выбрать нужный. Но как, если это обычные USB-com переходники китайского производства.
|