helpf.pro
Регистрация

v8.2 УП: модем через rs232

KorolyovSS
18.08.2017 19:23Прочитано: 4133

1C8.2.14.519УП

Добрый вечер. Есть необходимость считывать данные с удаленного контроллера посредством модемной связи. В первую очередь вспомнил про :

Код 1C v 8.2 УП
 Порт = Новый COMОбъект("MSCOMMLib.MSComm.1");     

Но понял, что чтобы получать данные через буфер, нужно лепить огороды, циклить код, подстраиваться под быстродействие и т.д. Короче, нужен обработчик внешних событий. 

Нашел в интернете vk_rs232.dll, решил попробовать, но сразу наткнулся на какие-то грабли.

1. Запихнул vk_rs232.dll в zip архив и засунул его в ОбщийМакет.rs232

Код 1C v 8.2 УП
 
УстановитьВнешнююКомпоненту("ОбщийМакет.rs232");
ПодключитьВнешнююКомпоненту("ОбщийМакет.rs232", "vk_rs232");
Порт=Новый("AddIn.vk_rs232");

Ни одна из строчек не работает.

2. Запустил с командной строки regsvr32 "d:\kip\vk_rs232.dll"

Код 1C v 8.2 УП
 
ПодключитьВнешнююКомпоненту("d:\kip\vk_rs232.dll", "vk_rs232"); // Результат Истина
Порт=Новый("AddIn.vk_rs232");

Первая строчка отработала, вторая вызвала исключение. Пытаюсь рулить модемом через ModemSE,

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные) - ноль внимание

Опыта в этом деле маловато. Подскажите, что я ни так делаю? Может я вообще не в том направлении пошел? Если у кого-нибудь есть опыт работы с модемной передачей данных, поделитесь, пожалуйста.

Заранее благодарен.

Yandex
Возможно, вас также заинтересует
Реклама на портале
KorolyovSS
20.08.2017 10:21Ответ № 1

Вопрос уже стоит иначе. Разобрался в отличиях внешних компонент com и native api, нашел на портале

https://github.com/tarasii/1c_rs232 native компоненту для rs232 (архив AddInNative.zip), запихнул ее в общий шаблон и прикрутил ее в программу:

Код 1C v 8.2 УП
  
УстановитьВнешнююКомпоненту("ОбщийМакет.Компонент");
Сообщить(ПодключитьВнешнююКомпоненту("ОбщийМакет.Компонент", "Порт", ТипВнешнейКомпоненты.Native));
Порт = Новый ("AddIn.Порт.rs232");

Все сработало, но порт не открывается

Код 1C v 8.2 УП
 
Сообщить("Open = "+Порт.Open(5, 9600, 8, 0, 1)+" Ошибка = "+Порт.Error); // Результат = 3
Сообщить("Порт открыт = "+Порт.IsOpen); // Результат = 0;

1C8.2.14.518УП;  Windows 10х64

Если кто-нибудь пользовался этой библиотекой, откликнитесь. Заранее благодарен.

keyfire
09.01.2018 00:26Ответ № 2

Я попробовал. Порт открылся,

но данные не приходят. 

Написал такой код:

ПодключитьВнешнююКомпоненту("ОбщийМакет.rs232", "rs232", ТипВнешнейКомпоненты.Native); Порт = Новый("AddIn.rs232.rs232"); Порт.Открыть(НомерПорта, 9600); Порт.Отправить("AT+CMGF=1"); Порт.Задержка(100); Порт.Получить(); Ответ = Порт.Ответ; Порт.Отправить("AT+CMGL=""ALL"""); Порт.Задержка(100); Порт.Получить(); Ответ = Ответ + Порт.Ответ; Порт.Закрыть();[/pre]

Но в ответе ничего нет

keyfire
09.01.2018 00:29Ответ № 3

У вас получилось с этим разобраться? 

Я стал смотреть в сторону работы с модемам через API hilink в модемах

Huawei

Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.