Версия для печати темы (https://pro1c.org.ua/index.php?s=2d0a645110f867422d153deeacc861dd&showtopic=19672)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Постоянный ответ с СОМ порта
Автор: kosalex 05.09.14, 8:37
Добрый день! Помогите с СОМ портом.
Ж/Д весы постоянно отправляют ответ в виде "$000020000010@". Разбиваю строку на две подстроки, это и есть вес1 и вес2.
Из-за того в порт пишется постоянно этот ответ, то при чтении порта через ПодключитьОбработчикОжидания 2сек, в переменную ДаннысСПорта бывает что попадает строка вида "$000020000010@$000020000010@" и т.к.
Код который опрашивает порт:
Если ComPort.InBufferCount = 14 Тогда
ДанныеСПорта = ComPort.Input;
ЭлементыФормы.НадписьОтветСВесов.Значение = Строка(ТекущаяДата()) + " " + ДанныеСПорта;
ПарсингОтветаСОМПорта(ДанныеСПорта);
Иначе
ЭлементыФормы.НадписьОтветСВесов.Значение = "Ответа нет...";
КонецЕсли;
Бывает что ComPort.InDufferCount = 0 либо еще какому то значению.
Наверное можно как то перевести работу СОМ порта в режим отправка значение-чтение, как?
Автор: TipsyKID 05.09.14, 9:13
Цитата(kosalex @ 05.09.14, 9:37)
Бывает что ComPort.InDufferCount = 0 либо еще какому то значению.
Если бывает, что ComPort.InDufferCount <> 14 и такие случаи следует обрабатывать, не проще ли убрать это условие и продумать парсинг строки опираясь на @ и $ который возвращает прибор ?
Или написать :
ИначеЕсли ComPort.InDufferCount > 14 тогда ...
Автор: kosalex 05.09.14, 10:26
Цитата(TipsyKID @ 05.09.14, 10:13)
Если бывает, что ComPort.InDufferCount <> 14 и такие случаи следует обрабатывать, не проще ли убрать это условие и продумать парсинг строки опираясь на @ и $ который возвращает прибор ?
Или написать :
ИначеЕсли ComPort.InDufferCount > 14 тогда ...
Не знаю на счет проще или нет...
Какой метод или свойства MSCOMM32 устанавливает работу порта в режим: получение данных с порта после отправки команды.
Сейчас режим: получение данных без отсылки команды.
Автор: andr_andrey 05.09.14, 16:12
Цитата(kosalex @ 05.09.14, 11:26)
Не знаю на счет проще или нет...
Какой метод или свойства MSCOMM32 устанавливает работу порта в режим: получение данных с порта после отправки команды.
Сейчас режим: получение данных без отсылки команды.
Что за чудесный режим такой?
Компорт всегда принимает данные на своем физическом интерфейсе, декодирует их, и помещает байты в буфер приемника. Из этого буфера вы можете считывать информацию какими угодно порциями.
Что конкретно у вас происходит, и для чего вы хотите чтото изменить?
Автор: kosalex 08.09.14, 7:18
Доброе утро,запустил hyperterminal, в нем не отправляя ничего в порт сразу показывается ответ с порта "$000020000010@, $000020 = вес1, 000010@ = вес2.
И бывает такое что в этот буфер пишется сразу несколько ответов, т.е. ответ = "$000020000010@$000020000010@"...,"$000020000010@$000020000010@$000020000010@...."
Можно конечно написать условия для обработки получаемого ответа,но делал на других весах все было норм, т.е. послал "1", ответ $000020000010@ с буфера получил и хорошо)) А на этих все время ответ идет...
Автор: andr_andrey 08.09.14, 13:12
Цитата(kosalex @ 08.09.14, 8:18)
Доброе утро,запустил hyperterminal, в нем не отправляя ничего в порт сразу показывается ответ с порта "$000020000010@, $000020 = вес1, 000010@ = вес2.
И бывает такое что в этот буфер пишется сразу несколько ответов, т.е. ответ = "$000020000010@$000020000010@"...,"$000020000010@$000020000010@$000020000010@...."
Можно конечно написать условия для обработки получаемого ответа,но делал на других весах все было норм, т.е. послал "1", ответ $000020000010@ с буфера получил и хорошо)) А на этих все время ответ идет...
Вы не задумывались, кто именно должен ждать "1" и ничего не передавать до тех пор?
Поэтому берите инструкцию пользователя к весам и выставляйте там режим "по запросу".
Компорт тут ничем не виноват.
Автор: kosalex 08.09.14, 13:33
Цитата(andr_andrey @ 08.09.14, 14:12)
Вы не задумывались, кто именно должен ждать "1" и ничего не передавать до тех пор?
Поэтому берите инструкцию пользователя к весам и выставляйте там режим "по запросу".
Компорт тут ничем не виноват.
Ждут по идеи весы, пока им придет "1".
Была бы инструкция к этим весам.....
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua