Вверх ↑
Этот топик читают: Гость
Ответов: 67
Рейтинг: 0
#1: 2014-11-14 18:44:37 ЛС | профиль | цитата
Доброго времени суток.Беда в том что когда,посылаю строку через порт, она записывается не в одну строку, а делиться на две или три, что не приемлемо.
Я попытался как-то это дело исправить, вроде как бы заработало, но всё равно то и дело делит строку,а потом программа не может анализировать.Может в корне у меня не правильно,подскажите.
code_34627.txt
карма: 1

0
файлы: 1code_34627.txt [3.7KB] [238]
Ответов: 203
Рейтинг: 2
#2: 2014-11-14 19:55:24 ЛС | профиль | цитата
а откуда компонент Асинхронного COM порта ?
карма: 0

0
Ответов: 67
Рейтинг: 0
#3: 2014-11-15 06:15:55 ЛС | профиль | цитата
Так,я его брал в обновлениях.Правда давно это было.Дело в том что компонент "Асинхронный COM порт (COMEX)" так же работает.
карма: 1

0
Ответов: 8959
Рейтинг: 824
#4: 2014-11-15 10:31:28 ЛС | профиль | цитата
TICLIR писал(а):
..когда,посылаю строку через порт..
Так "посылаю" или "принимаю"? Порт лишён парсера, который понимал бы, что строка окончилась, это задача программиста.
карма: 19

0
Ответов: 67
Рейтинг: 0
#5: 2014-11-15 14:35:54 ЛС | профиль | цитата
Если взять всю цепочку, то с помощью AVR контроллера отправляю строку заканчивающимся символом "конец строки",и эта строка в "ListBox"
записывается как попало.Я и спрашиваю специалистов как мне реализовать так чтобы программа учитывала символы типа конец строки.


карма: 1

0
Ответов: 8959
Рейтинг: 824
#6: 2014-11-15 15:46:26 ЛС | профиль | цитата
TICLIR, склеивать строки, поступающие от порта в буфере, контролировать наличие разделителя строк в склеенной строке, при наличии реазделителя разбивать строку на две части "до" и "после", строку "до" выдавать далее, строку "после" оставлять в буфере. Что трудного
code_34628.txt
карма: 19

0
файлы: 1code_34628.txt [1.7KB] [265]
Ответов: 16884
Рейтинг: 1239
#7: 2014-11-15 17:08:00 ЛС | профиль | цитата
Я думал, что COMEX и правда COM, а он просто переводчик с русского на хз какой
Леонид_7.png

А вот так со стандартным:
Леонид_8.png
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 2Леонид_7.png [53.3KB] [687], Леонид_8.png [59.1KB] [658]
Разработчик
Ответов: 26305
Рейтинг: 2146
#8: 2014-11-15 17:32:21 ЛС | профиль | цитата
Tad писал(а):
а он просто переводчик с русского на хз какой

А с английским как COMEX использует потоки и с ним не всегда прокатывает работа как с обычным COM
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#9: 2014-11-15 17:33:11 ЛС | профиль | цитата
Английский вроде не курочит.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26305
Рейтинг: 2146
#10: 2014-11-15 17:34:44 ЛС | профиль | цитата
Tad писал(а):
Английский вроде не курочит

А это вообще странно
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#11: 2014-11-15 17:56:15 ЛС | профиль | цитата
Проверил - английский проходит нормально.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 67
Рейтинг: 0
#12: 2014-11-15 18:13:27 ЛС | профиль | цитата
Леонид писал(а):
Что трудного

Спасибо за пример,плохо ориентируемся в элементах.
Меня как бы более удовлетворяла что программа набирала символы в строку до определённого символа .
Я с вашим примером по экспериментировал вот что у меня получилось, вот только не нашел каким образом
при прохождении определённого символа поле ввода Edit сбрасывалось.
Add(MainForm,2953706,112,154)
{
Width=390
Height=388
}
Add(ListBox,1841137,581,168)
{
Left=55
Top=10
Width=275
Height=255
}
Add(StrMask,1685853,378,161)
{
Mask="*p*"
link(onTrue,6301136:doReplace,[])
link(Str,5359081:Text,[(384,149)(356,149)(356,205)(328,205)])
}
Add(Replace,6301136,434,168)
{
SubStr="p"
link(onReplace,13805531:doEvent1,[(492,174)(492,202)])
}
Add(Edit,5359081,322,161)
{
Left=5
Top=265
Width=345
Text=""
link(onChange,1685853:doCompare,[])
}
Add(Memory,8817351,322,70)
{
link(onData,6799187:doEvent1,[(366,76)(366,86)(219,86)(219,97)])
}
Add(Hub,13805531,518,196)
{
link(onEvent1,8817351:doClear,[(544,202)(544,142)(310,142)(310,83)])
link(onEvent2,1841137:doAdd,[(556,209)(556,174)])
}
Add(Hub,11452267,259,161)
{
InCount=2
link(onEvent1,5359081:doText,[])
}
Add(Hub,6799187,231,91)
{
link(onEvent1,11452267:doEvent2,[(252,97)(252,174)])
link(onEvent2,16367675:doText,[(257,104)(257,132)(177,132)(177,314)])
}
Add(Edit,16367675,224,308)
{
Left=185
Top=150
link(onChange,11452267:doEvent1,[(258,314)(258,167)])
}
Add(InfoTip,2595230,189,273)
{
Info=#17:Это типа COM порт|0:|0:|0:|0:|0:|0:|0:|
Font=[MS Sans Serif,14,1,255,1]
HAlign=0
Width=190
Height=88
}


карма: 1

0
файлы: 1code_34631.txt [569B] [201]
Ответов: 8959
Рейтинг: 824
#13: 2014-11-15 18:28:11 ЛС | профиль | цитата
TICLIR,
1. Привыкайте сразу к аккуратности, не разбрасывайте элементы на поле как придётся, старайтесь располагать их для меньшего количества пересечений линий.....
2. Читайте примечания к точкам внимательно и вдумчиво, например в Edit: "doText2=Уcтaнaвливaeт текст в поле ввода, но не генерирует событие onChange"
code_34632.txt
карма: 19

0
файлы: 1code_34632.txt [801B] [261]
Ответов: 67
Рейтинг: 0
#14: 2014-11-15 18:42:55 ЛС | профиль | цитата
Спасибо, вопрос в качестве информации разрешите.?
Элемент StrMask запоминает приходящие к нему символы до прихода определённого символа, и выдаёт в поток получившуюся
строку и очищает память,я правильно думаю.
карма: 1

0
Ответов: 8959
Рейтинг: 824
#15: 2014-11-15 19:24:39 ЛС | профиль | цитата
TICLIR, StrMask ничего не запоминает, он получает строку, сравнивает её с заданой строкой (строкой, а не символом) и при совпадении выдаёт строку (полностью) на точку "Правда", при не совпадении на точку "Ложь".
(Справку никто не прячет )
карма: 19

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)