Вверх ↑
Этот топик читают: Гость
Ответов: 125
Рейтинг: 0
#196: 2008-08-19 19:39:36 ЛС | профиль | цитата
Спасибо! Это я так - что первое в голову пришло набросал. Там проблем нет, а с портом непонятки...
------------ Дoбавленo:

Андрей. писал(а):
bestsponsor, вот http://www.hiasm.com/forum.html?q=3&t=7236 глянь - может пригодится..

Да, у этого элемента есть будущее . С него символы напрямую и нормально записываются в RichEdit - без всяких там массивов!
И похоже это мне поможет решить проблему с посимвольным вводом текста в редактор, вечером попробую. Спасибо Андрею!
карма: 1

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#197: 2008-08-20 10:34:18 ЛС | профиль | цитата
bestsponsor писал(а):
Да, у этого элемента есть будущее

Разобраться с потоком там надо, да и сделан он на стандартных методах, так что, это -- продвинутый штатный, но проблема у него есть в том, что он не сможет работать в сервисах, так как использует системный поток и overlaped (асинхронная системная обработка)
карма: 22

0
Ответов: 125
Рейтинг: 0
#198: 2008-08-20 23:23:20 ЛС | профиль | цитата
Да, первое впечатление обманчиво. Параметры порта не хочет принимать. Лучше остановлюсь на стандартном, я его кстати научился напрямую к своему (новому) декодеру цеплять. Так, что приемник у меня получился маленький. Символы в окно поступают по одному. Сегодня переделаю передатчик.
------------ Дoбавленo:

Хочу сделать импульсный набор номера. Как разделить строку с номером на отдельные цифры?
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#199: 2008-08-20 23:50:24 ЛС | профиль | цитата
bestsponsor, заработался ?

Add(Edit,8154529,161,14)
{
Left=10
Top=10
Width=115
}
Add(Memo,11446720,245,147)
{
Left=150
Top=10
Height=230
}
Add(CharArray,6710589,161,91)
{
link(onLoad,9048286:doEnum,[(205,97)(205,135)(149,135)(149,153)])
link(String,8154529:Text,[])
}
Add(Button,7956770,91,91)
{
Left=65
Top=55
link(onClick,6710589:doLoad,[])
}
Add(ArrayEnum,9048286,161,147)
{
link(onItem,11446720:doAdd,[])
link(Array,6710589:Array,[])
}

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:bestsponsor
Ответов: 125
Рейтинг: 0
#200: 2008-08-21 00:36:58 ЛС | профиль | цитата
Заработался- не то слово. Башка не варит.
Я немного не то имел ввиду. Посмотрите, так правильно будет или можно прощее?

Add(Copy,13791281,175,273)
{
Count=1
link(onCopy,1088592:doText,[(229,279)(229,286)])
link(Str,12280066:Text,[])
link(Position,8095082:Count,[(188,260)(125,260)])
}
Add(Edit,12280066,175,203)
{
Left=10
Top=20
Width=145
Text=""
DataType=2
}
Add(Edit,1088592,252,280)
{
Left=10
Top=50
Width=140
Text=""
DataType=2
}
Add(Timer,2204509,63,266)
{
Interval=800
Enable=1
link(onTimer,8095082:doNext,[(107,272)(107,223)])
}
Add(Counter,8095082,119,217)
{
link(onNext,13791281:doCopy,[(163,223)(163,279)])
}
Add(Button,47762,7,266)
{
Left=20
Top=100
link(onClick,2204509:doTimer,[])
}
#sha

------------ Дoбавленo:

Немного усовершенствовал: теперь он сам смотрит конец строки и останавливает перебор на последнем символе.
Add(Copy,13791281,245,273)
{
Count=1
link(onCopy,13012598:doCase,[])
link(Str,12280066:Text,[])
link(Position,8095082:Count,[(258,261)(209,261)])
}
Add(Edit,12280066,245,217)
{
Left=10
Top=20
Width=145
Text=""
}
Add(Edit,1088592,406,273)
{
Left=10
Top=50
Width=140
Text=""
DataType=2
}
Add(Timer,2204509,154,217)
{
Interval=800
Enable=1
link(onTimer,8095082:doNext,[(195,223)(188,223)])
}
Add(Counter,8095082,203,217)
{
Max=11
link(onNext,13791281:doCopy,[(246,223)(246,279)])
}
Add(Button,47762,98,217)
{
Left=20
Top=100
link(onClick,2204509:doTimer,[])
}
Add(Hub,15702134,329,280)
{
link(onEvent1,2204509:doStop,[(371,286)(371,318)(142,318)(142,230)])
link(onEvent2,8095082:doReset,[(377,293)(377,327)(191,327)(191,237)])
}
Add(Case,13012598,287,273)
{
Value=String()
DataOnTrue=Integer(1)
link(onNextCase,1088592:doText,[])
link(onTrue,15702134:doEvent1,[(331,286)(324,286)])
}

#sha

карма: 1

0
Ответов: 16884
Рейтинг: 1239
#201: 2008-08-21 00:49:39 ЛС | профиль | цитата
Так красивее
code_9764.txt
------------ Дoбавленo:

или так

Add(Edit,8154529,161,42)
{
Left=10
Top=10
Width=115
Text="08123456"
}
Add(CharArray,6710589,161,91)
{
link(onLoad,9048286:doEnum,[(205,97)(205,135)(149,135)(149,153)])
link(String,8154529:Text,[])
}
Add(Button,7956770,91,91)
{
Left=65
Top=55
link(onClick,6710589:doLoad,[])
}
Add(ArrayEnum,9048286,161,147)
{
link(onItem,8114346:doSleepMks,[])
link(Array,6710589:Array,[])
}
Add(For,15224034,364,147)
{
Start=1
InData=0
link(onEvent,11466460:doBeep,[])
}
Add(Beep,11466460,413,147)
{
Duration=100
}
Add(Memory,15118866,315,147)
{
Default=Integer(10)
link(onData,15224034:doFor,[])
}
Add(If_else,14911644,266,147)
{
Type=5
Op2=Integer(0)
link(onTrue,15118866:doValue,[])
link(onFalse,15118866:doClear,[])
}
Add(Sleep,8114346,217,147)
{
Delay=1000000
link(onSleep,14911644:doCompare,[])
}


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_9764.txt [881B] [293]
Ответов: 125
Рейтинг: 0
#202: 2008-08-21 00:50:32 ЛС | профиль | цитата
А вот с автоматическим регулированием межцифрового интервала в зависимости от цифры (от кол-ва импульсов цифры).
Add(Copy,13791281,245,273)
{
Count=1
link(onCopy,13012598:doCase,[])
link(Str,12280066:Text,[])
link(Position,8095082:Count,[(258,261)(209,261)])
}
Add(Edit,12280066,245,217)
{
Left=10
Top=20
Width=170
Height=28
Font=[MS Sans Serif,14,0,0,1]
Text=""
}
Add(Timer,2204509,154,217)
{
Interval=800
Enable=1
Point(doInterval)
link(onTimer,8095082:doNext,[(195,223)(188,223)])
}
Add(Counter,8095082,203,217)
{
Max=11
link(onNext,13791281:doCopy,[(246,223)(246,279)])
}
Add(Button,47762,98,217)
{
Left=210
Top=20
Width=145
Height=28
Font=[MS Sans Serif,12,0,0,1]
Caption="Набрать номер"
link(onClick,2204509:doTimer,[])
}
Add(Hub,15702134,329,280)
{
link(onEvent1,2204509:doStop,[(371,286)(371,318)(142,318)(142,230)])
link(onEvent2,8095082:doReset,[(377,293)(377,327)(191,327)(191,237)])
}
Add(Case,13012598,287,273)
{
Value=String()
DataOnTrue=Integer(1)
link(onNextCase,16143752:doEvent1,[])
link(onTrue,15702134:doEvent1,[(331,286)(324,286)])
}
Add(Hub,16143752,392,273)
{
link(onEvent1,5643561:doText,[(435,279)(435,237)])
link(onEvent2,929015:doOperation,[])
}
Add(Math,929015,434,280)
{
OpType=2
Op2=170
ResultType=0
link(onResult,2204509:doInterval,[(474,286)(474,336)(136,336)(136,237)])
}
Add(Edit,5643561,448,231)
{
Left=20
Top=50
Width=95
Text=""
}

#sha

карма: 1

0
Ответов: 16884
Рейтинг: 1239
#203: 2008-08-21 01:01:58 ЛС | профиль | цитата
Посмотри внимательней. Запусти и послушай.
code_9766.txt

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
файлы: 1code_9766.txt [959B] [312]
Голосовали:bestsponsor
Ответов: 125
Рейтинг: 0
#204: 2008-08-21 01:11:30 ЛС | профиль | цитата
Да, класно вышло! Спасибо! Плюс Вам. Для полного счастья добавить регулировку межцифрового интервала как в моей последней схеме. Только там на вход таймера задавал задержку, а тут не получится так.
карма: 1

0
Гость
Ответов: 17029
Рейтинг: 0
#205: 2008-08-21 09:27:09 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2021-05-22 09:08:46
карма: 0

0
Ответов: 125
Рейтинг: 0
#206: 2008-08-21 10:40:44 ЛС | профиль | цитата
Этот вопрос конечно не принципиальный.
Гость писал(а):
время между цифрами, второй - между посылками.

Время между цифрами 700 мс (время от окончания набора предыдущей цифры до начала набора следующей цифры) в моей схеме выставить можно. А в схеме Tadа выставляется время между первыми посылками цифр - период следования цифр.
карма: 1

0
Гость
Ответов: 17029
Рейтинг: 0
#207: 2008-08-21 11:08:47 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2021-05-22 09:08:46
карма: 0

0
Ответов: 3851
Рейтинг: 159
#208: 2008-08-21 13:35:57 ЛС | профиль | цитата
bestsponsor писал(а):
Время между цифрами 700 мс (время от окончания набора предыдущей цифры до начала набора следующей цифры)
куда столько? Главное - чтобы не меньше 100 (вроде)..
карма: 0
начавший
0
Ответов: 16884
Рейтинг: 1239
#209: 2008-08-21 14:23:42 ЛС | профиль | цитата
Андрей., если мне не изменяет память, то когда заводишь пружину номеронабирателя линия должна замкнуться не менее чем на ??? мкс, а 100 (1/10 сек), помоему, это время одиночного размыкания контактов. (0 - десять размыканий, остальные - соответствуют нужной цифре)
Нужно смотреть ТУ на номеронабиратель.
------------ Дoбавленo:

Вот все что нашел в инете
Продолжительность цикла размыкания-замыкания импульсных контактов (ИК) номеронабирателя — 90...110 мс (или 10±1 имп/с). Отношение продолжительности размыкания к продолжительности замыкания ИК лежит в пределах 1,4...1,7 и называется импульсным коэффициентом

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3851
Рейтинг: 159
#210: 2008-08-21 21:02:25 ЛС | профиль | цитата
ну да - цифра ~100мс (60+40 мс или 66+33 у буржуев), а всё, что более - считается межцифровой паузой (так и не вспомнил норму)..
карма: 0
начавший
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)