Работа с COM портом в Visual C++
Moderator: Shaos
-
- Writer
- Posts: 15
- Joined: 07 Jul 2005 22:58
- Location: Новосибирск
Работа с COM портом в Visual C++
А не богат ли ктонить нормальной DLLкой для работы с COM портом.
CreateFile();ReadFile() что то не нравится.
Может есть анология inpout32.dll(LPT) для COMа?
CreateFile();ReadFile() что то не нравится.
Может есть анология inpout32.dll(LPT) для COMа?
-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
-
- Novelist
- Posts: 49
- Joined: 10 Jan 2006 07:54
- Location: St.Petersburg, Russian
Re: Работа с COM портом в Visual C++
Дайте кампанент!Yarik wrote:А не богат ли ктонить нормальной DLLкой для работы с COM портом.
Да мне вообще winapi не нравится. Но это -- достаточный, абсолютно и полностью, интерфейс.CreateFile();ReadFile() что то не нравится.
Кто эту dll потом поддерживать будет? Всякую дрянь тащить -- чревато. Плюс копирайт.Может есть анология inpout32.dll(LPT) для COMа?
-
- Maniac
- Posts: 230
- Joined: 01 Mar 2005 21:42
Re: Работа с COM портом в Visual C++
А я вот чё-то не вкурю: inpout32.dll она же не для ЛПТ там или КОМа, а именно чтобы в ЛЮБОЙ порт залезть. Так кто мешает ею лазить в порты КОМа?Yarik wrote:Может есть анология inpout32.dll(LPT) для COMа?
Du bist ein Spektrumist!
-
- Writer
- Posts: 15
- Joined: 07 Jul 2005 22:58
- Location: Новосибирск
Ага!Но с LPT проще байт отправил - байт принял.А с COM гемора больше.Dll ку я нашел,очень удобная там все нужные функции отправка байта,прием байта,прием-отправка массива.Вроде еще чтото но мне только эти были нужны.А я вот чё-то не вкурю: inpout32.dll она же не для ЛПТ там или КОМа, а именно чтобы в ЛЮБОЙ порт залезть. Так кто мешает ею лазить в порты КОМа?
-
- Senior
- Posts: 112
- Joined: 09 Jun 2005 05:34
Ты че, изверг, напрямую в железо лезешь из своей программы только с целью работать с последовательным портом?
Да тебя расшесть за такое надо!
А ты в курсе, что в современных машинах нет уже ни LPT, ни COM? А скажи-ка мне дорогой товарисч, а что будет если я твою программу запущу на машине, где у меня железка через USB-конвертор подключена? На макинтоше например?
Это сейчас оно пока еще экзотика, а года через два оно будет повсеместно.
И ваще набор возможных базовых адресов в настоящее время не ограничен 0x3F8, 0x2F8, 0x3E8, 0x2E8? Ты в курсе что последовательных портов может быть хоть 20 штук? И кстати не все из них аппаратно совместимы с 16550.
Да тебя расшесть за такое надо!

Это сейчас оно пока еще экзотика, а года через два оно будет повсеместно.
И ваще набор возможных базовых адресов в настоящее время не ограничен 0x3F8, 0x2F8, 0x3E8, 0x2E8? Ты в курсе что последовательных портов может быть хоть 20 штук? И кстати не все из них аппаратно совместимы с 16550.
-
- Maniac
- Posts: 230
- Joined: 01 Mar 2005 21:42
А мне - плевать!Sonic wrote:Ты че, изверг, напрямую в железо лезешь из своей программы только с целью работать с последовательным портом?
Да тебя расшесть за такое надо!А ты в курсе, что в современных машинах нет уже ни LPT, ни COM? А скажи-ка мне дорогой товарисч, а что будет если я твою программу запущу на машине, где у меня железка через USB-конвертор подключена? На макинтоше например?
Это сейчас оно пока еще экзотика, а года через два оно будет повсеместно.
И ваще набор возможных базовых адресов в настоящее время не ограничен 0x3F8, 0x2F8, 0x3E8, 0x2E8? Ты в курсе что последовательных портов может быть хоть 20 штук? И кстати не все из них аппаратно совместимы с 16550.
У меня на ноуте и ком и лпт есть, и через лпт замечательно байтбластер работает. Равно как и другие колхозные девайсы (inpout32.dll). А что у кого-то чего-то нет или вообще мак - это его проблемы, нечего было шыт покупать.
Du bist ein Spektrumist!
-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
LVD, для прямого доступа к железу нужно делать мьютекс (сам не юзаю, слышал о них от программеров) или делать свой драйвер. По мне - проще поставить UserPort и оформить подпрограмму обращения к портам как StdCall (в Delphi). Все работает на ура. Далее, есть книга у меня, там описаны примеры работы с СОМ портами, может поможет (там все для Delphi, но вдруг по аналогии навеет тебе решение)?
http://rapidshare.com/files/17405381/Com.rar.html (5,1Мб)
http://rapidshare.com/files/17405381/Com.rar.html (5,1Мб)
-
- Banned
- Posts: 608
- Joined: 12 Oct 2006 16:44
-
- Novelist
- Posts: 49
- Joined: 10 Jan 2006 07:54
- Location: St.Petersburg, Russian
Re: Работа с COM портом в Visual C++
А догадайся:lvd wrote:А я вот чё-то не вкурю: inpout32.dll она же не для ЛПТ там или КОМа, а именно чтобы в ЛЮБОЙ порт залезть. Так кто мешает ею лазить в порты КОМа?Yarik wrote:Может есть анология inpout32.dll(LPT) для COMа?
1. Передерёшься с драйвером в системе;
2. Портов ты не знаешь;
3. Портов там вообще нет (USB) или порты не типовые... (MOXA какая -нибудь);
4. Отдельная проблема -- никакой реалтайм (а тебе нужно это в 50% подобных случаев) не обещается (лучшем случае квантами по 10мс).
Впрочем тебе никто не мешает... Но сказать, что это пер-анально -- ничего не сказать.
Меж тем использовать (для COM!) стандартные интерефейсы ОС, а сам COM-порт по назначению (т.е. для передачи БАЙТОВОГО потока -- чтоб работало если даже в разрыв пару модемов включить) -- никто не мешает...
--
[ZX]
[ZX]
-
- Novelist
- Posts: 49
- Joined: 10 Jan 2006 07:54
- Location: St.Petersburg, Russian
Ага. Только порт ввода-вывода МИКРОПРОЦЕССОРА к коммуникационному порту никакого отношения не имеет. Не очевидно разве? Вон в маках небось (не те, что на x86) вообще портов нет. В них вообще смысла не много...Romanich wrote:поставьте себе WinIO.dll и не парьтесь.
И шепчитесь с регистрами портов как хотите!
очень удобно и никакая ось не возбухает!
--
[ZX]
[ZX]
-
- Maniac
- Posts: 230
- Joined: 01 Mar 2005 21:42
А как? Вот в амигаос для того есть штатные средства, после которых руками в порты лазить можно. А в венде?HardWareMan wrote:LVD, для прямого доступа к железу нужно делать мьютекс (сам не юзаю, слышал о них от программеров)
Зачем, если инпоут32.длл - работает?или делать свой драйвер.
Du bist ein Spektrumist!
-
- Maniac
- Posts: 230
- Joined: 01 Mar 2005 21:42
Re: Работа с COM портом в Visual C++
А не буду. Это вон аффтару "ReadFile чо-то не нравится", не мне. Мне вообще терминалок хватало, чтобы со всеми колхозными девайсами по кому общаться.fk0 wrote:А догадайся:lvd wrote:А я вот чё-то не вкурю: inpout32.dll она же не для ЛПТ там или КОМа, а именно чтобы в ЛЮБОЙ порт залезть. Так кто мешает ею лазить в порты КОМа?
1. Передерёшься с драйвером в системе;
2. Портов ты не знаешь;
3. Портов там вообще нет (USB) или порты не типовые... (MOXA какая -нибудь);
4. Отдельная проблема -- никакой реалтайм (а тебе нужно это в 50% подобных случаев) не обещается (лучшем случае квантами по 10мс).
Du bist ein Spektrumist!
-
- Maniac
- Posts: 230
- Joined: 01 Mar 2005 21:42
Порты (как средства связи с миром, а не как нечто, куда байтики пихать аутами) есть. Но в адресном пространстве общем болтаются просто. А на пц - в не общем, в отдельном. Тяжёлое насление 8-битных 8086, что уж поделать. Неизлечимо...fk0 wrote:Ага. Только порт ввода-вывода МИКРОПРОЦЕССОРА к коммуникационному порту никакого отношения не имеет. Не очевидно разве? Вон в маках небось (не те, что на x86) вообще портов нет. В них вообще смысла не много...
Du bist ein Spektrumist!