Вверх ↑
Ответов: 65
Рейтинг: 1
#1: 2010-08-31 22:09:24 ЛС | профиль | цитата
Отпишись как проверишь
Обязательно
------------ Дoбавленo в 22.09:
работает так же как и с элементом коммутатор, т.е периодически смешиваются выходные каналы вот в таком виде:



Add(MainForm,7206775,308,98)
{
Width=459
Height=307
link(onActivate,6820242:doOpen,[])
}
Add(Stream2Hex,804338,490,175)
{
Mode=3
link(onResult,8553197:doEvent1,[])
link(Data,10484687:Value,[])
}
Add(ComAsync,6820242,630,98)
{
BaudRate=4800
StopBits=2
RxChar=0
TxEmpty=0
Point(onRxChar)
Point(onTxEmpty)
Point(CTSState)
Point(DSRState)
Point(RLSDState)
Point(doBreak)
Point(doXon)
Point(doClearErrors)
Point(doRXClear)
Point(doTXClear)
link(onRead,14743073:doConvert,[])
}
Add(Stream2Hex,14743073,707,98)
{
Mode=2
Point(Position)
Point(CheckSum)
link(onResult,13655515:doEvent,[])
}
Add(Insert,8762608,819,98)
{
SubStr="."
Position=4
}
Add(Convertor,2268743,819,147)
{
Mode=5
Digits=8
}
Add(Hub,8553197,539,175)
{
InCount=2
link(onEvent1,11576281:doData,[(557,181)(557,132)])
link(onEvent2,6820242:doWrite,[(605,188)(605,118)])
}
Add(Memory,10484687,490,119)
{
Default=String(0000000003)
}
Add(Stream2Hex,15062978,511,294)
{
Mode=3
link(onResult,8553197:doEvent2,[(555,300)(555,203)(529,203)(529,188)])
link(Data,1104403:Value,[])
}
Add(Memory,1104403,511,245)
{
Default=String(00000000e7)
}
Add(Convertor,16001750,581,217)
{
link(onResult,10726033:doText,[])
}
Add(Counter,16697466,315,168)
{
Max=1
Point(doValue)
link(onNext,2319846:doEvent1,[])
}
Add(Timer,10483551,252,168)
{
Interval=50
link(onTimer,16697466:doNext,[])
}
Add(Label,10726033,630,217)
{
Left=15
Top=20
Width=90
Caption="Stat"
}
Add(IndexToChanel,5504297,420,168)
{
link(onEvent1,15062978:doConvert,[(482,174)(482,300)])
link(onEvent2,804338:doConvert,[])
}
Add(Hub,2319846,364,168)
{
link(onEvent1,5504297:doEvent,[])
link(onEvent2,16001750:doConvert,[(412,181)(412,223)])
}
Add(IndexToChanel,13655515,763,98)
{
Point(Index)
link(onEvent1,8762608:doInsert,[])
link(onEvent2,2268743:doConvert,[(811,111)(811,153)])
link(Index,16697466:Count,[(769,86)(750,86)(750,333)(321,333)])
}
Add(DoData,11576281,560,126)
{
Data=Integer(5)
link(onEventData,6820242:doRead,[(611,132)(611,125)])
}


изменено на первоначальное чтение из порта, но в итоге ситуация первоначальная.
Hужно как-то заставить IndextoChanel не переключать выходные каналы пока полностью не будет считана строка для Hex кода 1 или Hex кода 2 и пока не пройдет чтение ответа до конца 5 байт не производить запись следующего запроса, а сейчас получается если за указанное время чтение не успело пройти по каким либо причинам, что-то где-то подвисло то все равно канал переключается на второй и я уже на выходе вижу смесь куска ответа на оба кода.


карма: 1

0