Тема: VBS: Ожидание данных из COM порта
Написал скрипт для перехвата данных из COM порта и пересылке их на кнопки. Нужно это для того, чтобы сканеры штрих-кодов COM портовые работали как клавиатурные.
Скрипт вполне работоспособен, но грузит проц на 50% А если их запустить 2 то на 100%.
Вопрос, что можно сделать, чтобы он не был столь ресурсоемким:
On Error Resume Next
set WshShell = CreateObject("WScript.Shell")
Set scan = CreateObject("MSCOMMLib.MSComm") ' Используется MSCOMM32.OCX
Set objArgs = WScript.Arguments
For I = 0 to objArgs.Count - 1
Comand=objArgs(I)
Next
If (scan Is Nothing) Then
MsgBox "Компонента не установлена", vbCritical
End If
scan.Settings = "9600,n,8,1"
if Comand ="" then
scan.CommPort = 2 ' По умолчанию слушаем 2-й порт
Else
scan.CommPort = Comand
End If
While 1
call listen
If Err.Number <> 0 Then 'Обработчик ошибок
MsgBox "Так не пойдет. Описание ошибки: "& Err.Description, vbCritical
wscript.quit
Else
On Error GoTo 0
End If
Wend
sub listen()
scan.PortOpen = True
scan.InputLen = 0
Do Until len(bcod)=14 ' Именно эта часть вызывает загрузку процессора
bcod=bcod+scan.Input
loop
bcod=trim(Right(bcod, Len(bcod)-1))
WshShell.SendKeys "{F12}"+bcod+"{ENTER}" 'Отсылаем команду в клавиатуру с префиксом и постфиксом
bcod=""
scan.PortOpen = False
End subМожет есть другой способ получить данные из COM порта?

