|
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С и т.д. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |