Page 1 of 1

Обработчик данных с Serial

PostPosted: 02 May 2018, 18:51
by Anton.M
Всем Доброго Времени Суток!
Не могу придумать обработчик данных, приходящих через Serial от приемника (радиомодема). Посылки приходят типа XX80000000-000 с переносом строки на конце. Когда они приходят раз в секунду, подпрограмма их обрабатывает, убирает "/n" и посылает уведомление (14 символов) в основную программу - все работает и обрабатывается. Но как приходит несколько посылок сразу, т.е.:
QR100ef4aa-012
FN107bcca3-052
BC000003ca-021

Обработчик просто начинает или посылать в открытую (Ошибка по Scan From String) или сразу отсылает уведомление в 28-42 символа, и естественно вылетает в ошибку.
Попробовал разбить эту посылку посимвольно (16-16 или 16-16-16), но почему-то Labview выдает к Scan From String текст типа "003e1-012", т.е. последние 8 символов посылки.
ZIaNgnc1VRQ[1].jpg

Причину ошибки я в принципе вижу, я использую параметр "bytes at port", он наполняется (16-18-20-22) и тут же выскакивает ошибка... Как бороться с этим? Может использовать другой параметр?

Может кто сталкивался с таким, я уж не знаю куда копать - с утра на этом засел.
Заранее спасибо!

Re: Обработчик данных с Serial

PostPosted: 02 May 2018, 20:11
by IvanLis
Anton.M wrote:Посылки приходят типа XX80000000-000 с переносом строки на конце.

Правильно сконфигурируйте VISA.
У Вас явно задан терминальный символ = с переносом строки на конце.
Тогда пакеты будут делиться не по таймингу, а по терминатору. Который кстати можно отбросить, и не нужно будет ничего "отбрасывать".
Непонятно только одно, Вы пишите, что принимаете 16 символов, отбрасываете "/n" и получаете 14, но ведь "/n"=1 символ.

Почитайте например: viewtopic.php?f=22&t=6348