Доброе утро! Подключаю Ж/Д весовую. Все хорошо,но есть одно НО! =(
Процедура ПриОткрытии()
ДатаИВремя = ТекущаяДата();
ПодключитьОбработчикОжидания("ПоказатьВремяИДату",1);
Отказ = Ложь;
ТекущийВес = 0;
ИнициализацияСОМПорта(Отказ); //Инициализация СОМ-порта.
Если Не Отказ Тогда
ТекущийВес = ЧтениеСОМПорта("1",Неопределено); //Отправка в СОМ порт еденицы.
КонецЕсли;
Если ТипЗнч(ТекущийВес) = Тип("Число") Тогда
ВесБрутто = ПарсингОтветаСОМПорта(ТекущийВес);
ПодключитьОбработчикОжидания("ОпросСОМПорта",1);
//ПодключитьОбработчикОжидания("ПолучитьДанныеСПорта",1);
КонецЕсли;
УстановитьОтборВТабличнойЧасти(ТекущаяДата());
КонецПроцедуры
Процедура ИнициализацияСОМПорта(Отказ)
ComPort = Новый COMОбъект("MsCommLib.MsComm");
Попытка
ComPort.CommPort = 1;
ComPort.Settings = "9600,N,8,1";
ComPort.PortOpen = Истина;
ЭлементыФормы.НадписьСвязь.Заголовок = "Связь есть..."
Исключение
ОчиститьСообщения();
Сообщить("Не возможно открыть порт.",СтатусСообщения.ОченьВажное);
Отказ = Истина;
КонецПопытки;
КонецПроцедуры
Процедура ОпросСОМПорта()
ЧтениеСОМПорта("1",Неопределено);
КонецПроцедуры
Функция ЧтениеСОМПорта(Команда,Ответ)
Если ComPort.PortOpen Тогда
ДанныеСПорта = "";
ComPort.Output = Команда;
ПолучитьДанныеСПорта();
Ответ = ДанныеСПорта;
ЭлементыФормы.НадписьСвязь.Заголовок = "Связь есть...";
Если Команда = "1" Тогда
ЗаполнитьПоляНаФорме(Ответ);
КонецЕсли;
Возврат Ответ;
Иначе
ОчиститьСообщения();
ИнициализацияСОМПорта(Ложь);
ЭлементыФормы.НадписьСвязь.Заголовок = "Связи нет...";
Возврат Неопределено;
КонецЕсли;
КонецФункции
Процедура ПолучитьДанныеСПорта()
Пока ComPort.InBufferCount < 14 Цикл
КонецЦикла;
ДанныеСПорта = ComPort.Input;
КонецПроцедуры
Вопрос по процедуре ПолучитьДанныеСПорта(), как уйти от цикла? Цикл подвешивает программу, не сильно конечно, но задержка видна.