IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> Работа с Паскалем и выходами на мат. плате(com, Usb...)
necks
сообщение 28.02.2006 19:08
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 30
Пол: Мужской

Репутация: -  0  +


Посколько в Паскале новичок хотел помимо написания обычных программ научиться програмировать устроиства подключенные к портам вывода. В разделе "статьи" прочитал о програмировании мыши, и поэтому еще больше заинтересовался эти вопросом.

Так вот раз подфорум теоритический, то при помощи каких функций можно осуществить обращение к портам.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 11)
Романтик
сообщение 28.02.2006 21:22
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 159
Пол: Мужской
Реальное имя: Anton

Репутация: -  0  +


точнее можешь???


--------------------
made in USSR.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GoodWind
сообщение 1.03.2006 6:56
Сообщение #3


Автооответчик
*****

Группа: Модераторы
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


James_Bond, вроде вполне точно сформулирован вопрос: Как в паскале работать с com, lpt и usb?


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 1.03.2006 7:19
Сообщение #4


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


necks, желательно точно определиться, какой интерфейс (COM, LPT или USB) и в какой среде (DOS или Win32) ты собираешься программировать, т. к. методы программирования значительно отличаются.


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
necks
сообщение 1.03.2006 16:45
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 30
Пол: Мужской

Репутация: -  0  +


Скорее всего буду програмировать в Win32. А вот то какой интерфейс пока не знаю, серьезно интерес к этому появился недавно, поэтому раз форум по Паскалю, значит и люди которые здесь сидят разбираются в этом, а я только новичок можно сказать. Так вот, мне бы больше теории узнать на первое время...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 2.03.2006 7:14
Сообщение #6


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


В Win32 проще всего работать с COM:
- не нужно писать драйвер - используются функции файлового ввода-вывода и несколько специальных функций, т. е. работа только с Win32 API;
- легко реализуется в подключаемом устройстве (если последнее необходимо изготовить самому).


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
necks
сообщение 2.03.2006 14:09
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 30
Пол: Мужской

Репутация: -  0  +


Ну а с помощью каких функций/команд можно програмировать порт? smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 2.03.2006 15:43
Сообщение #8


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Открытие порта:
var
Port: THANDLE;
...
Port := CreateFile(
'COM1',
GENERIC_READ or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
0,
0
);


Закрытие:
  CloseHandle(Port);


Установка параметров соединения: скорости передачи данных, формата фрейма и способа управления потоком данных:
var
dcb: TDCB;
...
dcb.DCBlength := SizeOf(dcb);
GetCommState(Port, dcb);
dcb.BaudRate := CBR_9600;
dcb.ByteSize := 8;
dcb.Parity := EVENPARITY;
dcb.StopBits := 2;
dcb.Flags :=
fBinary
or fParity
or fOutDsrFlow
or fOutCtsFlow
or fDtrControl * DTR_CONTROL_ENABLE
or fRtsControl * RTS_CONTROL_ENABLE;
SetCommState(Port, dcb);


Настройка тайм-аутов передачи данных:
var
ct: TCOMMTIMEOUTS;
...
ct.ReadIntervalTimeout := 1000;
ct.ReadTotalTimeoutMultiplier := 0;
ct.ReadTotalTimeoutConstant := 0;
ct.WriteTotalTimeoutMultiplier := 0;
ct.WriteTotalTimeoutConstant := 5000;
SetCommTimeouts(Port, ct);


Чтение данных (Buf - переменная - буфер, в который принимаются данные; Count - кол-во байт, которое необходимо принять; r получает кол-во принятых байт, r < Count в случае ошибки):
  WriteFile(Port, Buf, Count, r, nil);


Запись данных (Buf - переменная - буфер с данными; Count - кол-во байт в буфере; r получает кол-во переданных байт, r < Count в случае ошибки):
    WriteFile(Port, Buf, Count, r, nil);


P. S. Естественно, во всех случаях необходимо выполнять проверку на наличие ошибок ;) (все перечисленные функции, за исключением CreateFile, возвращают значения типа Boolean; CreateFile в случае ошибки возвращает значение INVALID_HANDLE_VALUE).


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
necks
сообщение 2.03.2006 21:49
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 30
Пол: Мужской

Репутация: -  0  +


Ок, большое спасибо - буду пробовать. А для usb порта есть наверняка команды?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 3.03.2006 10:17
Сообщение #10


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Под USB-устройства обычно пишут свой драйвер.


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Dr.Bugy
сообщение 5.03.2006 3:01
Сообщение #11


Лихорадка неясного генеза.
**

Группа: Пользователи
Сообщений: 81
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Вот модули для работы с USB пртом, может пригодятся.


Прикрепленные файлы
Прикрепленный файл  Usb4pas.zip ( 13.85 килобайт ) Кол-во скачиваний: 217


--------------------
Мир промышленного программирования полон избыточной сложности. В результате такие критерии, как простота, надежность, компактность программ и эффективность исполняемого кода, теперь заменяются на один главный критерий — скорость реализации идей. Приоритет времени разработки понятен: человеческие ресурсы нынче стоят значительно выше, чем аппаратные. Но не теряем ли мы по дороге то ценное, что вернуть потом будет крайне тяжело?..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
AstonClinton
сообщение 16.03.2006 14:03
Сообщение #12





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Народ, а литература по этому делу(работа с портами, и т.д.) есть?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 13:42
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"