OberonCore https://forum.oberoncore.ru/ |
|
CommV24, выполненный как драйвер для CommStreams https://forum.oberoncore.ru/viewtopic.php?f=90&t=20 |
Страница 2 из 2 |
Автор: | Александр Ильин [ Четверг, 13 Ноябрь, 2008 21:00 ] |
Заголовок сообщения: | Re: COM-порт |
Илья Ермаков писал(а): А USB ведь логически в Виндах как разновидность COM завиртуален? Можно так же работать? И шнуры небось спаять можно? Вот это да!Тут два вопроса: 1) можно ли к USB подключить устройство, которое будет видеться в системе как COM-порт; 2) можно ли к COM-порту подключить устройство, которое станет работать как USB. Первое решается покупкой переходника USB2COM (и, часто, установкой прилагающихся драйверов), второе не решается в принципе. Если посмотреть внутрь того же USB2COM, то там мы увидим чип, который при подаче питания по определённому протоколу представляется системе: "Привет, я - COM-порт!" В COM ничего подобного не предусмотрено, там и спрашивать никто ничего не будет: подключили - и на здоровье, делайте дальше сами что хотите. Не даром ведь при подключении мышки или флэшки система сама узнаёт, что именно за устройство подключено. На даром и фотоаппарат может флэшкой прикинуться. Там целый протокол и классификация устройств, толстая книжка про USB есть. Лучше скажите, Илья, заработал ли пример? Удалось ли что-то сделать? |
Автор: | Александр Ильин [ Четверг, 13 Ноябрь, 2008 21:05 ] |
Заголовок сообщения: | Re: COM-порт |
Axcel писал(а): Называются почему-то "нульмодемным" кабелем. "Нульмодемным" называется по числу необходимых модемов. При работе с более длинными кабелями цифровой сигнал затухает из-за сопротивления проводника. Использование модема позволяет увеличить дальность передачи.
|
Автор: | Александр Ильин [ Четверг, 13 Ноябрь, 2008 21:08 ] |
Заголовок сообщения: | Re: COM-порт |
Илья Ермаков писал(а): А USB ведь логически в Виндах как разновидность COM завиртуален? Можно так же работать? И шнуры небось спаять можно? В USB одно устройство всегда ведущее, а второе ведомое (master/slave). В принципе, можно и два компа соединить, но кто-то на нижнем уровне всё равно должен будет представляться, так что всё равно через USB2COM проще - там для этого уже специальный чип, и всё работает.
|
Автор: | Илья Ермаков [ Четверг, 13 Ноябрь, 2008 21:45 ] |
Заголовок сообщения: | Re: COM-порт |
Про модули - пока ещё не пробовал, некогда. Попробую на днях. |
Автор: | bohdant [ Четверг, 13 Ноябрь, 2008 22:35 ] |
Заголовок сообщения: | Re: COM-порт |
Илья Ермаков писал(а): А USB ведь логически в Виндах как разновидность COM завиртуален? Можно так же работать? И шнуры небось спаять можно? Что то я вопроса непонял Александр Ильин писал(а): В USB одно устройство всегда ведущее, а второе ведомое (master/slave). Ну не всегда, есть же USB OTG. Александр Ильин писал(а): В принципе, можно и два компа соединить, но кто-то на нижнем уровне всё равно должен будет представляться, так что всё равно через USB2COM проще - там для этого уже специальный чип, и всё работает. Все равно не понимаю, про что идет речь. Держал в руках(и не только) один USB-USB шнурок для связи компов, реализация довольно сложная. Я не понимаю, зачем компы через USB соеденять? Или я что то упустил?. Немного про USB2COM (самые дешевые решения): СP2101 или подобный FT232R или младьше(в младьших версиях обвязки больше) Дешево и сердито ATMEGA8 (не помню с ATTINY получится или нет...) Ну еще много кристалов есть, но это самые просты решения на счет цены и сложности распайки. |
Автор: | Wlad [ Четверг, 13 Ноябрь, 2008 23:07 ] |
Заголовок сообщения: | Re: COM-порт |
Та ваще, не стоит оно того! Или COM, или USB! На новом ноуте у меня тока три usb разъёма + чего-то ещё (не COM) + что-то радиочастотное ( но я его в биосе вырубил нафик)... И (ещё раз) - ваще! Ждём июня 2009 с презентацией стандарта USB 3.0 ! |
Автор: | Сергей Оборотов [ Пятница, 14 Ноябрь, 2008 06:32 ] |
Заголовок сообщения: | Re: COM-порт |
А у наладонников кредл какой порт использует? |
Автор: | bohdant [ Пятница, 14 Ноябрь, 2008 11:26 ] |
Заголовок сообщения: | Re: COM-порт |
GUEST писал(а): А у наладонников кредл какой порт использует? USB-PORT (как slave) Даже если есть в PocketPC USB-Host, у него еще и есть USB-PORT есть расспайки кредлов и шнурков и там все можно детально глянуть. Вообще то USB - придумали не "технари", а "менеджеры". Поэтому он такой сложный и запутаный получился |
Автор: | Wlad [ Пятница, 14 Ноябрь, 2008 20:08 ] |
Заголовок сообщения: | Re: COM-порт |
bohdant писал(а): Вообще то USB - придумали не "технари", а "менеджеры". Поэтому он такой сложный и запутаный получился Даже более определённо - менеджеры от всем известной корпорации... Когда шла работа на выяснение наиболее перспективного задела по поводу связного универсального интерфейса, то была проделана титаническая (без шуток) работа менеджеров по реализации ещё сырого и не отработанного продукта( то, что потом стало USB1.0)... Но работа не с инженерами, а с аналогичными менеджерами в софтовых и железячных фирмах... "Пусть плохо, но - много!" В результате, мы опять получили не чистый продукт с перспективой развития логичной базы с удобной надстройкой, а кусочное решение. Но! Зато с мощной поддержкой производителей... Если вы поинтересуетесь историей "продавливания" в массовое пользование известных сейчас шин и интерфейсов, то будете чрезвычайно поражены, насколько мизерная роль была при обосновании их поддержки и внедрения технических вопросов... "Схватить, что хоть немного дышит и лучше, чем у остальных, внедрить, приучить всех к этому, а потом - хоть трава не расти!" (тока - капуста! ) |
Автор: | protector [ Пятница, 17 Декабрь, 2010 14:26 ] |
Заголовок сообщения: | Re: COM-порт |
Такой вопрос по COM порту. Нужно неблокирующая работа с ним. То есть один модуль читает другой пишет. Пусть они запущены под разными экземплярами BB. (тяжелая многопоточность). Каким образом можно наладить связь между этими модулями (какие средства в BB есть для этого). |
Автор: | Илья Ермаков [ Пятница, 17 Декабрь, 2010 14:29 ] |
Заголовок сообщения: | Re: COM-порт |
Ну, например, возьмите стандартную подсистему Comm (см. документацию). И соедините по TCP на localhost. |
Автор: | protector [ Пятница, 17 Декабрь, 2010 14:34 ] |
Заголовок сообщения: | Re: COM-порт |
В принципе можно и так сделать (программа для теста железа предназначена), я хотел узнать нет ли еще других способов. |
Автор: | protector [ Пятница, 17 Декабрь, 2010 14:41 ] |
Заголовок сообщения: | Re: COM-порт |
И еще вопрос вдогонку. Если один модуль откроет порт для чтения сможет ли другой открыть для записи не возникнет ли блокировки порта? |
Автор: | Иван Денисов [ Среда, 27 Май, 2015 06:53 ] |
Заголовок сообщения: | Re: CommV24, выполненный как драйвер для CommStreams |
Возможно будет полезен кому-нибудь пример получения доступных в системе COM-портов. Код: MODULE CommList;
IMPORT SYSTEM, WinApi, Log; PROCEDURE Ports*; VAR bytesNeeded, returned, i: INTEGER; buffer: POINTER TO ARRAY OF SHORTCHAR; pInfo: WinApi.PORT_INFO_1; BEGIN IF (WinApi.EnumPorts(NIL, 1, NIL, 0, bytesNeeded, returned) = 0) & (WinApi.GetLastError() = WinApi.ERROR_INSUFFICIENT_BUFFER) THEN NEW(buffer, bytesNeeded); IF WinApi.EnumPorts(NIL, 1, buffer[0], bytesNeeded, bytesNeeded, returned) = 1 THEN FOR i:=0 TO returned - 1 DO pInfo := SYSTEM.VAL(WinApi.PORT_INFO_1, buffer[i * SIZE(WinApi.PORT_INFO_1)]); IF (pInfo.pName[0] = "C") & (pInfo.pName[1] = "O") & (pInfo.pName[2] = "M") THEN Log.String(pInfo.pName$); Log.Ln END END END END END Ports; END CommList. ^Q CommList.Ports |
Автор: | Alexander Shiryaev [ Среда, 27 Май, 2015 07:51 ] |
Заголовок сообщения: | Re: CommV24, выполненный как драйвер для CommStreams |
BlackBox-1.6 писал(а): command error: code file for WINSPOOL.dll not found Я пользуюсь таким способом. |
Автор: | Иван Денисов [ Среда, 27 Май, 2015 21:07 ] |
Заголовок сообщения: | Re: CommV24, выполненный как драйвер для CommStreams |
Alexander Shiryaev писал(а): BlackBox-1.6 писал(а): command error: code file for WINSPOOL.dll not found В сборке центра и Цинна уже обновлен WinApi, должен быть не WINSPOOL.dll, а WINSPOOL.drv. Код: PROCEDURE EnumPorts* ["WINSPOOL.drv", "EnumPortsA"] (pName: PtrSTR; Level: INTEGER; VAR [nil] pPorts: SHORTCHAR; cbBuf: INTEGER; VAR [nil] pcbNeeded: INTEGER; VAR [nil] pcReturned: INTEGER): BOOL; (*END EnumPorts;*) Alexander Shiryaev писал(а): Я пользуюсь таким способом. У меня в Wine не показывает в реестре порты для USB2COM плат |
Автор: | Alexander Shiryaev [ Воскресенье, 31 Май, 2015 23:14 ] |
Заголовок сообщения: | Re: CommV24, выполненный как драйвер для CommStreams |
http://stackoverflow.com/questions/1388871/how-do-i-get-a-list-of-available-serial-ports-in-win32 |
Автор: | Иван Денисов [ Понедельник, 01 Июнь, 2015 05:33 ] |
Заголовок сообщения: | Re: CommV24, выполненный как драйвер для CommStreams |
Alexander Shiryaev писал(а): Буду пробовать твой метод и другие, оказалось, что EnumPorts в Wine всегда показывается четыре порта, даже если их нет, или есть больше. Сейчас перебираю порты по очереди, как советуют в первом методе, но хотел как-то это оптимизировать. Думал, что EnumPorts — хорошее решение, но нет. |
Автор: | Иван Денисов [ Вторник, 02 Июнь, 2015 06:23 ] |
Заголовок сообщения: | Re: CommV24, выполненный как драйвер для CommStreams |
Получается, что самый надежный метод, это попытка подключения к портам. Он работает в Wine. Есть недостаток в том, что если на отладочной плате, например, стоит джампер ISP-RESET, то при сканировании порта микроконтроллер перезагружается. А для Windows действительно, быстрее сканировать реестр. Вот такой код для сборки центра работает корректно: Код: PROCEDURE Ports*;
VAR res, size, i: INTEGER; sw: WinApi.HANDLE; dwType: INTEGER; str, keyName: ARRAY 64 OF SHORTCHAR; port: ARRAY 8 OF CHAR; con : CommV24.Connection; BEGIN IF Dialog.IsWine() THEN FOR i := 0 TO 255 DO Strings.IntToString(i, port); CommV24.Open('COM' + port, 9600, {}, con); IF con # NIL THEN CommV24.Close(con); Log.String('COM' + port); Log.Ln END END ELSIF Dialog.IsWindows() THEN res := WinApi.RegOpenKeyW(WinApi.HKEY_LOCAL_MACHINE, "hardware\devicemap\serialcomm", sw); IF res = WinApi.ERROR_SUCCESS THEN i := 0; size := LEN(str); WHILE res # WinApi.ERROR_NO_MORE_ITEMS DO size := LEN(str); res := WinApi.RegEnumValueA(sw, i, keyName, size, NIL, NIL, 0, NIL); IF res = WinApi.ERROR_SUCCESS THEN size := LEN(str); res := WinApi.RegQueryValueEx(sw, keyName, NIL, dwType, SYSTEM.ADR(str), size); IF res = WinApi.ERROR_SUCCESS THEN Log.String(keyName$ + " " + str$); Log.Ln; END END; INC(i) END; res := WinApi.RegCloseKey(sw) END END END Ports; |
Автор: | prospero78 [ Четверг, 13 Август, 2015 18:46 ] |
Заголовок сообщения: | Re: CommV24, выполненный как драйвер для CommStreams |
Пока в ББ СОМ не читал, но под python это делается легко и под Win, и под wine, и под Lin) Понятно, придётся потаскать за собой 30 метров питона. Впрочем, под Lin -- с вероятностью 99% питон уже будет стоять) Кстати, под wine ББ может читать данные из СОМ-порта методом z:/dev/com0. Если память не изменяет))) Под родной вендой ББ так сделать не может))))))) |
Страница 2 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |