|
Как на JavaScript отловить событие прихода данных на Com-порт? | ☑ | ||
---|---|---|---|---|
0
Ислам
27.03.14
✎
13:34
|
Собственно сабж.
Желательно без использования устаревшей mscomm32.ocx |
|||
1
dangerouscoder
27.03.14
✎
13:45
|
||||
2
Ислам
27.03.14
✎
13:52
|
(1) Эту штуку я уже смотрел, она платная.
|
|||
3
Ислам
27.03.14
✎
13:56
|
И что-то не нашел как отловить событие
|
|||
4
Ислам
27.03.14
✎
13:57
|
На другом форуме мне посоветовали через Win API сделать, вроде все круто, но там тоже нет событий, нужно тупо в программе сидеть и ждать прихода данных.
|
|||
5
CPU0
27.03.14
✎
14:24
|
(0) Лол, в посте №55 (javascript диалог выбора каталога) ты с пеной у рта доказывал, что речь идет не о HTA...
|
|||
6
Serginio1
27.03.14
✎
14:24
|
(4) Создаешь событие в своем ActiveX
и привязываешься к нему через attachEvent http://social.msdn.microsoft.com/Forums/vstudio/en-US/0a8400bc-e726-4f09-89a3-90f7c438b34c/ie-crashes-using-c-activex-control-with-threadevent |
|||
7
Serginio1
27.03.14
✎
14:27
|
http://www.codeproject.com/Articles/35532/C-COM-Object-for-Use-In-JavaScript-HTML-Including
Посмотри как у меня сделано событие |
|||
8
Serginio1
27.03.14
✎
14:39
|
||||
9
Ислам
28.03.14
✎
06:09
|
(5) Лол. Капитан О. Там еще и не про насекомых которые испытывают боль.
|
|||
10
Ислам
28.03.14
✎
06:15
|
(7) А это событие должно быть видно как свойство объекта в отладчике? Типа как у другох объектов видно ***.onClick, и пр. А то у меня его не видно, и если присврить функцию obj.onComm = fyfunc по аналогии с onClick, то свойство появляется, но ничего не срабатывает. Через attachEvent должно по другому происходить или нет разницы?
|
|||
11
Serginio1
28.03.14
✎
10:22
|
Я с JavaScript только учусь (посыпаю пеплом местами седую голову), но вот они должны быть комовскими которые в 1С например срабатывают через
ДобавитьОбработчик Событие.СобытиеСПараметром, ПолучениеДанныхПоTCP; Ну и надо смотреть в отладчике когда реальное событие срабатывает, и что оно вызывает |
|||
12
Ислам
28.03.14
✎
11:03
|
Короче, вообще не работает событие у меня.
Решил через Win API делать как советовали по правильному. Вот кусок кода не понятный: if not WaitCommEvent(hPort, dwMask, @OverRead) then begin if GetLastError = ERROR_IO_PENDING then WaitForSingleObject(OverRead.hEvent, INFINITE) else raise Exception.Create('Error waiting port event'); end; Функция WaitCommEvent ждет событие от ком-порта, так? Событие происходит (пришли данные), обрабатываем их дальше. Тогда не понятно зачем функция WaitForSingleObject. Похоже она делает то же самое: Ждет какое-то событие. Тогда вопрос: Зачем их две? Что они делают? |
|||
13
Serginio1
28.03.14
✎
13:53
|
(12) А чего гугл забанили?
http://www.vsokovikov.narod.ru/New_MSDN_API/Comm_res/fn_waitcommevent.htm Функция WaitCommEvent осуществляет текущий контроль за пакетом событий для заданного коммуникационного ресурса. Чтобы установить и сделать запрос текущей маски события коммуникационного ресурса, используйте функции SetCommMask и GetCommMask. Если асинхронная операция не может завершиться немедленно, функцией возвращается ЛОЖЬ (FALSE), а функцией GetLastError возвращается значение ERROR_IO_PENDING, указывая, что операция исполняет код в фоновом режиме. Когда это случается, система устанавливает член hEvent структуры OVERLAPPED в несигнальное состояние прежде, чем WaitCommEvent возвращает значение, а затем она устанавливает структуру в сигнальное состояние, когда происходит одно из определенных событий или ошибка. Вызывающий процесс может использовать одну из функций ожидания, чтобы выяснить состояние объекта события, а затем использовать функцию GetOverlappedResult, чтобы выяснить результат работы WaitCommEvent. Функция GetOverlappedResult сообщает об успешном завершении или сбое операции, а переменная, на которую указывает параметр lpEvtMask устанавливается так, чтобы обозначить событие, которое произошло. Если процесс пытается изменить маску события дескриптора устройства, используя функцию SetCommMask, в то время, когда происходит асинхронная операция WaitCommEvent, функция WaitCommEvent возвращает значение немедленно. Переменная, на которую указывает параметр lpEvtMask устанавливается в нуль ('0'). |
|||
14
Serginio1
28.03.14
✎
13:54
|
(12) Ты бы показал код со своим событием
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |