Как работать с COM портами?

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Как работать с COM портами?

Сообщение Vitaly1 » 13.09.2004 (Пн) 10:25

Что за порт 232, как опрашивать данный порт из VB, посылать в него команды, считывать его и т.п.
Последний раз редактировалось Vitaly1 13.09.2004 (Пн) 15:37, всего редактировалось 1 раз.

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 13.09.2004 (Пн) 10:39

Все порты равны между собой :). Ты можешь послать что угодно куда угодно. Другое дело, что там на нем висит :)

Если честно, долго смеялся :lol:
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 13.09.2004 (Пн) 14:52

Понятно, что я развесилил образованный народ. Тем более, что кроме сигналов комманд управления принтером ничего в порты не посылал.

Сейчас кое что выяснил.
Устройство подключается к одному из COM портов.
Данные передаются через устройство RS232. ДЛя передачи данных используется сигнал RTS.

Теперь вопрос, можно ли обратится к порту через VB. Если нельзя, то как написать часть программы на ci в VB.

Вообще народ, расскажи те, как работать с портом. Не смейтесь сильно, нужно очень!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.09.2004 (Пн) 15:57

Работать с LPT портом вполне можно. http://www.entechtaiwan.com/tvichw32.htm
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.09.2004 (Пн) 20:29

alibek, у него же вроде COM?
С ним имхо проще всего работать через MSComm.
Project -> Components -> Microsoft Comm Control
Изображение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.09.2004 (Вт) 9:09

Да что-то я напутал :)
Lasciate ogni speranza, voi ch'entrate.

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 14.09.2004 (Вт) 14:59

Друзья нашел API функцию AddPort кто нибудь работал с ней? Можно через нее работать с COM портом и как?

Мне надо в COM посылать команды, и считывать байты из порта.

tyomitch хоть какой нибудь пример не можешь дать, как работать с этим объектом? :cry:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 14.09.2004 (Вт) 17:13

Vitaly1 писал(а):Друзья нашел API функцию AddPort кто нибудь работал с ней? Можно через нее работать с COM портом и как?

Вряд ли тебе это надо.

Vitaly1 писал(а):Мне надо в COM посылать команды, и считывать байты из порта.

tyomitch хоть какой нибудь пример не можешь дать, как работать с этим объектом? :cry:

Всё равно какой, или что-то конкретное?

Порт открывается присваиванием True в PortOpen, затем данные читаются из свойства Input и/или пишутся в свойство Output. Все параметры порта можно задать в дизайн-тайме.
С чем проблемы-то?
Изображение

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 15.09.2004 (Ср) 9:26

Cпасибо, уже кое что понятно.

Нужно выбрать один из компортов, проверить работает ли он. Сигнал передается по линии передачи RS232. И затем послать в него команду о проверке работы блока сопряжения:

CH, KФ, KБ, ПС, CRCмл, СКСсt

где
CH -номер сети
КФ - код функции
ПС - определяет состояние прибора подключенного через устройство сопряжения
КБ - количество байт информации после КБ
CRCмл, СКСсt - младший и старший байт контрольной суммы

Запрос состояния блока сопряжения
F7h, 46h, 1,0, Байт, Байт


Установка состояния блока, и ответ на состояние блока
сопряжения

F7h, 46h, 1,ПС, Байт, Байт

ПС=0 - стоп
ПС=1 - Пуск
ПС=2 - некачественная связь с прибором
ПС=3 - нет связи с прибором
ПС=4 - не все памели индикации обнаружены
ПС=5 - одна из панелей индикации необнаружена

Запрос определеня установленного исполнения (прибора) в блоке сопряжения
F7h, 47h, 1,0, Байт, Байт

Ответ на запрос установленного исполнения (прибора) в блоке сопряжения
F7h, 47h, КБ, NИсполнения, NпанелейПоБайтно, Байт, Байт


Установленновка исполнения (прибора) в блоке сопряжения
F7h, 48h, КБ, NИсполнения, NпанелейПоБайтно, Байт, Байт

Ответ на устанку исполнения (прибора) в блоке сопряжения
F7h, 47h, 1,NИсполнения, Байт, Байт

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 17.09.2004 (Пт) 8:10

Привет всем. Я правильно делаю?

Код: Выделить всё
Private Sub ComboBox1_Change()
If ComboBox1.Text = "COM1" Then
  MSComm1.CommPort = 1
Else
  MSComm1.CommPort = 2
End If
End Sub

Private Sub Command1_Click()
Dim t, i As Integer, s As String
Text1.Text = "Проверка связи"
DoEvents
Err.Clear
On Error GoTo stopPort
MSComm1.PortOpen = True
MSComm1.DTREnable = True
s = Chr(CByte("&HF7")) + Chr(CByte("&H47")) + Chr(1) + Chr(0) + Chr(0) + Chr(0)
MSComm1.Output = s
i = 0
Do
t = Time
Do
Loop Until t <> Time
i = i + 1
Loop Until i = 2
MSComm1.DTREnable = False
s = MSComm1.Input
Text1.Text = MSComm1.Input
isp = Mid(s, 4, 1)
If isp = "" Then
MsgBox "Блок сопряжения к порту не подключен!"
Form2.Command1.Caption = "СТОП"
ElseIf isp = Chr(0) Then
  MsgBox "Не подключено ни одно из исполнений блоку сопряжения!"
isp = ""
Form2.Command1.Caption = "СТОП"
Else
  isp = CStr(Asc(isp))
  If Len(isp) = 1 Then
   isp = "0" + isp
  End If
isp = "Isp" + isp + ".xls"
End If
Form1.Visible = False
Load Form2
Exit Sub
stopPort:
Text1.Text = "Выбранный порт не доступен!"
End Sub


Я проверял работу COM порта через подключенную к ним после загрузки виндовс мышки. COM1 давал ответ на клики правой клавиши мыши, а COM2 нет, почему?

Кто нибудь может сказать какие нужно установить свойства объекта Com для того, что бы принимать сигнал RS232, И вообще, что такое RS232.

Как нумеруются контакты в разъеме COM порта:
*- *- *- *-
*- *- *- *- *-

Какие из этих контактов нужно замкнуть(все, или только некоторые), для того, чтобы передавать данные из COM2 в COM1

Прошу ответить братьев по разуму, очень нужно занть, зарание большое спасибо за ответ, и за уже данные мне ответы!

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 17.09.2004 (Пт) 9:51

Get wired at pinouts.ru описание, кажется, всех существующих на данный момент разъемов (в том числе и компьютерных) нумерация контактов, что по ним передается и так далее...
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 17.09.2004 (Пт) 16:22

Братья по разуму нашлись на другом сайте :)

http://jetprograms.narod.ru/program/states/comm.htm


Люди, можно ли соединить два com порта на одном компьтере кабелем и передавать сигнала по одному и принимать по другому?
:?:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.09.2004 (Пт) 16:36

Думаю, да - почему бы нет?
Изображение

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 02.10.2004 (Сб) 11:47

Слава всем! :D

Особено tyomitch, здорово мне помог разобраться!


Что это за единица измерения боды? Знаю только, что это влияет на скорость передачи данных. А что это за единица бод, откуда она полученна :?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 02.10.2004 (Сб) 12:19

бод - это единица скорости передачи, равная (для посл. порта) 1 биту в секунду; названа в честь Жана Мориса Эмиля Бодо (Jean-Maurice-Émile Baudot) (11.9.1845, Маньё (Magneux), Франция - 28.3.1903, Со (Sceaux)), изобретателя пятибитной кодировки для передачи текстов по телеграфу.

См. http://en.wikipedia.org/wiki/Baud , http://www.oval.ru/cgi-bin/enc.cgi/9185.html
Изображение


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 73

    TopList  
cron