Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Постоянный ответ с СОМ порта
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
kosalex
Добрый день! Помогите с СОМ портом.

Ж/Д весы постоянно отправляют ответ в виде "$000020000010@". Разбиваю строку на две подстроки, это и есть вес1 и вес2.

Из-за того в порт пишется постоянно этот ответ, то при чтении порта через ПодключитьОбработчикОжидания 2сек, в переменную ДаннысСПорта бывает что попадает строка вида "$000020000010@$000020000010@" и т.к.

Код который опрашивает порт:
Если ComPort.InBufferCount = 14 Тогда
        ДанныеСПорта = ComPort.Input;
        ЭлементыФормы.НадписьОтветСВесов.Значение = Строка(ТекущаяДата()) + " " + ДанныеСПорта;
        ПарсингОтветаСОМПорта(ДанныеСПорта);
    Иначе
        ЭлементыФормы.НадписьОтветСВесов.Значение = "Ответа нет...";
    КонецЕсли;


Бывает что ComPort.InDufferCount = 0 либо еще какому то значению.
Наверное можно как то перевести работу СОМ порта в режим отправка значение-чтение, как?
TipsyKID
Цитата(kosalex @ 05.09.14, 9:37) необходимо зарегистрироваться для просмотра ссылки
Бывает что ComPort.InDufferCount = 0 либо еще какому то значению.

Если бывает, что ComPort.InDufferCount <> 14 и такие случаи следует обрабатывать, не проще ли убрать это условие и продумать парсинг строки опираясь на @ и $ который возвращает прибор ?
Или написать :
ИначеЕсли ComPort.InDufferCount > 14 тогда ...
kosalex
Цитата(TipsyKID @ 05.09.14, 10:13) необходимо зарегистрироваться для просмотра ссылки
Если бывает, что ComPort.InDufferCount <> 14 и такие случаи следует обрабатывать, не проще ли убрать это условие и продумать парсинг строки опираясь на @ и $ который возвращает прибор ?
Или написать :
ИначеЕсли ComPort.InDufferCount > 14 тогда ...



Не знаю на счет проще или нет...

Какой метод или свойства MSCOMM32 устанавливает работу порта в режим: получение данных с порта после отправки команды.
Сейчас режим: получение данных без отсылки команды.
andr_andrey
Цитата(kosalex @ 05.09.14, 11:26) необходимо зарегистрироваться для просмотра ссылки
Не знаю на счет проще или нет...

Какой метод или свойства MSCOMM32 устанавливает работу порта в режим: получение данных с порта после отправки команды.
Сейчас режим: получение данных без отсылки команды.

Что за чудесный режим такой?
Компорт всегда принимает данные на своем физическом интерфейсе, декодирует их, и помещает байты в буфер приемника. Из этого буфера вы можете считывать информацию какими угодно порциями.
Что конкретно у вас происходит, и для чего вы хотите чтото изменить?
kosalex
Доброе утро,запустил hyperterminal, в нем не отправляя ничего в порт сразу показывается ответ с порта "$000020000010@, $000020 = вес1, 000010@ = вес2.

И бывает такое что в этот буфер пишется сразу несколько ответов, т.е. ответ = "$000020000010@$000020000010@"...,"$000020000010@$000020000010@$000020000010@...."

Можно конечно написать условия для обработки получаемого ответа,но делал на других весах все было норм, т.е. послал "1", ответ $000020000010@ с буфера получил и хорошо)) А на этих все время ответ идет...
andr_andrey
Цитата(kosalex @ 08.09.14, 8:18) необходимо зарегистрироваться для просмотра ссылки
Доброе утро,запустил hyperterminal, в нем не отправляя ничего в порт сразу показывается ответ с порта "$000020000010@, $000020 = вес1, 000010@ = вес2.

И бывает такое что в этот буфер пишется сразу несколько ответов, т.е. ответ = "$000020000010@$000020000010@"...,"$000020000010@$000020000010@$000020000010@...."

Можно конечно написать условия для обработки получаемого ответа,но делал на других весах все было норм, т.е. послал "1", ответ $000020000010@ с буфера получил и хорошо)) А на этих все время ответ идет...

Вы не задумывались, кто именно должен ждать "1" и ничего не передавать до тех пор?
Поэтому берите инструкцию пользователя к весам и выставляйте там режим "по запросу".
Компорт тут ничем не виноват.
kosalex
Цитата(andr_andrey @ 08.09.14, 14:12) необходимо зарегистрироваться для просмотра ссылки
Вы не задумывались, кто именно должен ждать "1" и ничего не передавать до тех пор?
Поэтому берите инструкцию пользователя к весам и выставляйте там режим "по запросу".
Компорт тут ничем не виноват.

Ждут по идеи весы, пока им придет "1".
Была бы инструкция к этим весам.....
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.