1

Тема: VBS: не срабатывает событие MSComm_onComm

Добрый день.

Уперся в проблему - в скрипте не срабатывает событие MSComm_OnComm.

COMM11 - виртуальный USB Serial port, на железке стоит микросхема FT232R фирмы FTDI (VID_0403 PID_6001).
Порт открывается/закрывается, данные посылаются/считываются(Input/Output) и с параметрами по умолчанию, но событие MSComm_OnComm не cрабатывает.
http://msdn.microsoft.com/en-us/library … S.60).aspx читал.

Может быть кто сталкивался.
Видимо как-то не так устанавливаю параметры порта при открытии.

Код:

Dim MSComm
Set wshShell = CreateObject("WScript.Shell")
Set MSComm = CreateObject("MSCommLib.MSComm")
MSComm.CommPort = 11
MSComm.Settings = "115200,N,8,1"
MSComm.InputLen = 0 'max input lenght
MSComm.Handshaking = 2
MSComm.CDHolding = True
MSComm.DTREnable = True
MSComm.RTSEnable = True
MSComm.RThreshold = 1
MSComm.SThreshold = 1
MSComm.NullDiscard = False 'Null char received
MSComm.InputMode = 0 '0/1 text/bin

wscript.Echo cstr(MSComm.PortOpen)
If Not MSComm.PortOpen then
  MSComm.PortOpen = True
End If
wscript.Echo cstr(MSComm.PortOpen)

While True
  WScript.sleep 5000
  WScript.Echo "."
wend

MSComm.PortOpen = False
'---------------------------------
Private Sub MSComm_OnComm()
  WScript.Echo MSComm.CommEvent
End Sub

Заранее спасибо

2

Re: VBS: не срабатывает событие MSComm_onComm

http://www.script-coding.com/WSH/WScript.html#3.4.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

3

Re: VBS: не срабатывает событие MSComm_onComm

2 dandyd:

Уточню. The gray Cardinal обращает ваше внимание на то что надо бы:

Set MSComm = WScript.CreateObject("MSCommLib.MSComm","MSComm_")

вместо

Set MSComm = CreateObject("MSCommLib.MSComm")
Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

4

Re: VBS: не срабатывает событие MSComm_onComm

Там вроде бы все правильно расписано, но при этом подходе скрипт выдает ошибку:

D:\comm11-1.vbs(3, 1) Ошибка выполнения Microsoft VBScript: Компьютер удаленного сервера не существует или недоступен: 'CreateObject'

И PrimalScript при создании строки "Set MSComm = CreateObject(" выдает подсказку - "CreateObject(servername.typename[,location])".
Т.е. почему-то получается, что второй параметр - это имя компьютера, откуда надо брать mscomm32.ocx.

Dim MSComm
Set wshShell = CreateObject("WScript.Shell")
Set MSComm = CreateObject("MSCommLib.MSComm","evt_")
MSComm.CommPort = 11
MSComm.Settings = "115200,N,8,1"
MSComm.InputLen = 0 'max input lenght
MSComm.Handshaking = 2
MSComm.CDHolding = True
MSComm.DTREnable = True
MSComm.RTSEnable = True
MSComm.RThreshold = 1
MSComm.SThreshold = 1
MSComm.NullDiscard = False 'Null char received
MSComm.InputMode = 0 '0/1 text/bin

wscript.Echo cstr(MSComm.PortOpen)
If Not MSComm.PortOpen then
  MSComm.PortOpen = True
End If
wscript.Echo cstr(MSComm.PortOpen)

While True
  WScript.sleep 5000
  WScript.Echo "."
wend

MSComm.PortOpen = False
'---------------------------------
Sub evt_OnComm()
  WScript.Echo MSComm.CommEvent
End Sub

5

Re: VBS: не срабатывает событие MSComm_onComm

2 dandyd: Функция CreateObject и WScript.CreateObject это не одно и тоже. Работают по разному. Вам нужен второй вариант.

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

6

Re: VBS: не срабатывает событие MSComm_onComm

Xameleon пишет:

2 dandyd:

Уточню. The gray Cardinal обращает ваше внимание на то что надо бы:

Set MSComm = WScript.CreateObject("MSCommLib.MSComm","MSComm_")

вместо

Set MSComm = CreateObject("MSCommLib.MSComm")

Спасибо. В этом варианте заработало.
Тема закрыта.