Netspirit, делаю небольшой чекер сетевых датчиков (20шт) на работе , требуется подключаться к порту 4060 и слушать данные от датчика.
Вроде бы все просто, решил сделать мультик в котором разместить ваш TCP клиент, если коннекта нет или оборвался требуется переподключиться, пробовал и таймер и поток, не получается, вываливается приложение.
Вот схема, оч мелкая, убрал все лишнее, подскажите пожалуйста в чем проблема...ни как не могу заставить TCP клиент работать в мультике.
code_37069.txt
------------ Дoбавленo в 01.19:
Я так понимаю один из вариантов вот этот?
Add(MultiElementEx,7924571,322,112)
{
Mode=1
link(data,7784919:doEvent1,[(373,118)(373,111)])
}
BEGIN_SDK
Add(EditMultiEx,3508206,21,21)
{
WorkCount=#5:##add|8:##select|9:##hselect|
EventCount=#4:data|
VarCount=#13:##eventHandle|0:|
Width=489
Point(##add)
Point(##select)
Point(##hselect)
Point(##eventHandle)
link(##select,7656509:doWork1,[(154,34)])
link(##hselect,7656509:doWork2,[(86,41)(86,97)])
}
Add(TCPClient,15207703,287,77)
{
IP="192.168.0.233"
Port=4060
AsyncConnect=1
Point(onErrorConnect)
Point(onErrorSend)
link(onErrorConnect,3508206:data,[(430,111)(430,27)])
}
Add(HubEx,7656509,150,91)
{
link(onEvent,15207703:doConnect,[])
}
END_SDK
Add(Button,14431410,154,112)
{
Left=100
Top=20
link(onClick,3637955:doFor,[])
}
Add(Hub,5366368,273,112)
{
link(onEvent1,7924571:##add,[])
link(onEvent2,7924571:##select,[])
}
Add(StrList,9387499,434,112)
{
link(Str,7924571:##eventHandle,[(440,100)(365,100)(365,155)(328,155)])
}
Add(If_else,13019571,406,189)
{
Op2=Integer(0)
link(onFalse,10231186:doEnum,[])
link(Op1,9387499:Count,[(412,170)(447,170)])
}
Add(ArrayEnum,10231186,462,196)
{
link(onItem,1035810:doEvent1,[])
link(Array,9387499:Array,[(468,176)(454,176)])
}
Add(Thread,454066,294,189)
{
Delay=1
link(onExec,13019571:doCompare,[])
}
Add(Hub,1035810,518,196)
{
link(onEvent1,12816250:In,[])
link(onEvent2,1222769:doData,[])
}
Add(LineBreak,1688034,266,133)
{
Caption="try"
link(Out,7924571:##hselect,[(309,139)(309,132)])
Primary=[12816250,364,63]
}
Add(DoData,1222769,546,203)
{
link(onEventData,35443:In,[])
link(Data,10231186:Index,[(552,191)(514,191)(514,240)(475,240)])
}
Add(LineBreak,2101120,382,126)
{
Caption="del"
link(Out,9387499:doDelete,[])
Primary=[35443,215,77]
}
Add(Hub,7784919,392,105)
{
link(onEvent1,16292451:doNext,[])
link(onEvent2,9387499:doAdd,[])
}
Add(CounterEx,16292451,546,105)
{
Max=300
}
Add(Label,13572689,546,147)
{
Left=105
Top=70
link(Text,16292451:Count,[])
}
Add(Timer,7441405,497,147)
{
link(onTimer,13572689:doText,[])
}
Add(For,3637955,210,112)
{
End=20
link(onEvent,5366368:doEvent1,[])
}
И еще вопрос) можно ли подобное реализовать в DLL? Все попытки использовать AsyncConnect в DLL приводят к крашу