Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

MSCOMM32.ocx назначить событие onComm

MSCOMM32.ocx назначить событие onComm
Я
   lEvGl
 
17.10.19 - 17:39
Доброго всем

Подскажите, как программно назначить событие библиотеки onComm к конкретной процедуре в модуле

ComPort = Новый COMОбъект("MSCOMMLib.MSComm.1");
ComPort.CommPort = 9;
ComPort.PortOpen = Истина;
ComPort.OutPut = Символ(49) + Символ(13);

После отправки в порт команды устройство возвращает в буфер ответ, где содержатся нужные данные. Если разместить актив Х на форме, то у него есть обработчик события onComm и проблем нет. У меня несколько устройств на разных портах(номера портов на разных машинах разные), поэтому создаю их программно, типа "динамически", возможности "мышкой" назначить обработчик события нет. Если например в шарпе можно
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

То какие могут быть варианты в нашей платформе?
 
 
   lEvGl
 
1 - 17.10.19 - 18:52
ап
   lEvGl
 
2 - 18.10.19 - 09:14
неужели никто не решил
   lEvGl
 
3 - 18.10.19 - 10:08
текучка
   lEvGl
 
4 - 18.10.19 - 12:11
вверх
   Garykom
 
5 - 18.10.19 - 12:29
(0) На нашей платформе можно использовать ВК или веб-сервисы.
   lEvGl
 
6 - 18.10.19 - 12:32
(5) да уже сделал на этой библиотеке, переделывать на вк не хочется
варианты то есть, но приходится вручную отлавливать данные - по количеству символов или по CommEvent ил еще как, но при этом страдает надежность
   lEvGl
 
7 - 18.10.19 - 12:37
у нее, у библиотеки, должен быть класс событий, но как он называется не ясно, соответственно комобъект создать не получается

если правильно понимаю
 Новый COMОбъект("MSCOMMLib.MSComm")

MSComm - это класс, тогда должно быть типа

 Новый COMОбъект("MSCOMMLib.Events")

но имя неизвестно
   lEvGl
 
8 - 18.10.19 - 12:37
хотя это все догадки, описания не нашел
   Garykom
 
9 - 18.10.19 - 12:37
Блин используй уже обработчик ожидания и не страдай.
   lEvGl
 
10 - 18.10.19 - 12:39
а что он даст? каждую секунду смотреть в буфер или я не так понял?
   lEvGl
 
11 - 18.10.19 - 12:49
гм... я знаю только ПодключитьОбработчикОжидания(Процедура, Время), не об этом речь?
   Garykom
 
12 - 18.10.19 - 12:54
(10) (11) Угу каждую секунду смотри что в ComPort.Input
   lEvGl
 
13 - 18.10.19 - 13:06
в этом и проблема - нет синхронизации между устройством и программой, если посмотреть слишком рано или слишком поздно, то данных не будет. А компьютеры разные, скорость выполнения операций разная, поэтому у одного выполнение получения занимает 0.3 секунды, а у другого 0.5, у третьего может процессор антивирусом загрузиться и он будет обрабатывать 3 секунды. Через событие это решается оптимально и надежно - появились данные в буфере, генерится событие onComm. Генерится именно в тот момент, когда это нужно, а читая буфер по своим таймерам я получаю обрывки строк, то первую часть строки, то вторую, то совсем ничего. Микрософтовский функционал надежнее за счет схемы реализации
   Garykom
 
14 - 18.10.19 - 13:23
(13) см (5)
   lEvGl
 
15 - 18.10.19 - 13:31
и на том спасибо, хотя бы понятно, что так не реализуется
   lEvGl
 
16 - 18.10.19 - 14:40
хотя... может увидит тот, кто все таки сделал это)
   lEvGl
 
17 - 20.10.19 - 17:58
делается через

НазначитьОбработчик Событие, Обработчик;

кто то пожадничал
   ДенисЧ
 
18 - 20.10.19 - 18:01
(17) Так делается или не работает?
   lEvGl
 
19 - 20.10.19 - 18:05
(18) там же русским по белому написано

да и встречал это триста раз на форумах, но не приходилось использовать
   acht
 
20 - 20.10.19 - 18:09
(19) > там же русским по белому написано

А то, что оно называется "ДобавитьОбработчик", а не "НазначитьОбработчик" там написано?
   lEvGl
 
21 - 20.10.19 - 18:18
ах ты ж ёпырст, где же ты был??
в пятницу в середине рабочего дня не нашлось никого, кроме одного, прошли мимо. а тут на тебе, в воскресенье вечером, когда публики процентов 10 на форуме сидит - сколько знающих появилось
сказал бы я, да бан получать / нарушать общественный порядок не хочется
   МихаилМ
 
22 - 20.10.19 - 18:35
модераторы, перенесите ветку из раздела 1с8 в it
   Garykom
 
23 - 20.10.19 - 18:41
(22) По логике надо в юмор переносить.
   acht
 
24 - 20.10.19 - 19:14
(21) >в пятницу

Ответ начальника пожарных был краток: "Потому что они были на работе"...
   lEvGl
 
25 - 20.10.19 - 22:15
(23) в "загадки логики" может?
   Garykom
 
26 - 20.10.19 - 22:20
(25) Юмор потому что удивляет непонимание ИТ технологий от типа программиста.
   Garykom
 
27 - 20.10.19 - 22:21
   Garykom
 
28 - 20.10.19 - 22:28
Да можно попробовать
ДобавитьОбработчик ComPort.onComm, НашаПроцедура();


Но оно глючит по страшному, 1С часто просто падает.
   Garykom
 
29 - 20.10.19 - 22:31
Поэтому правильно это свою ВК, которая работает с COM портом и умеет в 1С ОбработкаВнешнегоСобытия


Кста для 1С 7.7 юзали http://www.1cpp.ru/forum/YaBB.pl?num=1152684759/all
   lEvGl
 
30 - 21.10.19 - 10:41
(26) то есть ты типа на свое усмотрение позаботился о глупом и несведущем - не сказал про обработчик, потому что это "неправильно". А правильно, значит, это набаянить вк с интерфейсами, что бы просто взять данные с порта, при этом многие юзают даже не библиотеку, а просто через запись/чтение файла делают, если этого достаточно. Судя по твоим рекомендациям из (9) и (12) тут кто то другой не понимает принципов работы схем/интерфейсов взаимодействия программно аппаратной части. Не поверишь - много зависит от того как работает устройство, оно может работать запрос/ответ, может постоянно лить в порт данные или само по какому то событию выкидывать и еще несколько вариантов

27, 29 оставь эти ссылки себе, этих вк уже миллион и сейчас где то пишется миллион первая, предлагаешь написать свою миллион вторую, нахрена козе баян? вопрос был простой - как назначить обработчик

(22) обработчик в 1С ВЕРСИИ 8, есть штатные функции
 
 Рекламное место пустует
   lEvGl
 
31 - 21.10.19 - 10:42
(24) ну это совсем лол
   Garykom
 
32 - 21.10.19 - 10:53
(30) А ты сказал какая у тебя версия 1С ?

С обычными виндовыми ком объектами 1С любая умеет работать, обработчики назначать не все платформы, да и то глюки на практике.
Можно считать что нет этой возможности и самое правильное (5) или хотя бы (9).
   lEvGl
 
33 - 21.10.19 - 11:02
причем здесь версия? я про ветку ответил на (22)
смешные вы, один говорит что из категории 1С8 надо перенести в IT, другой, что я не обозначил версию платформы

ты, как трупраграммист (присвоение себе этого эпитета тебе видимо дает + много чсв), должен был понять проблемы реализации (9), я объяснил и уже не раз
по (5) тоже объяснил - это называется изобретать велосипед

(28) а вот это надо проверить, у меня на машине все нормально работает, действительно есть баг?
   Garykom
 
34 - 21.10.19 - 11:41
(33) >действительно есть баг
Подозреваю это зависит от многих факторов, в т.ч. версии винды, платформы 1С и т.д.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.