IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Работа с com-портом (https://www.imho.ws/showthread.php?t=75203)

Archie 07.12.2004 02:00

Работа с com-портом
 
Помогите написать программу работы с com-портом на Visual С++.
Надо связать два компа и научить их общаться посредством порта.
Проблема состоит в приеме данных.

kay 07.12.2004 07:35

тут без тредов не обойтись. иначе если чтение зациклить, то программа глючить будет.

поищи на http://www.delphikingdom.ru/, там хоть и дельфа, но функции winAPI используются

alexey_ma 07.12.2004 10:43

Смотри здесь:
http://sources.ru/cpp/cpp_com_port.shtml

crawler 07.12.2004 14:25

http://msdn.microsoft.com/library/de...sdn_serial.asp

Лучшее об'яснение по работе с серийными портами в Вин32. Рабочий код внутри (аппликация MTTTY ).
Для нормальной работы таки нужны треды и Overlapped I/O.

Archie 07.12.2004 23:37

Цитата:

crawler:
Для нормальной работы таки нужны треды и Overlapped I/O.
Что за треды?

kay 08.12.2004 09:13

Цитата:

Сообщение от Archie
Что за треды?

об этом как раз неплохо написано на delphikingdom.ru
http://www.delphikingdom.ru/asp/view...723&mode=print

rkorchagin 09.12.2004 18:28

ничего сложного!
просто открой для записи файл с именем "СОМ1"
с помощью ф-ции CreateFile
и пиши туда байты...
а чтение я непробовал - но вероятно просто опять же открыть файл с именем "СОМ1" для чтения...

Archie 09.12.2004 22:10

Не все так просто...
Записать данные в порт и передать их дальше я могу. А вот как прочесть их на другом компе? :idontnow:

crawler 12.12.2004 13:44

Гхы.. запускаешь прогу на другом компе и читаешь из порта. Можно спаять кабелек и слать с одного порта на другой. Все как rkorchagin сказал.
Треды - типа параллельных процессов в Винде. Если не запараллелить чтение,запись и интерфейс - то одно будет тормозить другое, и прога будет глючить. Не забудь определить буффера обмена побольше - особенно на высоких скоростях- ставь 10-50 мег.

Archie 12.12.2004 23:46

Цитата:

crаwlеr:
Если не запараллелить чтение,запись и интерфейс - то одно будет тормозить другое, и прога будет глючить
Как это сделать?

Felan 15.12.2004 10:26

Ну блин ваще :(
 
Вот интересно, те, кто дает советы тут, хоть раз что-нибудь работающее и законченное делал с этим самым комом?

1 Лучше пользоваться компонентами специально сделанными.
1.1 Берите mscomm, которы родной микросовтовский активикс. С другими бывают некоторые непонятки и глюки (по крайней мере с теми с котрыми я пробовал).

2 Треды использовать желательно, но не обязательно, если правильно сделать (проверять есть ли в буфере столько, сколько собрались читать), то все работает замечательно и без тредов!!!

3 По поводу чтения из порта на другом компе... Я не знаю, ты из вообще перд этим кабелем соеденил? Точно соеденил? А кабель у тебя нуль-модемный??? (Кабель от модема не подойдет, т.к. о модемный). Если не знаешь, чем отличаются, см. в сети. Ифы навалом.
Если у тебя кабель правельный, то читаешь, так же как и пишешь, только наоборот. Рас разобрался как писать, то читать, также, только вместо "Write", пишешь "Read". Это все описано даже в хелпе.

ЗЫЖ Я писал на делфи, но разници в принципе все равно нет.

alexey_ma 15.12.2004 15:09

Цитата:

Felan:
Вот интересно, те, кто дает советы тут, хоть раз что-нибудь работающее и законченное делал с этим самым комом?
Неоднократно. Делал программы для работы с GSM модемом и для работы с обычным модемом, правда довольно давно. На API, без всяких компонент.
Но если говорить про компоненты то советую обратить внимание на Greenleaf CommX - http://www.microway.com.au/catalog/list_comm.htm
Покруче чем mscomm, но к сожалению не бесплатен.

Felan 15.12.2004 21:05

На API слишком геморройно. Смысла особого нет. Я первый раз делал прогу для работы с желзкой исключительно на API (просто не знал, и лень было искать что есть mscomm).
Я не утверждаю, что mscomm вер совершенства. Просто он простой и ПРАВИЛЬНО работающий. Я когда пробовал разные компаненты, заработал как положено только он. Работать надо было не с модемом (с ним все работали хорошо), а опять же с контроллером.
Кстати, никаких потоков не пользовал.
MsComm тоже не совсем бесплатен... но это все лечится, а если лечить по каким-то соображениям нельзя, то для рантайм он бесплатен.

metrim 18.01.2006 20:07

Вариации для VBA
 
Граждане, помогите, подскажите
Нужно сделать прожку (предположительно на ВБА, которая должна записывать/считывать инфу через сом-порт.
Опыт програмирования у меня не большой, но программа простенькая и как заставить ее работать я приблизительно представляю.
Проблема в том, что в документации по ВБА я не нашел способа обращения к ком-порту, т.е. я прочитал, что COM1, COM2, LPT и пр. это зарезервированные имена, но вот как к ним обращаться я понятия не имею.
Подскажите как это сделать в ВБА или подскажите альтернативный способ решения проблемы (считанные с устройства данные мне бы хотелось получать в Эксель)
Заранее спасибо

dyr_farot 18.01.2006 20:23

на VBA это вряд ли получится. на VB можно

Vellion 18.01.2006 20:38

Я как то делал на VBA, в Exel считывал данные с микрометра, который был подключен через Com порт. Использовал IO ActiveX Communications module фирмы JSPayne (_http://www.jspayne.com/io/home.html), там все просто получаеться. Единственная проблема оно денег стоит. Хотя я тогда нашел где-то лекарство.

dyr_farot 18.01.2006 20:46

проще ( IMHO ) самому наваять нужную функциональность ( на том же шарпе ) и вызвать этот модуль в екселе

metrim 18.01.2006 21:11

Цитата:

dyr_farot:
проще ( IMHO ) самому наваять нужную функциональность ( на том же шарпе ) и вызвать этот модуль в екселе
Ни слова не понял :-)
Как наваять? в каком шарпе?

Цитата:

Vellion:
Единственная проблема оно денег стоит. Хотя я тогда нашел где-то лекарство.
А поделиться не полчится?

dyr_farot 18.01.2006 21:30

написать на C#, можно и на любом другом нормальном языке программирования ( хоть на том же visual basic' е )

metrim 18.01.2006 21:36

Цитата:

dyr_farot:
( хоть на том же visual basic' е )
Ну а разве совсем нельзя в ВБА сделать как в си: открыть порт как файл и писать в него?

crawler 19.01.2006 00:02

смотри сюда и сюда

LightImage 19.01.2006 12:41

metrim
Модуль работы с COM портом
Как раз для VBA должно быть
_http://msa.polarcom.ru/st/d_1000338.htm

dyr_farot 19.01.2006 13:13

metrim
нельзя. потому как VBA -- не полноценный язык программирования ( и работает через прослойку виртуальной машины ). МС просто не считает что такая функциональность нужна в ворде/екселе/...
к тому же они дали возможность подключать внешние модули, написанные на нормальных языках. а что еще нужно?

LightImage 19.01.2006 13:48

dyr_farot
Напрямую средствами VBA может порт как файл и нельзя открыть, но всё-таки VBA довольно мощный язык. Можно вызывать API-функции и использовать AxtiveX компоненты, а этого более чем достаточно для того, чтобы написать что-то своё, не отвлекаясь на использование "нормальных" языков. См. например ссылку в моём предыдущем посте http://www.imho.ws/showthread.php?p=1113694#post1113694

dyr_farot 19.01.2006 14:38

так и я о том же -- все, что нужно для офиса пишемна ВБА, если нужно что-то большее -- подключаем модули, написанные на языке на уровень пониже


Часовой пояс GMT +4, время: 12:40.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.