1 (изменено: D_Pavel, 2014-03-26 06:24:52)

Тема: JS: Не работает MsComm

<object id="MsComm" classid="CLSID:648A5600-2C6E-101B-82B6-000000000014"></object>
<script language="JavaScript">alert(MsComm.CommPort)</script>

MsComm.CommPort undefined

Создал объект MsComm для работы с COM портом, то он не имеет нужных свойств для работы с портом, а имеет только свойства элемента HTML.
Мне нужно обрабатывать события onComm.
Как это сделать?

PS: MsComm.getAttribute("CommPort") null
А если так создавать:

var MsComm = new ActiveXObject ( "MSCOMMLib.MSComm" )

то не знаю как событие onComm перехватить.

2

Re: JS: Не работает MsComm

D_Pavel пишет:

как событие onComm перехватить.

Может так:

var MsComm = new ActiveXObject ("MSCOMMLib.MSComm");

MsComm.onComm = onCommEvt;

function onCommEvt() {
    // обработка
}
Щт Уккщк Куыгьу Туче
’ҐЄгй п Є®¤®ў п бва Ёж : 1251

3

Re: JS: Не работает MsComm

omegastripes, у MsComm нет свойств/методов для зацепки событий.

Всё гораздо проще. Как и с Winsock-ом.


Private Sub MsComm_OnComm()
    'Code...
End Sub

D_Pavel, по идее Вам нужно что-то вроде этого:


Option Explicit

Dim MSComm
Set MSComm = WScript.CreateObject("MSCOMMLib.MSComm","MSComm_")

WScript.Sleep 4000

With MSComm
    .CommPort = 2
    .InputLen = 0
    .PortOpen = True
    .Output = "TEST"
End With

Private Sub MSComm_OnComm()
    MsgBox "!"
End Sub

Проверить не могу - нет оборудования для теста.

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

4

Re: JS: Не работает MsComm

Вот Вам кусок, выдранный из моего гарантированно рабочего проекта (на hta).
Обратите внимание на привязку обработчика прерывания по приёму пакета посредством функции window.onload.

<script>
MSComm1 = new ActiveXObject("MSCOMMLib.MSComm")
MSComm1.CommPort = 1
MSComm1.PortOpen = true
MSComm1.Settings = "115200,n,8,1"

window.onload=function()
{
    function MSComm1::OnComm()
    {
    if (CommEvent==2)
        {
        input_packet=Input
        }
    }
}

MSComm1.Output="Test output RS-232"
</script>

В данном случае если в COM1 завернуть Tx на Rx, свалитесь в обработчик MSComm1::OnComm() (при CommEvent==2), и содержимое переменной input_packet будет равно отправленной строке "Test output RS-232".

5

Re: JS: Не работает MsComm

Xameleon
Прошу прощения за то, что вмешался.

У меня не работает обработчик события _ONCOMM()
Понимаю, что звучит дико: в общем и целом MSCOMM32 работает правильно,
но Private Sub MSComm1_OnComm() не работает.
То есть во входном буфере появляются принятые символы, а вызов обработчика события НЕ ПРОИСХОДИТ.
Обращаюсь ко всем: может кто-то сможет помочь.

6

Re: JS: Не работает MsComm

agbely1964, приветствую ! А на код взглянуть можно ?

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !