Вверх ↑
Этот топик читают: Гость
Ответов: 197
Рейтинг: 2
#31: 2023-03-08 01:44:23 ЛС | профиль | цитата
Не стал создавать новую тему. Люди добрые подскажите пожалуйста, изучаю шину LIN и столкнулся с такой проблемой мне нужно в ком порт отправить первоначально 13 (нулевых(0000000000000)) бит потом байт синхронизации 0х55(1010101) ,а уже потом pid.
Так вот байт синхронизации отправляется без проблем и я его вижу на логическом анализаторе(все четко), но перед байтом синхронизации должны быть вот эти 13нулевых бит. Так называемое поле BREAK. через конвертеры либо отправляется каждый ноль как отдельный байт либо в шину вообще ничего не идет.

Add(MainForm,2953706,21,105)
{
Width=384
Height=315
Point(onClose)
link(onCreate,15332512:doOpen,[])
link(onClose,15332512:doClose,[])
}
Add(COMEX,15332512,420,119)
{
Port=3
Point(onDCD)
Point(onError)
link(onRead,14951341:doAdd,[(610,132)(610,251)])
link(onError,5336595:doMessage,[])
}
Add(ListBox,14951341,623,245)
{
Left=25
Top=55
Width=135
Height=190
}
Add(Message,5336595,469,147)
{
}
Add(Timer,10079860,28,245)
{
Interval=500
link(onTimer,2331623:doNext,[])
}
Add(CounterEx,2331623,154,245)
{
Max=30
Point(doReset)
link(onNext,9000179:doCompare,[])
}
Add(If_else,9000179,203,245)
{
Op2=Integer(100)
link(onTrue,14133347:doEvent1,[])
link(onFalse,5875242:doConvert,[(300,258)(300,146)])
}
Add(Hub,14133347,252,245)
{
link(onEvent1,2331623:doReset,[(278,251)(278,226)(144,226)(144,258)])
link(onEvent2,14951341:doClear,[])
}
Add(Convertor,5875242,315,140)
{
Mode=8
Digits=13
link(onResult,15332512:doWrite,[(387,146)(387,139)])
link(Data,13882260:Text,[])
}
Add(Edit,13882260,315,84)
{
Left=20
Top=20
Width=85
Text="000000000000"
DataType=2
}
Add(StreamConvertor,16100116,364,182)
{
Mode=3
Point(Data)
}



Эта осцилограмма показывает как происходит на самом деле.





а вот так вот должно быть. Поле breake неразрывно на байты. а целиком и полностью 13 бит одним словом.

Вопрос, Как это сделать посредством hiasm?

Редактировалось 2 раз(а), последний 2023-03-12 22:37:06
карма: 0

0
Ответов: 8926
Рейтинг: 823
#32: 2023-03-08 10:25:40 ЛС | профиль | цитата
zhorik5, наверное никак через СОМ -- он же работает байтами (8) плюс старт/стоп (2), плюс бит чётности, если установлен, максимум 11 периодов, а нужно минимум 15. подобрать 2 байта с нужной конфигурацией можно, но старт-стоповые биты не уберёшь же, разве что аппаратно
карма: 19

0
Ответов: 8926
Рейтинг: 823
#33: 2023-03-09 17:38:26 ЛС | профиль | цитата
zhorik5, вспомнил (давно не работал с COM портом), что порт для сохранения синхронизации в случае, когда подряд идут "0" или "1", меняет полярность. Не удержался и таки проверил. Для получения вашего BREAK можно передать символ "я" (FF в шестнадцатеричном коде), порт вместо 8 единиц передаст 8 нулей, хотя и не 11, но попробуйте, т.е. ваши команды должны начинаться с FF55хххххх. Посмотрите осциллограммы (настоящие, на настоящем осциллографе )
01.jpg
FF.jpg
карма: 19

0
Ответов: 495
Рейтинг: 163
#34: 2023-03-09 21:18:01 ЛС | профиль | цитата
zhorik5, как-то давно тоже нужно было отправлять сообщение в не стандартизированное оборудование (свой протокол) благо скорость была не большая и пакет маленький..) воспользовался (извращённым методом ) через DTR com Porta. Набросок примера.)
Пример
Осцил
zhorik5, а передача через LIN трансивер?

Редактировалось 1 раз(а), последний 2023-03-10 00:04:10
карма: 4

0
Ответов: 197
Рейтинг: 2
#35: 2023-03-10 00:10:40 ЛС | профиль | цитата
Леонид писал(а):
можно передать символ "я" (FF в шестнадцатеричном коде), порт вместо 8 единиц передаст 8 нулей, хотя и не 11

описание в протоколе гласит что длина поля BREAK должна быть от 13 нулевых бит до 30.
13 нулевых бит это минимум. Да, тут кроме как аппаратно понижать уровень сигнала.

tig-rrr писал(а):
через DTR com Porta.

после совета Леонида разве что аппаратно
я тоже об этом способе подумал, но не успел реализовать, времени не было. А сейчас зашел на форум и увидел ваш способ, значит так и будет! Буду пробовать.
Вот тут меня подтолкнули на мысль использовать DTR
https://www.radioradar.net/repair_electronic_technics/autoelectronic_repair/using_local_lin_car.html



Описание Осцилограммы

Заголовок состоит из четырех частей:

- пауза в синхронизации;

- окончание синхронизации;

- поле синхронизации;

- поле идентификатора.

Опишем каждую из них.

Пауза в синхронизации (synch break)

Представляет собой не менее 13-ти битов, пересылаемых доминантным уровнем, что в вычислительной технике расценивается как передача не менее 13-ти "нулей". Блоки LIN Slave имеют возможность настроиться на прием телеграммы, ибо в тексте самой телеграммы не может быть подобной информации и столь долгая передача только доминантного уровня подсказывает блокам, что после этого поля последуют другие.

Окончание синхронизации (synch delimiter)

Эта часть передается рецессивным уровнем (около 12 В), что соответствует передаче "единицы" и сообщает блокам LIN Slave о том, что пауза закончилась и необходимо приготовиться к синхронизации.

Поле синхронизации (synch field)
Эта часть заголовка служит для непосредственной настройки блоков LIN Slave на работу с блоком управления LIN Master. Поле состоит из последовательности доминантных и рецессивных битов, то есть последовательности "нулей" и "единиц". Таким образом синхронизируется частота, на которой блоки LIN Slave должны работать по шине LIN, принять поле идентификатора и последующие за ним данные.

Поле идентификатора

Это поле состоит из восьми бит. В первых 6-ти битах передаются адрес блока LIN Slave для его опознавания (идентификации) и количество полей для передачи данных, отведенных для ответа (от 0 до 8). Два оставшихся бита предназначены для передачи контрольной суммы. Контрольная сумма вычисляется согласно определенному алгоритму и необходима для того, чтобы избежать ошибок в передаче. При совпадении контрольной суммы оборудование считает что информация передана корректно.

Редактировалось 5 раз(а), последний 2023-03-10 00:18:03
карма: 0

0
Ответов: 495
Рейтинг: 163
#36: 2023-03-10 00:46:28 ЛС | профиль | цитата
zhorik5 писал(а):
Буду пробовать.

zhorik5, к сожалению управление через DTR, RTS медленное и не стабильное, скорости может не хватит...
карма: 4

0
Ответов: 197
Рейтинг: 2
#37: 2023-03-10 02:41:04 ЛС | профиль | цитата
tig-rrr писал(а):
к сожалению управление через DTR, RTS медленное и не стабильное, скорости может не хватит...

шина LIN тоже не резкая.
у меня получилось следующее
Add(MainForm,2953706,21,105)
{
Width=384
Height=315
Point(onClose)
link(onCreate,15332512:doOpen,[])
link(onClose,15332512:doClose,[])
}
Add(COMEX,15332512,588,119)
{
Port=1
Point(onDCD)
Point(onError)
Point(doDTR)
link(onRead,14951341:doAdd,[(778,132)(778,251)])
link(onError,5336595:doMessage,[])
}
Add(ListBox,14951341,791,245)
{
Left=25
Top=55
Width=135
Height=190
}
Add(Message,5336595,637,147)
{
}
Add(Timer,10079860,28,245)
{
Interval=300
link(onTimer,2331623:doNext,[])
}
Add(CounterEx,2331623,154,245)
{
Max=30
Point(doReset)
link(onNext,9000179:doCompare,[])
}
Add(If_else,9000179,203,245)
{
Op2=Integer(100)
link(onTrue,14133347:doEvent1,[])
link(onFalse,1512863:doEvent1,[(245,258)(245,181)])
}
Add(Hub,14133347,252,245)
{
link(onEvent1,2331623:doReset,[(278,251)(278,226)(144,226)(144,258)])
link(onEvent2,14951341:doClear,[])
}
Add(Edit,13882260,483,84)
{
Left=20
Top=20
Width=85
Text="55"
DataType=2
}
Add(StreamConvertor,13168833,483,133)
{
Mode=3
Point(Data)
link(onResult,15332512:doWrite,[])
link(Data,13882260:Text,[])
}
Add(Hub,1512863,252,175)
{
OutCount=3
link(onEvent1,3935071:doData,[(350,181)(350,195)])
link(onEvent2,11600006:doSleep,[(326,188)(326,237)])
link(onEvent3,2970458:doSleep,[(350,195)(350,146)])
}
Add(DoData,3935071,434,189)
{
Data=Integer(0)
link(onEventData,16605609:doEvent1,[])
}
Add(DoData,11325171,434,224)
{
Data=Integer(1)
link(onEventData,16605609:doEvent2,[(490,229)(522,230)(522,202)])
}
Add(Hub,16605609,532,189)
{
InCount=2
link(onEvent1,15332512:doDTR,[(562,195)(562,146)])
}
Add(Sleep,2970458,434,133)
{
Delay=50
link(onSleep,13168833:doConvert,[])
}
Add(Sleep,11600006,385,224)
{
Delay=5000
link(onSleep,11325171:doData,[])
}


в схему пришлось добавить транзистор кт3102 был просто под рукой. сигналом DTR я через транзистор подтягиваю TXD к земле. и впринцепи сигнал стал похожим на то что требуется. в реальной работе еще не проверял.Но кажется иду верной дорогой.
вот что получилось

а это установленный параметр анализ шины lin в анализаторе.

Все четко!

Редактировалось 1 раз(а), последний 2023-03-10 02:47:00
карма: 0

0
Ответов: 197
Рейтинг: 2
#38: 2024-11-17 22:25:20 ЛС | профиль | цитата
И снова здравствуйте, сварганил одну приблуду и хотелось бы ее сделать более человеколюбивой, и по классике жанра не знаю куда копать.


Add(MainForm,2953706,161,224)
{
Width=347
Height=149
Caption="RemPowerControl"
Point(onClose)
Point(doWidth)
Point(doHeight)
link(onCreate,13959214:doEvent1,[(240,244)(240,307)])
}
Add(Button,3086356,623,567)
{
Left=100
Top=85
Width=95
Visible=1
Caption="Power_on"
Data=String(Power_on)
Point(doVisible)
link(onClick,10925069:doEvent2,[(671,573)(671,538)])
}
Add(Button,12094308,616,448)
{
Left=230
Top=85
Width=95
Visible=1
Caption="Power_off"
Data=String(Power_off)
Point(doVisible)
link(onClick,14351558:doEvent1,[])
}
Add(COMEX,15461939,483,476)
{
Point(onDCD)
Point(onOpen)
Point(doDTR)
Point(doRTS)
Point(doRXClear)
Point(onError)
Point(onClose)
link(Port,3611942:Var,[])
link(onDCD,6630792:doEvent,[(604,503)(604,524)])
link(onOpen,14573883:doOn,[(537,510)(537,524)])
link(onError,13281352:doEvent1,[(523,517)(523,482)])
link(onClose,14573883:doOff,[(537,524)(537,517)])
}
Add(LED,1038873,791,483)
{
Left=200
Top=60
Blick=1
ColorOff=8421504
}
Add(IndexToChanel,6630792,623,518)
{
link(onEvent1,10925069:doEvent1,[(671,524)(671,531)])
link(onEvent2,14351558:doEvent2,[(667,531)(667,461)])
}
Add(Message,2898214,1141,476)
{
Message="Не возможно открыть Com port"
Caption="Com port"
Icon=4
}
Add(DoData,14995888,791,434)
{
Data=String(Power_off)
}
Add(DoData,16676006,763,553)
{
Data=String(Power_on)
}
Add(Hub,14351558,679,448)
{
InCount=2
OutCount=3
link(onEvent1,14995888:doData,[(700,454)(700,440)])
link(onEvent2,1038873:doOff,[(745,461)(745,496)])
link(onEvent3,7959721:doData,[(739,468)(739,692)])
}
Add(Hub,10925069,686,525)
{
InCount=2
OutCount=3
link(onEvent1,16676006:doData,[(718,531)(718,559)])
link(onEvent2,1038873:doOn,[(746,538)(746,503)])
link(onEvent3,16425085:doData,[(742,545)(742,650)])
}
Add(LED,14573883,560,504)
{
Left=200
Top=10
Blick=1
ColorOn=65280
ColorOff=8421504
}
Add(CheckBox,11345511,532,630)
{
Left=10
Top=85
Width=85
Caption="Manual Mode"
link(onCheck,6580948:doEvent1,[(580,636)(580,573)])
}
Add(Hub,6580948,588,567)
{
link(onEvent1,3086356:doVisible,[])
link(onEvent2,12094308:doVisible,[(614,580)(614,606)(837,606)(837,423)(577,423)(577,454)])
}
Add(Button,13973615,273,469)
{
Left=230
Top=5
Width=95
Height=25
Caption="Открыть порты"
link(onClick,6245660:doEvent2,[])
}
Add(EnumCOM,4795209,322,301)
{
link(onEnumPorts,15879246:doEvent1,[])
}
Add(Hub,6245660,329,462)
{
InCount=2
OutCount=5
link(onEvent1,8981816:doEvent1,[(357,468)(357,377)])
link(onEvent2,14055846:In,[])
link(onEvent3,15461939:doOpen,[])
link(onEvent4,14204440:In,[])
}
Add(Button,12548643,311,574)
{
Left=230
Top=35
Width=95
Height=25
Caption="Закрыть порты"
link(onClick,10338042:doEvent2,[(357,580)(357,559)])
}
Add(ComboBox,15281610,413,315)
{
Left=100
Top=10
Width=95
Height=21
Text="ComPortSens"
DropDownCount=15
Point(Index)
Point(doSelect)
}
Add(GetIndexData,3611942,483,420)
{
link(Data1,7708773:GetData,[])
}
Add(DoData,13113386,420,420)
{
link(onEventData,3611942:doIndex,[])
}
Add(Delete,7374699,420,371)
{
Count=3
link(onDelete,7708773:doData,[])
link(Str,15281610:String,[])
}
Add(EventFromData,7708773,483,371)
{
}
Add(Button,5619865,112,280)
{
Left=100
Top=60
Width=95
Caption="Обновить"
link(onClick,9961641:doEvent1,[])
}
Add(Hub,9961641,168,280)
{
OutCount=6
link(onEvent1,8153651:In,[])
link(onEvent3,4446351:In,[])
link(onEvent4,14485693:In,[])
link(onEvent5,13959214:doEvent2,[])
}
Add(Hub,13959214,287,301)
{
InCount=2
OutCount=1
link(onEvent1,4795209:doEnumPorts,[])
}
Add(Hub,10338042,371,546)
{
InCount=2
link(onEvent1,15461939:doClose,[(424,552)(424,489)])
link(onEvent2,5295513:In,[(399,559)(399,566)])
}
Add(LineBreak,4787817,308,546)
{
link(Out,10338042:doEvent1,[])
Primary=[8153651,-112,-266]
}
Add(COMEX,14266388,1008,616)
{
Point(onDCD)
Point(onOpen)
Point(doDTR)
Point(doRTS)
Point(doRXClear)
Point(onError)
Point(onClose)
link(Port,7117122:Var1,[])
link(onOpen,2564288:doOn,[(1072,650)(1072,660)])
link(onError,13281352:doEvent2,[(1066,657)(1066,489)])
link(onClose,2564288:doOff,[(1072,664)(1072,653)])
}
Add(StreamConvertor,2547758,896,651)
{
Mode=3
link(onResult,14266388:doWrite,[(968,657)(968,636)])
}
Add(Hub,13479268,854,651)
{
InCount=2
OutCount=1
link(onEvent1,2547758:doConvert,[])
}
Add(DoData,16425085,784,644)
{
Data=String(A00101A2)
link(onEventData,13479268:doEvent1,[(835,650)(835,657)])
}
Add(DoData,7959721,784,686)
{
Data=String(A00100A1)
link(onEventData,13479268:doEvent2,[(835,692)(835,664)])
}
Add(ComboBox,347233,1001,490)
{
Left=100
Top=35
Width=95
Height=21
Text="ComPort Relay"
Point(Text)
Point(Data)
Point(Index)
}
Add(LineBreak,1458761,889,609)
{
link(Out,14266388:doClose,[(925,615)(925,629)])
Primary=[5295513,-476,-49]
}
Add(LineBreak,10037001,889,588)
{
link(Out,14266388:doOpen,[(995,594)(995,622)])
Primary=[14204440,-525,-105]
}
Add(Hub,15879246,378,301)
{
link(onEvent1,347233:doAdd,[(969,307)(969,496)])
link(onEvent2,15281610:doAdd,[(399,314)(399,321)])
}
Add(LineBreak,234941,938,497)
{
link(Out,347233:doClear,[])
Primary=[14485693,-742,-196]
}
Add(MultiElement,7117122,1008,546)
{
link(Data1,347233:String,[])
}
BEGIN_SDK
Add(EditMulti,8722527,21,21)
{
WorkCount=1
DataCount=1
VarCount=1
Width=1133
Height=844
link(doWork1,6684048:doEvent1,[(115,27)(115,258)])
link(Var1,15841810:Var,[(27,595)(398,595)])
}
Add(GetIndexData,15841810,392,294)
{
link(Data1,1214412:GetData,[(398,275)(391,275)])
}
Add(DoData,11077331,322,294)
{
link(onEventData,15841810:doIndex,[])
}
Add(Delete,10817791,322,196)
{
Count=3
link(onDelete,1214412:doData,[])
link(Str,8722527:Data1,[(328,108)(27,108)])
}
Add(EventFromData,1214412,385,196)
{
}
Add(Hub,6684048,210,252)
{
link(onEvent1,10817791:doDelete,[(273,258)(273,202)])
link(onEvent2,11077331:doData,[(273,265)(273,300)])
}
END_SDK
Add(Hub,8981816,371,371)
{
OutCount=3
link(onEvent1,7374699:doDelete,[])
link(onEvent2,13113386:doData,[(399,384)(399,426)])
}
Add(LineBreak,6004050,959,546)
{
link(Out,7117122:doWork1,[])
Primary=[14055846,-602,-77]
}
Add(Hub,13281352,1092,476)
{
InCount=2
link(onEvent1,2898214:doMessage,[])
}
Add(LED,2564288,1083,640)
{
Left=200
Top=35
Blick=1
ColorOn=65280
ColorOff=8421504
}
Add(LineBreak,16596305,357,322)
{
link(Out,15281610:doClear,[])
Primary=[4446351,-161,-28]
}



Отсюда возникает вопрос как сделать в хиасме чтобы программа сама определяла нужное устройство и выбирала его в своем месте.
принцип работы программы примитивный сенсор ловит нужный сигнал и передает его на реле. только каждый раз при запуске ПО приходится выбирать COM порты а их как назло иногда2 десятка и они временами почему-то меняются.
Логически я примерно представляю что нужно опросить каждый ком порт на свойства и какие то уникальные характеристики и выбрать нужный. Но как, если это обычные USB-com переходники китайского производства.
карма: 0

0
Ответов: 8926
Рейтинг: 823
#39: 2024-11-18 11:01:27 ЛС | профиль | цитата
zhorik5, чтобы опознать устройство, оно должно быть чуть сложнее, чем реле. При запуске программы можно опросить все найденные порты заранее установленным кодом, например "31415926", а устройство должно ответить, например "27182818284590"
карма: 19

0
Ответов: 793
Рейтинг: 168
#40: 2024-11-18 13:23:21 ЛС | профиль | цитата
zhorik5 писал(а):
возникает вопрос как сделать в хиасме чтобы программа сама определяла нужное устройство и выбирала его в своем месте

Если тебе известно одно из: название порта, производитель, сервис, работающий с портом, VID\PID то можно без труда найти и номер порта.

Add(MainForm,2953706,98,98)
{
link(onCreate,9881560:doConsoleExec,[])
}
Add(WinExec,9881560,147,98)
{
FileName="powershell"
Param="-command (Get-WmiObject Win32_PnPEntity -Filter """Name LIKE '%com%'""" | Where Name -match 'COM\d+' | Select-Object Name,Description,Manufacturer,PNPClass,Service,Present,Status,DeviceID | Sort-Object Name | Out-GridView -Title 'Список COM портов' -Wait)"
Mode=0
Point(doConsoleExec)
Point(onConsoleTerminate)
link(onConsoleTerminate,2953706:doClose,[(186,118)(186,139)(88,139)(88,125)])
}

карма: 16

0
Ответов: 197
Рейтинг: 2
#41: 2024-11-18 20:17:07 ЛС | профиль | цитата
Леонид писал(а):
zhorik5, чтобы опознать устройство, оно должно быть чуть сложнее, чем реле. При запуске программы можно опросить все найденные порты заранее установленным кодом, например "31415926", а устройство должно ответить, например "27182818284590"

Вариант, но загвоздка в том что это просто переходники usb comm (CH340) просто один нюхает сигнал а другой(реле- но тот же ch340) а данная китайчатина даже не имеет в себе встроенного еепром на который я возлагал надежды. Есть и другие переходники типа PL2003 и cp2102.
PL2003 в вин10,11 имеет проблемы с драйверами(я в данный момент использую win7). CP2102 вроде бы подходит под все параметры не имея в общем то проблем (даже есть встроеный еепром), но имеет ряд неудобств(неудобно паять контакты очень маленькие(тремор и зрение подводит) и низкий логический уровень)
и как его(CP2102) опросить на тот же самый серийный номер или vid\pid хрен его знает не догоняю, в даташите что-то не сильно ясно. Получается надо действовать через ОС эти данные как-то вытягивать из винды.
В двух словах на данных USB-COM никакого умного устройства на линии RX-TX не висит что бы могло ответить и на основе его ответа определить принадлежность.
Было бы круто если компонент EnumCOM выводил дополнительные данные об устройствах. Исключило бы кучу вот этих непонятных вопросов.

--- Добавлено в 2024-11-18 20:22:22

Gunta писал(а):

zhorik5 писал(а):
возникает вопрос как сделать в хиасме чтобы программа сама определяла нужное устройство и выбирала его в своем месте

Если тебе известно одно из: название порта, производитель, сервис, работающий с портом, VID\PID то можно без труда найти и номер порта.



Add(MainForm,2953706,98,98)
{
link(onCreate,9881560:doConsoleExec,[])
}
Add(WinExec,9881560,147,98)
{
FileName="powershell"
Param="-command (Get-WmiObject Win32_PnPEntity -Filter """Name LIKE '%com%'""" Where Name -match 'COM\d+' | Select-Object Name,Description,Manufacturer,PNPClass,Service,Present,Status,DeviceID | Sort-Object Name | Out-GridView -Title 'Список COM портов' -Wait)"
Mode=0
Point(doConsoleExec)
Point(onConsoleTerminate)
link(onConsoleTerminate,2953706:doClose,[(186,118)(186,139)(88,139)(88,125)])
}

Я уже перед сном нашел это вариант на просторах интернета думал сегодня копнуть в этом направлении подсказка хорошая спасибо, но пример не работает!
а через CMD и команду MODE выдает безполезную информацию на основе нее не возможно правильно определить требуемое устройство

Редактировалось 4 раз(а), последний 2024-11-18 20:30:28
карма: 0

0
Ответов: 793
Рейтинг: 168
#42: 2024-11-18 21:47:39 ЛС | профиль | цитата
zhorik5, Сделал тоже самое но на VBJScript


Add(MainForm,2953706,77,119)
{
link(onCreate,2575197:dowork,[])
}
Add(VBJScript,2575197,133,133)
{
WorkPoints=#6:dowork|
EventPoints=#8:onEvents|
Script=#23:Sub doWork(Data, Index)|22: On Error Resume Next|58: Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")|102: Set colItems = objWMIService.ExecQuery("Select * from Win32_PnPEntity WHERE Name LIKE '%(COM%'",,48)|30: For Each objItem in colItems|207: sys.onEvents objItem.Name & ";" & objItem.Description & ";" & objItem.Manufacturer & ";" & objItem.PNPClass & ";" & objItem.Service & ";" & objItem.Present & ";" & objItem.Status & ";" & objItem.DeviceID|11: Next |7:End Sub|
UseName=0
link(onEvents,16357700:doAdd,[])
}
Add(StringTable,16357700,189,133)
{
Left=290
Top=140
Align=5
Columns=#4:Name|11:Description|12:Manufacturer|8:PNPClass|7:Service|7:Present|6:Status|8:DeviceID|
}

карма: 16

0
Ответов: 197
Рейтинг: 2
#43: 2024-11-18 23:51:02 ЛС | профиль | цитата
не работает
Gunta писал(а):
Сделал тоже самое но на VBJScript



--- Добавлено в 2024-11-18 23:54:47

кстати Get-WmiObject Win32_SerialPort повершелл отдает только один ком порт это COM1 остальные почему-то не видит

Редактировалось 2 раз(а), последний 2024-11-18 23:55:21
карма: 0

0
Ответов: 793
Рейтинг: 168
#44: 2024-11-19 05:44:29 ЛС | профиль | цитата
zhorik5 писал(а):
не работает

Не знаю, чем тебе помочь. У меня обе схемы работают и правильно показывают все устройства.



P.S. и я не использую Get-WmiObject Win32_SerialPort в своих схемах.
карма: 16

0
Ответов: 315
Рейтинг: 26
#45: 2024-11-19 11:36:51 ЛС | профиль | цитата
Пробуйте.
ClassGUID на COM порты указан {4D36E978-E325-11CE-BFC1-08002BE10318}, найдите свой в реестре и пропишите, соблюдая верхний регистр, возможно и так будет работать.
Ниже выкладываю ClassGUID для разных устройств.

Add(MT_MultiData,10647904,294,84)
{
Count=6
link(onData1,1367495:doValue,[(396,90)(396,69)])
link(onData4,6537841:doValue,[(452,111)(452,69)])
link(onData6,14079099:doCompare,[])
}
Add(MainForm,2953706,21,105)
{
Width=583
Height=102
}
Add(Button,13268274,98,77)
{
Left=12
Top=21
Width=95
Height=21
Caption="Read ports"
link(onClick,2823127:doEvent1,[])
}
Add(ComboBox,909550,546,84)
{
Left=110
Top=21
Width=363
Height=21
Text=""
DataType=1
ReadOnly=0
link(onClick,9099605:doSearch,[])
link(Str,6537841:Value,[(552,72)(517,72)(517,107)(482,107)])
}
Add(BlockFind,9099605,602,91)
{
IncludeBlock=1
StartBlock="("
EndBlock=")"
link(onSearch,16604913:doText,[])
}
Add(DeviceInfo,2486460,245,84)
{
NotEmptyInfo=1
link(onEnumDevice,10647904:doSeparateMT,[])
link(onDevChange,15766868:doDeferredEvent,[(284,111)(284,153)(151,153)(151,90)])
}
Add(Hub,2823127,210,77)
{
InCount=2
link(onEvent1,909550:doClear,[(385,83)(385,97)])
link(onEvent2,2486460:doEnumDevice,[])
}
Add(If_else,14079099,350,119)
{
link(onTrue,13020427:doCompare,[])
link(Op1,7842516:Value,[])
}
Add(DeferredEvent,15766868,161,84)
{
link(onDeferredEvent,2823127:doEvent2,[])
}
Add(Memory,1367495,413,63)
{
}
Add(If_else,13020427,406,119)
{
Type=5
Op1=Integer(-1)
link(onTrue,909550:doAdd,[(492,125)(492,90)])
link(Op2,1367495:Value,[])
}
Add(Memory,6537841,476,63)
{
}
Add(Memory,7842516,350,49)
{
Default=String({4D36E978-E325-11CE-BFC1-08002BE10318})
}
Add(Label,16604913,679,91)
{
Left=488
Top=24
Caption=""
AutoSize=1
}


ClassGUID
Device categories and class values
Audio Processing Objects (APOs)
Class = AudioProcessingObject
ClassGuid = {5989fce8-9cd0-467d-8a6a-5419e31529d4}
This class includes Audio processing objects (APOs). For more info, see Windows Audio Processing Objects.

Battery Devices
Class = Battery
ClassGuid = {72631e54-78a4-11d0-bcf7-00aa00b7b32a}
This class includes battery devices and UPS devices.

Biometric Device
Class = Biometric
ClassGuid = {53D29EF7-377C-4D14-864B-EB3A85769359}
(Windows Server 2003 and later versions of Windows) This class includes all biometric-based personal identification devices.

Bluetooth Devices
Class = Bluetooth
ClassGuid = {e0cbf06c-cd8b-4647-bb8a-263b43f0f974}
(Windows XP SP1 and later versions of Windows) This class includes all Bluetooth devices.

Camera Device
Class = Camera
ClassGuid = {ca3e7ab9-b4c3-4ae6-8251-579ef933890f}
(Windows 10 version 1709 and later versions of Windows) This class includes universal camera drivers.

CD-ROM Drives
Class = CDROM
ClassGuid = {4d36e965-e325-11ce-bfc1-08002be10318}
This class includes CD-ROM drives, including SCSI CD-ROM drives. By default, the system's CD-ROM class installer also installs a system-supplied CD audio driver and CD-ROM changer driver as Plug and Play filters.

Disk Drives
Class = DiskDrive
ClassGuid = {4d36e967-e325-11ce-bfc1-08002be10318}
This class includes hard disk drives. See also the HDC and SCSIAdapter classes.

Display Adapters
Class = Display
ClassGuid = {4d36e968-e325-11ce-bfc1-08002be10318}
This class includes video adapters. Drivers for this class include display drivers and video miniport drivers.

Extension INF
Class = Extension
ClassGuid = {e2f84ce7-8efa-411c-aa69-97454ca4cb57}
(Windows 10 and later versions of Windows) This class includes all devices requiring customizations. For more details, see Using an Extension INF File.

Floppy Disk Controllers
Class = FDC
ClassGuid = {4d36e969-e325-11ce-bfc1-08002be10318}
This class includes floppy disk drive controllers.

Floppy Disk Drives
Class = FloppyDisk
ClassGuid= {4d36e980-e325-11ce-bfc1-08002be10318}
This class includes floppy disk drives.

Hard Disk Controllers
Class = HDC
ClassGuid = {4d36e96a-e325-11ce-bfc1-08002be10318}
This class includes hard disk controllers, including ATA/ATAPI controllers but not SCSI and RAID disk controllers.

Human Interface Devices (HID)
Class = HIDClass
ClassGuid = {745a17a0-74d3-11d0-b6fe-00a0c90f57da}
This class includes interactive input devices that are operated by the system-supplied HID class driver. This includes USB devices that comply with the USB HID Standard and non-USB devices that use a HID minidriver. For more information, see HIDClass Device Setup Class. (See also the Keyboard or Mouse classes later in this list.)

IEEE 1284.4 Devices
Class = Dot4
ClassGuid = {48721b56-6795-11d2-b1a8-0080c72e74a2}
This class includes devices that control the operation of multifunction IEEE 1284.4 peripheral devices.

IEEE 1284.4 Print Functions
Class = Dot4Print
ClassGuid = {49ce6ac8-6f86-11d2-b1e5-0080c72e74a2}
This class includes Dot4 print functions. A Dot4 print function is a function on a Dot4 device and has a single child device, which is a member of the Printer device setup class.

IEEE 1394 Devices That Support the 61883 Protocol
Class = 61883
ClassGuid = {7ebefbc0-3200-11d2-b4c2-00a0C9697d07}
This class includes IEEE 1394 devices that support the IEC-61883 protocol device class.

The 61883 component includes the 61883.sys protocol driver that transmits various audio and video data streams over the 1394 bus. These currently include standard/high/low quality DV, MPEG2, DSS, and Audio. These data streams are defined by the IEC-61883 specifications.

IEEE 1394 Devices That Support the AVC Protocol
Class = AVC
ClassGuid = {c06ff265-ae09-48f0-812c-16753d7cba83}
This class includes IEEE 1394 devices that support the AVC protocol device class.

IEEE 1394 Devices That Support the SBP2 Protocol
Class = SBP2
ClassGuid = {d48179be-ec20-11d1-b6b8-00c04fa372a7}
This class includes IEEE 1394 devices that support the SBP2 protocol device class.

IEEE 1394 Host Bus Controller
Class = 1394
ClassGuid = {6bdd1fc1-810f-11d0-bec7-08002be2092f}
This class includes 1394 host controllers connected on a PCI bus, but not 1394 peripherals. Drivers for this class are system-supplied.

Imaging Device
Class = Image
ClassGuid = {6bdd1fc6-810f-11d0-bec7-08002be2092f}
This class includes still-image capture devices, digital cameras, and scanners.

IrDA Devices
Class = Infrared
ClassGuid = {6bdd1fc5-810f-11d0-bec7-08002be2092f}
This class includes infrared devices. Drivers for this class include Serial-IR and Fast-IR NDIS miniports, but see also the Network Adapter class for other NDIS network adapter miniports.

Keyboard
Class = Keyboard
ClassGuid = {4d36e96b-e325-11ce-bfc1-08002be10318}
This class includes all keyboards. That is, it must also be specified in the (secondary) INF for an enumerated child HID keyboard device.

Media Changers
Class = MediumChanger
ClassGuid = {ce5939ae-ebde-11d0-b181-0000f8753ec4}
This class includes SCSI media changer devices.

Memory Technology Driver
Class = MTD
ClassGuid = {4d36e970-e325-11ce-bfc1-08002be10318}
This class includes memory devices, such as flash memory cards.

Modem
Class = Modem
ClassGuid = {4d36e96d-e325-11ce-bfc1-08002be10318}
This class includes modem devices. An INF file for a device of this class specifies the features and configuration of the device and stores this information in the registry. An INF file for a device of this class can also be used to install device drivers for a controllerless modem or a software modem. These devices split the functionality between the modem device and the device driver. For more information about modem INF files and Microsoft Windows Driver Model (WDM) modem devices, see Overview of Modem INF Files and Adding WDM Modem Support.

Monitor
Class = Monitor
ClassGuid = {4d36e96e-e325-11ce-bfc1-08002be10318}
This class includes display monitors. An INF for a device of this class installs no device driver(s), but instead specifies the features of a particular monitor to be stored in the registry for use by drivers of video adapters. (Monitors are enumerated as the child devices of display adapters.)

Mouse
Class = Mouse
ClassGuid = {4d36e96f-e325-11ce-bfc1-08002be10318}
This class includes all mouse devices and other kinds of pointing devices, such as trackballs. That is, this class must also be specified in the (secondary) INF for an enumerated child HID mouse device.

Multifunction Devices
Class = Multifunction
ClassGuid = {4d36e971-e325-11ce-bfc1-08002be10318}
This class includes combo cards, such as a PCMCIA modem and netcard adapter. The driver for such a Plug and Play multifunction device is installed under this class and enumerates the modem and netcard separately as its child devices.

Multimedia
Class = Media
ClassGuid = {4d36e96c-e325-11ce-bfc1-08002be10318}
This class includes Audio and DVD multimedia devices, joystick ports, and full-motion video capture devices.

Multiport Serial Adapters
Class = MultiportSerial
ClassGuid = {50906cb8-ba12-11d1-bf5d-0000f805f530}
This class includes intelligent multiport serial cards, but not peripheral devices that connect to its ports. It does not include unintelligent (16550-type) multiport serial controllers or single-port serial controllers (see the Ports class).

Network Adapter
Class = Net
ClassGuid = {4d36e972-e325-11ce-bfc1-08002be10318}
This class consists of network adapter drivers. These drivers must either call NdisMRegisterMiniportDriver or NetAdapterCreate. Drivers that do not use NDIS or NetAdapter should use a different setup class.

Network Client
Class = NetClient
ClassGuid = {4d36e973-e325-11ce-bfc1-08002be10318}
This class includes network and/or print providers.

Note NetClient components are deprecated in Windows 8.1, Windows Server 2012 R2, and later.

Network Service
Class = NetService
ClassGuid = {4d36e974-e325-11ce-bfc1-08002be10318}
This class includes network services, such as redirectors and servers.

Network Transport
Class = NetTrans
ClassGuid = {4d36e975-e325-11ce-bfc1-08002be10318}
This class includes NDIS protocols CoNDIS stand-alone call managers, and CoNDIS clients, in addition to higher level drivers in transport stacks.

PCI SSL Accelerator
Class = SecurityAccelerator
ClassGuid = {268c95a1-edfe-11d3-95c3-0010dc4050a5}
This class includes devices that accelerate secure socket layer (SSL) cryptographic processing.

PCMCIA Adapters
Class = PCMCIA
ClassGuid = {4d36e977-e325-11ce-bfc1-08002be10318}
This class includes PCMCIA and CardBus host controllers, but not PCMCIA or CardBus peripherals. Drivers for this class are system-supplied.

Ports (COM & LPT ports)
Class = Ports
ClassGuid = {4d36e978-e325-11ce-bfc1-08002be10318}
This class includes serial and parallel port devices. See also the MultiportSerial class.

Printers
Class = Printer
ClassGuid = {4d36e979-e325-11ce-bfc1-08002be10318}
This class includes printers.

Printers, Bus-specific class drivers
Class = PNPPrinters
ClassGuid = {4658ee7e-f050-11d1-b6bd-00c04fa372a7}
This class includes SCSI/1394-enumerated printers. Drivers for this class provide printer communication for a specific bus.

Processors
Class = Processor
ClassGuid = {50127dc3-0f36-415e-a6cc-4cb3be910b65}
This class includes processor types.

SCSI and RAID Controllers
Class = SCSIAdapter
ClassGuid = {4d36e97b-e325-11ce-bfc1-08002be10318}
This class includes SCSI HBAs (Host Bus Adapters) and disk-array controllers.

Security Devices Class = Securitydevices
ClassGuid = {d94ee5d8-d189-4994-83d2-f68d7d41b0e6}
(Windows 8.1, Windows 10) This class includes Trusted Platform Module chips. A TPM is a secure crypto-processor that helps you with actions such as generating, storing, and limiting the use of cryptographic keys. Any new manufactured device must implement and enable TPM 2.0 by default. For more information, see TPM Recommendations.

Sensors
Class = Sensor
ClassGuid = {5175d334-c371-4806-b3ba-71fd53c9258d}
(Windows 7 and later versions of Windows) This class includes sensor and location devices, such as GPS devices.

Smart Card Readers
Class = SmartCardReader
ClassGuid = {50dd5230-ba8a-11d1-bf5d-0000f805f530}
This class includes smart card readers.

Software Component
Class = SoftwareComponent
ClassGuid = {5c4c3332-344d-483c-8739-259e934c9cc8}
(Windows 10 version 1703 and later versions of Windows) This class includes virtual child device to encapsulate software components. For more details, see Adding Software Components with an INF file.

Storage Volumes
Class = Volume
ClassGuid = {71a27cdd-812a-11d0-bec7-08002be2092f}
This class includes storage volumes as defined by the system-supplied logical volume manager and class drivers that create device objects to represent storage volumes, such as the system disk class driver.

System Devices
Class = System
ClassGuid = {4d36e97d-e325-11ce-bfc1-08002be10318}
This class includes HALs, system buses, system bridges, the system ACPI driver, and the system volume manager driver.

Tape Drives
Class = TapeDrive
ClassGuid = {6d807884-7d21-11cf-801c-08002be10318}
This class includes tape drives, including all tape miniclass drivers.

USB Device
Class = USBDevice
ClassGuid = {88BAE032-5A81-49f0-BC3D-A4FF138216D6}
USBDevice includes all USB devices that do not belong to another class. This class is not used for USB host controllers and hubs.

Windows CE USB ActiveSync Devices
Class = WCEUSBS
ClassGuid = {25dbce51-6c8f-4a72-8a6d-b54c2b4fc835}
This class includes Windows CE ActiveSync devices.

The WCEUSBS setup class supports communication between a personal computer and a device that is compatible with the Windows CE ActiveSync driver (generally, PocketPC devices) over USB.

Windows Portable Devices (WPD)
Class = WPD
ClassGuid = {eec5ad98-8080-425f-922a-dabf3de3f69a}
(Windows Vista and later versions of Windows) This class includes WPD devices.

Редактировалось 4 раз(а), последний 2024-11-19 15:39:10
карма: 2
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)