Вверх ↑
Этот топик читают: Гость
Ответов: 3889
Рейтинг: 362
#46: 2011-11-26 22:55:49 ЛС | профиль | цитата
Леонид писал(а):
пропадают не новые данные, а выданные раньше.

То есть буфер циклический.
карма: 1

0
Ответов: 51
Рейтинг: 3
#47: 2011-11-26 23:28:23 ЛС | профиль | цитата
Tad писал(а):
Tomset91, у компонента есть ещё две точки, которые служат для управления : doDTR и doRTS.
А для любимых IRQ4 и IRQ3 примени IC (если система позволит)
doDTR и doRTS только для установки 1 и 0 - оно мне не нужно, это только всё усложняет... А про IC вы сами поняли что сказали? - это на стороне ПК имелось ввиду
карма: 0

0
Ответов: 1376
Рейтинг: 197
#48: 2011-11-26 23:30:41 ЛС | профиль | цитата
Tomset91, [flood]
Tomset91 писал(а):
А про IC вы сами поняли что сказали?
Ненадо злить зверя[/flood]
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#49: 2011-11-26 23:36:03 ЛС | профиль | цитата
Tomset91 писал(а):
А про IC вы сами поняли что сказали?
понял конечно. Открываешь IC и пишешь свою программу управления COM портом. На Asme можно и к прерываниям и к COM-овской микросхеме напрямую обратиться (если Винда пустит). В XP это делалось отключением COM порта из зоны видимости XP. Даст ли это проделать семёрка - незнаю.
------------ Дoбавленo в 23.36:
foksov, это я зверь !
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1376
Рейтинг: 197
#50: 2011-11-26 23:42:23 ЛС | профиль | цитата
Tad, [flood]это я про то, что ты можешь простого Участника закидать IC, не взирая на его личность "Шоб Участник захлебнулся схемами"[/flood]
карма: 1

0
Ответов: 51
Рейтинг: 3
#51: 2011-11-27 00:22:41 ЛС | профиль | цитата
1nd1g0, вы опять про буфер, да и близко не видно его там, я уже отписывал что данные (1byte) у меня теряются даже при постоянной отправки в порт при кликанье кнопки sent. Вам видео сделать где данные в одном терминале идут неприрывно (по одному байту интервал 0,5с) а в данной программе из справки только при нажатии кнопки sent, один байт появляется и то не всегда, если бы там что-то запоминалось то при нажатии выпадало куча байт...
Леонид писал(а):
Утановите на doRead таймер и Вы получите данные из порта в непрерывном режиме без всякого "прерывания" (связь между временными установками выше).
Каким образом и где его ставить?
------------ Дoбавленo в 00.22:
Tad писал(а):
Открываешь IC и пишешь свою программу управления COM портом. На Asme можно и к прерываниям и к COM-овской микросхеме напрямую обратиться
Если бы я такое мог то и HIASM мне не нужен был...
карма: 0

0
Ответов: 1376
Рейтинг: 197
#52: 2011-11-27 00:45:23 ЛС | профиль | цитата
[flood]
Tomset91 писал(а):
Если бы я такое мог то и HIASM мне не нужен был..
не надо торопиться, в очередной раз заявляю, Настоящий мужчина всегда и везде успевает не торопясь, то-бишь, всё решится через неделю, наверное [/flood]
карма: 1

0
Разработчик
Ответов: 26164
Рейтинг: 2127
#53: 2011-11-27 00:58:38 ЛС | профиль | цитата
Tomset91 писал(а):
Вам видео сделать где данные в одном терминале идут неприрывно (по одному байту интервал 0,5с)

Я вот только одного не пойму, а кто мешает попытаться считывать этот байт быстрее, чем 0,5 сек. При чтении пустого буфера на выходе onRead всегда будет пустая строка, которую вполне можно использовать как синхронизатор
карма: 22

0
Ответов: 51
Рейтинг: 3
#54: 2011-11-27 10:05:48 ЛС | профиль | цитата
nesco писал(а):
Я вот только одного не пойму, а кто мешает попытаться считывать этот байт быстрее, чем 0,5 сек. При чтении пустого буфера на выходе onRead всегда будет пустая строка, которую вполне можно использовать как синхронизатор
Как я могу считывать его быстрее если он у меня с контроллера поступает каждые пол секунды, это специально сделано для визульного просмотра приходяших байт в другом терминале, ну сделаю я быстрее суть дело это не поменяет только в этом случае будет труднее определись какие байты пришли какие нет. Конечно сам байт передаётся на скорости интерфейса у меня в данном случае это 19200, а вот перерывы могут и не быть могут быть 1 час / 2 часа / сутки.... тоесть только когда устройство захочет обмен с ПК. Также вы говорите про буфер, но если почитать мои посты выше из них следует что информация вообще не запоминается ни в каких буферах, об этом говорят опыты которые проделал.
При чтении пустого буфера на выходе onRead всегда будет пустая строка, которую вполне можно использовать как синхронизатор
Сихронизатор чего? - передачи? передача в порт у меня и так работает при нажатии кнопки sent (программа из справки компонента) дело в приёме данных... компонен не имеет внутренного прерывания IRQ4 IRQ3 поэтому не может отследить приём данных... пытаюсь сделать на таймере.. тоесть опрос порта каждое переполнение таймера к примеру через каждые 30мс, но почему и так не работает совсем... немогу понять почему.. привидите мне пример с опросом порта по таймеру..
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#55: 2011-11-27 10:32:15 ЛС | профиль | цитата
Tomset91 писал(а):
с опросом порта по таймеру
не таймер там нужен, а нужно функции приема данных вынести в отдельный поток и организовать бесконечный цикл.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 51
Рейтинг: 3
#56: 2011-11-27 10:41:12 ЛС | профиль | цитата
Tad писал(а):
Tomset91 писал(а):
с опросом порта по таймеру
не таймер там нужен, а нужно функции приема данных вынести в отдельный поток и организовать бесконечный цикл.
Соответственно как это сделать? пример? вот есть такая нерабочая на приём ппрограмма, вот и отредактируйте мне её так как нужно..

Add(MainForm,68149,658,238)
{
Left=21
Top=105
Width=352
Height=219
Font=[Arial,8,0,0,1]
Caption="MS-Test"
Position=1
Point(onClose)
link(onCreate,3447988:doWork1,[(753,258)])
link(onClose,10158978:In,[])
}
Add(FormatStr,12648551,448,364)
{
DataCount=1
Mask="%1
"
link(onFString,3447988:doWork2,[])
link(Str1,93647:Text,[])
}
Add(Button,68561,392,364)
{
Left=10
Top=120
Font=[Arial,8,0,0,1]
Caption="Send"
link(onClick,12648551:doString,[])
}
Add(Edit,93647,448,308)
{
Left=75
Top=120
Width=75
Height=21
Text="atz0"
}
Add(Label,39106,1106,364)
{
Left=120
Top=145
Width=30
Transparent=0
Caption="0"
}
Add(Hub,96560,791,364)
{
OutCount=5
link(onEvent1,4901:doOpen,[])
link(onEvent2,37557:doAdd,[(888,377)(888,202)])
link(onEvent3,15722860:doTimer,[(815,384)(815,468)])
link(onEvent4,4901:doWrite,[])
}
Add(COM,4901,994,364)
{
BaudRate=0
link(onWrite,39106:doText,[])
link(onRead,4382088:doAdd,[(1062,377)(1062,202)])
link(BaudRate,16338985:EditText,[])
}
Add(Label,42085,560,182)
{
Left=150
Top=145
Caption="bytes"
}
Add(Label,78288,567,189)
{
Left=165
Top=5
Width=53
Height=17
Caption="A? A‘A?A? A‚AµA?A?A?a€sA? A‚AµA? A’a€?A? A‚A°A?A?A?a‚¬A?A? A‚A°"
}
Add(Label,25757,574,196)
{
Left=75
Top=5
Caption="Speed"
}
Add(Memo,37557,910,196)
{
Left=155
Top=20
Width=75
Height=95
ScrollBars=2
}
Add(Label,11132,581,203)
{
Left=75
Top=145
Transparent=0
Caption="Sended:"
}
Add(ComboBox,16338985,987,196)
{
Left=75
Top=20
Width=75
Height=21
Strings=#4:9600|5:14400|5:19200|6:115200|
Text=""
ReadOnly=0
Point(EditText)
}
Add(Memo,4382088,1071,196)
{
Left=240
Top=20
Width=80
Height=95
ScrollBars=2
}
Add(Label,3324191,588,210)
{
Left=255
Top=5
Width=38
Height=17
Caption="A? A‘A?A?A?A?a€sA? A‘a€?A?A?A?a‚¬E?A? A‘E?"
}
Add(LineBreak,341898,917,371)
{
link(Out,4901:doClose,[])
Primary=[10158978,-112,-112]
}
Add(HubEx,3447988,749,364)
{
link(onEvent,96560:doEvent1,[])
}
Add(hcTimer,15722860,889,462)
{
Interval=100
link(onTimer,4901:doRead,[(962,468)(962,398)])
}


карма: 0

0
Ответов: 16884
Рейтинг: 1239
#57: 2011-11-27 10:46:33 ЛС | профиль | цитата
Использовать вместо таймера
Add(Thread,8595889,224,287)
{
}
с примером - только вечером (в Израиле воскресенье рабочий день )
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 51
Рейтинг: 3
#58: 2011-11-27 11:03:14 ЛС | профиль | цитата
Tad писал(а):
с примером - только вечером
Ок буду ждать...
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#59: 2011-11-27 11:17:23 ЛС | профиль | цитата
Вот, как-то так.
чисто теоретически.
Попытаюсь сделать заглушку к COM. Дома не нашел ответного разъёма.
------------ Дoбавленo в 11.17:
Наверное всё-же нужно так
Add(Thread,8595889,518,301)
{
Delay=10
link(onExec,4901:doRead,[])
}
Add(MainForm,68149,287,147)
{
Left=21
Top=105
Width=352
Height=219
Font=[Arial,8,0,0,1]
Caption="MS-Test"
Position=1
Point(onClose)
link(onCreate,3447988:doWork1,[(382,167)])
link(onClose,3635472:doEvent1,[])
}
Add(FormatStr,12648551,287,273)
{
DataCount=1
Mask="%1
"
link(onFString,3447988:doWork2,[])
link(Str1,93647:Text,[])
}
Add(Button,68561,231,273)
{
Left=10
Top=120
Font=[Arial,8,0,0,1]
Caption="Send"
link(onClick,12648551:doString,[])
}
Add(Edit,93647,287,217)
{
Left=75
Top=120
Width=75
Height=21
Text="atz0"
}
Add(Label,39106,735,273)
{
Left=120
Top=145
Width=30
Transparent=0
Caption="0"
}
Add(Hub,96560,420,273)
{
OutCount=5
link(onEvent1,4901:doOpen,[])
link(onEvent2,37557:doAdd,[(517,286)(517,111)])
link(onEvent3,8595889:doStart,[(476,293)(476,307)])
link(onEvent4,4901:doWrite,[])
}
Add(COM,4901,623,273)
{
BaudRate=0
link(onWrite,39106:doText,[])
link(onRead,13705172:doValue,[(671,286)(671,342)])
link(BaudRate,16338985:EditText,[])
}
Add(Label,42085,189,91)
{
Left=150
Top=145
Caption="bytes"
}
Add(Label,78288,196,98)
{
Left=165
Top=5
Width=53
Height=17
Caption="A? A‘A?A? A‚AµA?A?A?a€sA? A‚AµA? A’a€?A? A‚A°A?A?A?a‚¬A?A? A‚A°"
}
Add(Label,25757,203,105)
{
Left=75
Top=5
Caption="Speed"
}
Add(Memo,37557,539,105)
{
Left=155
Top=20
Width=75
Height=95
ScrollBars=2
}
Add(Label,11132,210,112)
{
Left=75
Top=145
Transparent=0
Caption="Sended:"
}
Add(ComboBox,16338985,616,105)
{
Left=75
Top=20
Width=75
Height=21
Strings=#4:9600|5:14400|5:19200|6:115200|
Text=""
ReadOnly=0
Point(EditText)
}
Add(Memo,4382088,868,336)
{
Left=240
Top=20
Width=80
Height=95
ScrollBars=2
link(Str,13705172:Value,[(874,324)(913,324)(913,401)(685,401)])
}
Add(Label,3324191,217,119)
{
Left=255
Top=5
Width=38
Height=17
Caption="A? A‘A?A?A?A?a€sA? A‘a€?A?A?A?a‚¬E?A? A‘E?"
}
Add(LineBreak,5530901,546,280)
{
link(Out,4901:doClose,[])
Primary=[10158978,-112,-112]
}
Add(HubEx,3447988,378,273)
{
link(onEvent,96560:doEvent1,[])
}
Add(Hub,3635472,336,168)
{
link(onEvent1,10158978:In,[])
link(onEvent2,8595889:doStop,[(368,181)(368,314)])
}
Add(Position,16090124,728,336)
{
Target=""
link(onSearch,16469595:doCompare,[])
}
Add(If_else,16469595,777,336)
{
Type=5
Op2=Integer(0)
link(onTrue,2959504:doEvent1,[])
}
Add(Hub,2959504,819,336)
{
link(onEvent1,4382088:doAdd,[])
link(onEvent2,4901:doRXClear,[(847,349)(847,388)(611,388)(611,293)])
}
Add(Memory,13705172,679,336)
{
link(onData,16090124:doSearch,[])
}


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 51
Рейтинг: 3
#60: 2011-11-27 11:36:26 ЛС | профиль | цитата
Tad, приёма нет совсем, упростил до вида code_25983.txt Всё равно ничего нет... если долго кликать по кнопке send то выпадает ошибка 216 и программа сворачивается.. Невижу смысла в точке doRXClear - так как буферы и не запоминают ничего.. если я ошибаюсь то докажите что это не так? пока что мои опыты говорят что буферов там и нет вообще..



карма: 0

0
файлы: 1code_25983.txt [2.2KB] [140]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)