Gunnman писал(а):
1 - работает, но возникает вопросДля неасинхронного порта, который у нас -- да, так можно делать, но нужно поставить еще условие -- пропускать на чтение только, если нет 0.
------------ Дoбавленo в 17.52:
Как еще можно реализовать схему?
Постоянно читать нужное количество байтов в другом потоке (асинхронное чтение) и не пропускать на выход пустую строку, по ней же и синхронизироваться. И не забыть поставить накопитель потока
Как-тот так -- пример побайтового чтения
Add(ArrayRW,6457832,441,196)
{
link(Array,7493369:Array,[])
}
Add(Case,15358791,350,154)
{
Value=String()
link(onNextCase,6457832:doAdd,[(430,160)(430,216)])
link(onTrue,10885940:doEvent1,[])
}
Add(Hub,10885940,392,161)
{
link(onEvent1,7493369:doGetStr,[])
link(onEvent2,7493369:doClear,[])
}
Add(CharArray,7493369,441,154)
{
link(onGetStr,6051039:doCase,[])
}
Add(Case,6051039,483,161)
{
Value=String()
link(onNextCase,14653964:doWork,[])
}
Add(Check,14653964,546,161)
{
Caption="onRead"
}
Add(COM,9474096,280,147)
{
link(onRead,15358791:doCase,[])
}
Add(Thread,9924392,175,175)
{
Delay=10
link(onExec,1518419:doData,[])
}
Add(DoData,1518419,224,175)
{
Data=Integer(1)
link(onEventData,9474096:doRead,[])
}
Add(Check,4129666,91,175)
{
Caption="StartRead"
link(onEvent,9924392:doStart,[])
}