|   |   | 
| 
 | MSCOMM32.ocx назначить событие onComm | ☑ | ||
|---|---|---|---|---|
| 0
    
        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); То какие могут быть варианты в нашей платформе? | |||
| 1
    
        lEvGl гуру 17.10.19✎ 18:52 | 
        ап     | |||
| 2
    
        lEvGl гуру 18.10.19✎ 09:14 | 
        неужели никто не решил     | |||
| 3
    
        lEvGl гуру 18.10.19✎ 10:08 | 
        текучка     | |||
| 4
    
        lEvGl гуру 18.10.19✎ 12:11 | 
        вверх     | |||
| 5
    
        Garykom гуру 18.10.19✎ 12:29 | 
        (0) На нашей платформе можно использовать ВК или веб-сервисы.     | |||
| 6
    
        lEvGl гуру 18.10.19✎ 12:32 | 
        (5) да уже сделал на этой библиотеке, переделывать на вк не хочется
 варианты то есть, но приходится вручную отлавливать данные - по количеству символов или по CommEvent ил еще как, но при этом страдает надежность | |||
| 7
    
        lEvGl гуру 18.10.19✎ 12:37 | 
        у нее, у библиотеки, должен быть класс событий, но как он называется не ясно, соответственно комобъект создать не получается
 если правильно понимаю Новый COMОбъект("MSCOMMLib.MSComm") MSComm - это класс, тогда должно быть типа Новый COMОбъект("MSCOMMLib.Events") но имя неизвестно | |||
| 8
    
        lEvGl гуру 18.10.19✎ 12:37 | 
        хотя это все догадки, описания не нашел     | |||
| 9
    
        Garykom гуру 18.10.19✎ 12:37 | 
        Блин используй уже обработчик ожидания и не страдай.     | |||
| 10
    
        lEvGl гуру 18.10.19✎ 12:39 | 
        а что он даст? каждую секунду смотреть в буфер или я не так понял?     | |||
| 11
    
        lEvGl гуру 18.10.19✎ 12:49 | 
        гм... я знаю только ПодключитьОбработчикОжидания(Процедура, Время), не об этом речь?     | |||
| 12
    
        Garykom гуру 18.10.19✎ 12:54 | 
        (10) (11) Угу каждую секунду смотри что в ComPort.Input     | |||
| 13
    
        lEvGl гуру 18.10.19✎ 13:06 | 
        в этом и проблема - нет синхронизации между устройством и программой, если посмотреть слишком рано или слишком поздно, то данных не будет. А компьютеры разные, скорость выполнения операций разная, поэтому у одного выполнение получения занимает 0.3 секунды, а у другого 0.5, у третьего может процессор антивирусом загрузиться и он будет обрабатывать 3 секунды. Через событие это решается оптимально и надежно - появились данные в буфере, генерится событие onComm. Генерится именно в тот момент, когда это нужно, а читая буфер по своим таймерам я получаю обрывки строк, то первую часть строки, то вторую, то совсем ничего. Микрософтовский функционал надежнее за счет схемы реализации     | |||
| 14
    
        Garykom гуру 18.10.19✎ 13:23 | 
        (13) см (5)     | |||
| 15
    
        lEvGl гуру 18.10.19✎ 13:31 | 
        и на том спасибо, хотя бы понятно, что так не реализуется     | |||
| 16
    
        lEvGl гуру 18.10.19✎ 14:40 | 
        хотя... может увидит тот, кто все таки сделал это)     | |||
| 17
    
        lEvGl гуру 20.10.19✎ 17:58 | 
        делается через
 НазначитьОбработчик Событие, Обработчик; кто то пожадничал | |||
| 18
    
        ДенисЧ 20.10.19✎ 18:01 | 
        (17) Так делается или не работает?     | |||
| 19
    
        lEvGl гуру 20.10.19✎ 18:05 | 
        (18) там же русским по белому написано
 да и встречал это триста раз на форумах, но не приходилось использовать | |||
| 20
    
        acht 20.10.19✎ 18:09 | 
        (19) > там же русским по белому написано 
 А то, что оно называется "ДобавитьОбработчик", а не "НазначитьОбработчик" там написано? | |||
| 21
    
        lEvGl гуру 20.10.19✎ 18:18 | 
        ах ты ж ёпырст, где же ты был??
 в пятницу в середине рабочего дня не нашлось никого, кроме одного, прошли мимо. а тут на тебе, в воскресенье вечером, когда публики процентов 10 на форуме сидит - сколько знающих появилось сказал бы я, да бан получать / нарушать общественный порядок не хочется | |||
| 22
    
        МихаилМ 20.10.19✎ 18:35 | 
        модераторы, перенесите ветку из раздела 1с8 в it     | |||
| 23
    
        Garykom гуру 20.10.19✎ 18:41 | 
        (22) По логике надо в юмор переносить.     | |||
| 24
    
        acht 20.10.19✎ 19:14 | 
        (21) >в пятницу
 Ответ начальника пожарных был краток: "Потому что они были на работе"... | |||
| 25
    
        lEvGl гуру 20.10.19✎ 22:15 | 
        (23) в "загадки логики" может?     | |||
| 26
    
        Garykom гуру 20.10.19✎ 22:20 | 
        (25) Юмор потому что удивляет непонимание ИТ технологий от типа программиста.     | |||
| 27
    
        Garykom гуру 20.10.19✎ 22:21 | ||||
| 28
    
        Garykom гуру 20.10.19✎ 22:28 | 
        Да можно попробовать
 
Но оно глючит по страшному, 1С часто просто падает. | |||
| 29
    
        Garykom гуру 20.10.19✎ 22:31 | 
        Поэтому правильно это свою ВК, которая работает с COM портом и умеет в 1С ОбработкаВнешнегоСобытия
 Кста для 1С 7.7 юзали http://www.1cpp.ru/forum/YaBB.pl?num=1152684759/all | |||
| 30
    
        lEvGl гуру 21.10.19✎ 10:41 | 
        (26) то есть ты типа на свое усмотрение позаботился о глупом и несведущем - не сказал про обработчик, потому что это "неправильно". А правильно, значит, это набаянить вк с интерфейсами, что бы просто взять данные с порта, при этом многие юзают даже не библиотеку, а просто через запись/чтение файла делают, если этого достаточно. Судя по твоим рекомендациям из (9) и (12) тут кто то другой не понимает принципов работы схем/интерфейсов взаимодействия программно аппаратной части. Не поверишь - много зависит от того как работает устройство, оно может работать запрос/ответ, может постоянно лить в порт данные или само по какому то событию выкидывать и еще несколько вариантов
 27, 29 оставь эти ссылки себе, этих вк уже миллион и сейчас где то пишется миллион первая, предлагаешь написать свою миллион вторую, нахрена козе баян? вопрос был простой - как назначить обработчик (22) обработчик в 1С ВЕРСИИ 8, есть штатные функции | |||
| 31
    
        lEvGl гуру 21.10.19✎ 10:42 | 
        (24) ну это совсем лол     | |||
| 32
    
        Garykom гуру 21.10.19✎ 10:53 | 
        (30) А ты сказал какая у тебя версия 1С ?
 С обычными виндовыми ком объектами 1С любая умеет работать, обработчики назначать не все платформы, да и то глюки на практике. Можно считать что нет этой возможности и самое правильное (5) или хотя бы (9). | |||
| 33
    
        lEvGl гуру 21.10.19✎ 11:02 | 
        причем здесь версия? я про ветку ответил на (22)
 смешные вы, один говорит что из категории 1С8 надо перенести в IT, другой, что я не обозначил версию платформы ты, как трупраграммист (присвоение себе этого эпитета тебе видимо дает + много чсв), должен был понять проблемы реализации (9), я объяснил и уже не раз по (5) тоже объяснил - это называется изобретать велосипед (28) а вот это надо проверить, у меня на машине все нормально работает, действительно есть баг? | |||
| 34
    
        Garykom гуру 21.10.19✎ 11:41 | 
        (33) >действительно есть баг
 Подозреваю это зависит от многих факторов, в т.ч. версии винды, платформы 1С и т.д. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |