Вверх ↑
Этот топик читают: Гость
Ответов: 784
Рейтинг: 168
#16: 2024-08-05 07:46:51 ЛС | профиль | цитата
andrewproffi писал(а):
Но вечная проблема с дроблением отправленной из устройства строки ком портом.

Попробуй такой вариант получения данных из ком порта. Только укажи свой порт.


Add(MainForm,4875368,203,133)
{
Point(onClose)
link(onCreate,4794102:doString,[])
link(onClose,10162556:doConsoleTerminate,[])
}
Add(FormatStr,4794102,259,147)
{
Mask="$port= new-Object System.IO.Ports.SerialPort %1,%2,None,8,one\r\n$port.Open()\r\n do {\r\n $port.ReadLine()\r\n }\r\n while ($port.IsOpen)"
link(onFString,10162556:doConsoleExec,[])
link(Str1,6648896:Text,[])
link(Str2,8234187:Text,[(272,103)(328,103)])
}
Add(WinExec,10162556,322,133)
{
FileName="powershell"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
Point(doConsoleTerminate)
link(onConsoleResult,2938005:doWork2,[])
link(onConsoleError,2938005:doWork3,[(368,160)])
}
Add(Memo,13060698,441,147)
{
Left=550
Top=160
Align=5
Font=[Consolas,12,0,0,204]
ScrollBars=3
}
Add(HubEx,2938005,364,147)
{
link(onEvent,4815849:doCharset,[])
}
Add(Charset,4815849,385,147)
{
link(onCharset,13060698:doAdd,[])
}
Add(VisualStrings,6648896,259,77)
{
Lines=#4:COM3|
Width=46
}
Add(VisualStrings,8234187,322,77)
{
Lines=#4:9600|
Width=53
Font=[MS Sans Serif,12,0,0,1]
}

карма: 15

0
Ответов: 495
Рейтинг: 163
#17: 2024-08-05 19:18:03 ЛС | профиль | цитата
nesco, здравствуйте, огромная просьба, пожалуйста выложите пример с
nesco писал(а):
используйте обычный COM, запущенный в другом потоке,

карма: 4

0
Ответов: 98
Рейтинг: 1
#18: 2024-08-06 11:29:12 ЛС | профиль | цитата
nesco, в свое время, я активно пользовался этим компонентом (лет 8-9 назад) с подключением отладочных микроконтроллерных плат к ПК. На моей памяти: подозревал, что это связано с временными задержками и отработкой драйвера. Причем скорость обмена влияла на длину посылок. Обмен был чисто бинарный с четным/нечетным битом и т.д. Все равно резало посылки. Был еще один компонет, более продвинутый на форуме. Он так же работал.
Надеюсь, не соврал.
карма: 0

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#19: 2024-08-06 19:56:01 ЛС | профиль | цитата
strannik_nebes писал(а):
Все равно резало посылки

Есть код, который не режет посылки, но он существует только в специализированном IC. И я уже думал, как его приколхозить к данному компоненту, тк сам столкнулся с этой проблемой.

--- Добавлено в 2024-08-06 19:56:52

tig-rrr писал(а):
пожалуйста выложите пример

Я поищу, где-то был рабочий вариант

Редактировалось 1 раз(а), последний 2024-08-06 19:56:52
карма: 22

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#20: 2024-08-07 03:44:28 ЛС | профиль | цитата
Вот приблизительная схема чтения порта в отдельном потоке. Она вполне рабочая

Схема


Add(MainForm,2953706,126,518)
{
Width=607
Height=249
Position=1
link(onCreate,14624210:doEvent1,[])
}
Add(Memo,958686,574,602)
{
Left=10
Top=5
Width=575
Height=195
Font=[Courier New,8,0,0,204]
ScrollBars=2
}
Add(COM,15370309,406,532)
{
Port=1
TimeOut=20
link(onRead,5476695:doValue,[])
}
Add(DoData,7437012,350,567)
{
Data=Integer(128)
link(onEventData,15370309:doRead,[(396,573)(396,566)])
}
Add(Hub,14624210,189,532)
{
link(onEvent1,15370309:doOpen,[])
link(onEvent2,5306936:doStart,[(242,545)(242,566)])
}
Add(Thread,5306936,252,560)
{
Delay=50
link(onExec,1218934:doEvent1,[])
link(onSyncExec,2770533:doData,[(298,573)(298,608)])
}
Add(Memory,5476695,462,539)
{
}
Add(DoData,2770533,462,602)
{
link(onEventData,15273451:doCase,[])
link(Data,5476695:Value,[])
}
Add(Case,15273451,518,602)
{
Value=String()
link(onNextCase,958686:doAdd,[])
}
Add(Hub,1218934,308,560)
{
link(onEvent1,15370309:doRXClear,[(333,566)(333,552)])
link(onEvent2,7437012:doData,[])
}

карма: 22

0
Ответов: 8921
Рейтинг: 823
#21: 2024-08-07 11:59:42 ЛС | профиль | цитата
Ура-а!! nesco вернулся!!!
карма: 19

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#22: 2024-08-07 23:09:44 ЛС | профиль | цитата
Всем Привет!
Леонид писал(а):
Ура-а!! nesco вернулся!!!

А я никуда и не уходил
карма: 22

0
Ответов: 8921
Рейтинг: 823
#23: 2024-08-09 10:52:32 ЛС | профиль | цитата
"Тройняшки мы, я просто пописать отходил!"
карма: 19

0
Ответов: 39
Рейтинг: 0
#24: 2024-08-15 18:53:43 ЛС | профиль | цитата
Gunta писал(а):

Попробуй такой вариант получения данных из ком порта. Только укажи свой порт.


не работает, не выводится никакой информации

nesco писал(а):
Вот приблизительная схема чтения порта в отдельном потоке. Она вполне рабочая

Схема


Такой вариант работает, но он завязан на заданном временном интервале в идеале хотелось бы получить компонент как программа Terminal v1.9b, она весит 330кб, не думаю что там очень сложно.
ps или дело в том что я не знаю тонкостей работы ком порта. Чем опасно установка малого значения интервала опроса ком порта и задание большого числа ожидаемых данных? Будет сильней нагружаться система?

Редактировалось 1 раз(а), последний 2024-08-15 19:02:45
карма: 0

0
Ответов: 8921
Рейтинг: 823
#25: 2024-08-15 19:23:31 ЛС | профиль | цитата
[scroll=andrewproffi писал(а)
...пакет из 10 команд: 20 байт +пауза 5мс + 20 байт +пауза...
Итого 200 байт и 50 мс в одной посылке (пакете)?
Каждую команду отображать на своей строке или все 10 команд (пакет) на одной строке?
Между пакетами есть разделитель или тоже пауза?
Установленная скорость СОМ-порта?
Наверное вы не можете установить разделители между командами и (или) пакетами?
карма: 19

0
Ответов: 39
Рейтинг: 0
#26: 2024-08-16 05:38:00 ЛС | профиль | цитата
Нет, сейчас решения мне подсказали, и в принципе все работает. Я просто говорю, что хотелось бы, чтобы компонент уверенно принимал все данные и не было необходимости подстраивать либо программу под него (ставить паузы между короткими пакетами), либо его настраивать задавая интервал опроса и прочее.
Леонид писал(а):
[scroll=andrewproffi писал(а)
Итого 200 байт и 50 мс в одной посылке (пакете)?
Каждую команду отображать на своей строке или все 10 команд (пакет) на одной строке?
Между пакетами есть разделитель или тоже пауза?
Установленная скорость СОМ-порта?
Наверное вы не можете установить разделители между командами и (или) пакетами?

пусть в идеале будет 200 байт один пакет без пауз
пауза между пакетами
пусть будет 2 варианта - 9600 и 57600
могу, но зачем?

то есть сейчас мне подсказали вариант выше где формируется целая строка из обрезков, выделенаая символами в начале и конце. Пока буду использовать этот вариант.
карма: 0

0
Ответов: 8921
Рейтинг: 823
#27: 2024-08-16 10:14:17 ЛС | профиль | цитата
andrewproffi писал(а):
строка из обрезков, выделенная символами в начале и конце
Так с этого надо было начинать свой вопрос "Есть символы начала/окончания посылки" и обсуждение закончилось бы на первом ответе
карма: 19

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