Была поставлена задача, написать внешнюю компоненту для работы из 1C v8 с COM портом. Компонента должны была снимать показания веса с очень необычных весов, а именно Весы вагонные тензометрические ЭлВВ-150/2 (III) и Весы автомобильные тензометрические ЭлВА-1660 (III). Доступа к ним не было, по всей видимости, они были не подъемные и находились далеко от меня.
Для разработки dll была выбрана среда разработки Delphi. Окончательное готовое решение было выполнено на 3й день после начала работ. Код был не полностью мой, основывался на примерах из Интерента.
Долго не мог найти девайс который бы работал через нужный мне порт. Сперва была найдена мышь, но она на посланные команды в ответ нечего не слала обратно. Потом у приятеля нашелся модем, на котором я и проводил испытание свежеиспеченной динамической библиотеки.
Вот, что в итоге получилось:

1С работа с COM портом
Для мониторинга того что происходило на COM порте использовал утилиту PortMon компании Sysinternals которую пару лет назад купила преславутая Microsoft.

Portmon прослушивает COM порт
Для загрузки компоненты в следует поместить ее в директорию где установлина 1С в папку bin
После чего исполнить в 1C следующий код:
//Подключаем Компоненту
ЗагрузитьВнешнююКомпоненту(«rs232.dll»);
COMПорт = Новый(«Addin.rs232″);
// Открываем порт COM1, COM2, COM3 ….
COMПорт.ОткрытьПорт(«COM1″);
// Записываем команду
Команда = «AT»;
COMПорт.ЗаписатьСтроку(Команда);
//Закрываем порт
COMПорт.ЗакрытьПорт();
Для того что бы получить значени следует использовать процедуру обработки Внешнего События
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Сообщить(«Получено значение: « + Данные);
КонецПроцедуры
Скачать демонстрационную конфигурацию и dll можно по ссылке: 1C_COM_DEMO+dll.rar
Скачать исходник DLL: rs232.rar
1C
1C, 1С, COM, Delphi, dll, порт