alexxx033 писал(а):как открыть СОМ порт
alexxx033 писал(а):как его прослушивать, как читать данные
alexxx033 писал(а):как читать данные по протоколу Pelco-D и принимать их по RS-485
alexxx033 писал(а):Могу подробнее. Нужен код открытия сом порта, чтения его и передача сигнала по протоколу Pelco-D
Dim Data As String
MSComm1.CommPort = 1
MSComm1.PortOpen = True '/*открытие*/
MSComm1.Settings = "9600,n,8,1" 'скорость 9600 бит/сек, без паритета, 8 бит в симв/, 1 стоп.
Data = MSComm1.Input '/*чтение*/
MSComm1.Output = ConvertToPelcoProtoco("Hello") ' /*передача*/
MSComm1.DTREnable = True
MSComm1.PortOpen = False
Прочитал с интересом, раньше этим никогда не интересовался (не надо было). А тут просто прочитал с интересом. Изложено обстоятельно и подробно, кроме всего прочего понятно и самое главное - на русском .ark писал(а):Подробно
ger_kar писал(а):Изложено обстоятельно
Ну я обычно для работы с файлами пользуюсь либо встроенными VB шными средствами, либо FSO, WinAPI не использовал ни разу, а тут посмотрел и на такую реализации, так сказать до кучи .Хакер писал(а):Интересно, те, кто это писал, в курсе, что в VB вместо CreateFile можно использовать обыкновенное VB-шное Open ... For ... As ....
Ну ты очень суров Но, а вообще то статья хорошая, я так подробно про COM порт до этого еще нигде не читал.Хакер писал(а):И в курсе ли они, что за магические константы их надо бить поганой метлой?
ger_kar писал(а):Ну ты очень суров
ger_kar писал(а):Изложено обстоятельно
Думаю, в курсе. Думаю, они даже в курсе, что можно также пользовать Set com = fso.OpenTextFile("COM1:9600,N,8,1", ForReading), а досовские команды можно обернуть в Shell или wsh.Run. Статья не исключительно под ВБ заточена.Хакер писал(а):Интересно, те, кто это писал, в курсе, что в VB вместо CreateFile можно использовать обыкновенное VB-шное Open ... For ... As ....
Хакер писал(а):И в курсе ли они, что за магические константы их надо бить поганой метлой?
Чего ж тут магического? Ну не было у авторов задачи весь Enum от CreateFile копипастить.dwDesiredAccess- режим доступа к файлу.Это четырехбайтовое число, которое задает различные режимы доступа к файлу. Нас интересует только режим чтение и запись, этот режим задаётся числом: С0000000hex в СИ можно вместо числа записать константу с именем "GENERIC_READ|GENERIC_WRITE".
dwShareMode- режим совместного доступа. СОМ-порты ПК не поддерживают совместный доступ, только одна программа может открыть порт. Поэтому этот параметр должен быть равен 0(режим запрещен).
lpSecurityAttributes- атрибуты защиты файла. Для СОМ-портов не используется поэтому всегда равны 0 ("NULL").
dwCreationDistribution- управление режимом автосоздания файла. Это четырехбайтовое число, которое для СОМ портов всегда должно быть 00000003hex ("OPEN_EXISTING")
ark писал(а):Чего ж тут магического?
- Код: Выделить всё
Retval = CreateFile("COM1:", &HC0000000, 0, 0, 3, 0, 0)
Хакер писал(а):На месте всех этих чисел должны быть константы.
ark писал(а):Да они ж все описаны НА ЭТОЙ ЖЕ странице, а не где-то еще - я ж цитату привел. Согласен, в конечном модуле должны быть константы, но это ж куски, а не сборка.
Хакер писал(а):Константы должны быть везде. Особенно в учебном примере.
ark писал(а):HRESULT
ark писал(а):покруче ляпы на ВБ есть - Read/WriteFile lpOverlapped As Long по ссылке, однако ИМХо это частности, соринки, на которые можно заметить автору,
Хакер писал(а):NTSTATUS буду сравнивать с STATUS_SUCCESS.
Public Const STATUS_SUCCESS As Long=0
Public Const NT_SUCCESS As Long=0
Public Const ERROR_SUCCESS As Long=0
Public Const NO_ERROR As Long=0
ark писал(а): Неуж-то будете объявлять
alexxx033 писал(а):Меня интересует, вобще кто-то знает, можно ли по протоколу Pelco-D принимать данные о позиционировании камеры, или по этому протоколу можно только управлять
Devices that receive the “D” protocol may generate a response.
Хакер писал(а):Никак не иначе.
(с) не моёНе верю
alexxx033 писал(а):Нужен код , под конкретную задачу.
ark писал(а):Я имею в виду именно ВБ.
Неуж-то будете объявлятьКод:
Public Const STATUS_SUCCESS As Long=0
Public Const NT_SUCCESS As Long=0
Public Const ERROR_SUCCESS As Long=0
Public Const NO_ERROR As Long=0
Хакер писал(а):Никак не иначе.
ger_kar писал(а):Это видимо, кто как привык, кому как удобнее, мне например кажеться, что объявлять кучу констант, причем все равные нулю, а потом в передаваемых параметрах строчить длинющие имена, это извращение, расчитанное на любителя.
Хакер писал(а):Это не извращение, а правило. За его нарушение должны уволнять, а на лбу ставить клеймо «быдлокодер», чтобы никуда в другие места не приняли. Очевидно, что в голове несведущих хорошие вещи и плохие поменялись местами.
ark писал(а):особенно если речь идет о групповых проектах, но неуж-то и все переменные в венгерских нотациях объявлять?
Хакер писал(а):Я не понимаю, к чему было сказано, что VB позволяет вольности. VB позволяет использовать вместо констант волшебные числа в той же степени, что и любые другие языки.
ark писал(а):(с учетом отсутствия include)
Хакер писал(а):С учётом наличия TLB, константы объявляются один раз и на всю жизнь.
Сейчас этот форум просматривают: SemrushBot и гости: 42