Фотография
Оценка:   - - - - -

Обработка сигналов в Delphi


Сообщений в теме: 18

#1 Evgenn

Evgenn

    Редкий гость

  • Пропользователь
  • Pip
  • 19 сообщений

Отправлено 15 октября 2009 - 18:30

Ищутся книги по обработке,передаче сигналов желательно в Delphi, либо в любом языке программирования.

#2 balumba

balumba

    Всезнайка

  • Пропользователь
  • 1 760 сообщений

Отправлено 15 октября 2009 - 18:46

Ищутся книги по обработке,передаче сигналов желательно в Delphi, либо в любом языке программирования.



если ты имеешь в виду работу с портами, то все делается стандартными функциями винды, книг по низкоуровневому программированию на дельфи боюсь нет (

#3 Evgenn

Evgenn

    Редкий гость

    Автор темы
  • Пропользователь
  • Pip
  • 19 сообщений

Отправлено 15 октября 2009 - 19:00

А какие есть книги способные помочь мне в этом не легком деле?

#4 V2g6cH4

V2g6cH4

    Активный участник

  • Пропользователь
  • PipPipPipPipPip
  • 675 сообщений

Отправлено 16 октября 2009 - 10:51

1) Сигналов с чего?
На месте некоторых я бы поражался даже мудрости и уму стиральной машины.... :DDDD

#5 Evgenn

Evgenn

    Редкий гость

    Автор темы
  • Пропользователь
  • Pip
  • 19 сообщений

Отправлено 16 октября 2009 - 14:40

С портов, любых: лпт, усб в общем с внешки.

#6 V2g6cH4

V2g6cH4

    Активный участник

  • Пропользователь
  • PipPipPipPipPip
  • 675 сообщений

Отправлено 16 октября 2009 - 15:14

Седни дам тебе сборник статей по делфям в дц, там есть немного. Про usb гугли.
На месте некоторых я бы поражался даже мудрости и уму стиральной машины.... :DDDD

#7 balumba

balumba

    Всезнайка

  • Пропользователь
  • 1 760 сообщений

Отправлено 16 октября 2009 - 16:53

С портов, любых: лпт, усб в общем с внешки.



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

если ты хочешь сам обрабатывать в программе порты - нужно писать драйверы обработчиков, которые переопределяют порты на себя - это уже системное программирование и дельфи тут не поможет, тут нужно искать книжки типа "написание драйверов в windows"

а в дельфи и прочих средах есть специальные объекты для работы с портами через виндосовский API
для большинства задач этого вполне хватает (чтение из порта, запись в порт, статус и т д)

в этом случае нужно просто найти описание соответствующих API.

если у тебя имеется какое нибудь нестандартное устройство (ну например сканер штрихкода, фискальный регистратор и т д)
то у этих устройств есть драйвера и взаимодействие с ними идет на уровне API драйвера (т.е. там есть впециальные функции)

ну и т д

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

если просто нужно потренироваться "на кошечках" то самый простой способ попрограммировать порты напрямую из доса - винда программировать напрямую не даст

#8 Evgenn

Evgenn

    Редкий гость

    Автор темы
  • Пропользователь
  • Pip
  • 19 сообщений

Отправлено 16 октября 2009 - 18:06

Спасибо за разъяснение а информацией в виде электронной книжки,документацией можешь поделиться?

#9 balumba

balumba

    Всезнайка

  • Пропользователь
  • 1 760 сообщений

Отправлено 16 октября 2009 - 18:18

Спасибо за разъяснение а информацией в виде электронной книжки,документацией можешь поделиться?


ты напиши что ты хочешь в итоге сделать

#10 User

User

    Папа cod4

  • Пропользователь
  • PipPipPipPipPip
  • 707 сообщений

Отправлено 16 октября 2009 - 18:55

http://ru.wikipedia....nt_Object_Model
http://www.developing.ru/com/
хех ну вот и нашли...

#11 Evgenn

Evgenn

    Редкий гость

    Автор темы
  • Пропользователь
  • Pip
  • 19 сообщений

Отправлено 16 октября 2009 - 19:53

В итоге к компу будет подключаться самодельное устройство которое надо подружить с ним

#12 V2g6cH4

V2g6cH4

    Активный участник

  • Пропользователь
  • PipPipPipPipPip
  • 675 сообщений

Отправлено 16 октября 2009 - 20:07

По идее фсе кроеться в Set/GetEnviroment функциях апишных. Счаз денег положу на инет скажу.
COM тут вообще не при делах.
Balumba, до портов процессора как до луны, смысла нет.
Аки таки не даст? )) Винда даст интерфейс удобный к любому порту. Больше и не надо.
На месте некоторых я бы поражался даже мудрости и уму стиральной машины.... :DDDD

#13 balumba

balumba

    Всезнайка

  • Пропользователь
  • 1 760 сообщений

Отправлено 16 октября 2009 - 21:28

По идее фсе кроеться в Set/GetEnviroment функциях апишных. Счаз денег положу на инет скажу.
COM тут вообще не при делах.
Balumba, до портов процессора как до луны, смысла нет.
Аки таки не даст? )) Винда даст интерфейс удобный к любому порту. Больше и не надо.


ну в процессоре портов нету таки, есть регистры
Говоря академическим языком процессор может адресовать (читать /писать) порты при помощи команд ввода /вывода (in/out) так же как адресуется память


а про винду я так и написал вобщем то, что есть API и с портами удобнее работать через его.

В итоге к компу будет подключаться самодельное устройство которое надо подружить с ним


рискну предположить, что это что то для параллельного порта, если самодельное - самое простое

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

вот тут кратенько о программировании LPT

http://www.xserver.r...aprogr/msvb/14/

#14 V2g6cH4

V2g6cH4

    Активный участник

  • Пропользователь
  • PipPipPipPipPip
  • 675 сообщений

Отправлено 16 октября 2009 - 21:55

Cобсно открываем с помощью CreateFile порт и работаем )
HANDLE hFile = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, NULL,
NULL, OPEN_EXISTING, NULL, NULL);
if(!hFile)
{
MessageBoxA(NULL, "Ошибка при открытий порта", "Error", MB_OK | MB_ICONERROR);
CloseHandle(hFile);
}
else
{
ReadFile(hFile, BUFFER, sizeof(BUFFER), &Bytes, NULL, NULL);
WriteFile(hFile, BUFFER, sizeof(BUFFER), &Bytes, NULL, NULL);
}

просто, принимает имена любых виртуальных портов.
C com и LPT проблем возникнуть недолжно, а вот с USB попа

ну в процессоре портов нету таки, есть регистры

Говоря академическим языком и регистров там нет а имееться лишь структура из полупроводников....

Сообщение отредактировал V2g6cH4: 16 октября 2009 - 21:56

На месте некоторых я бы поражался даже мудрости и уму стиральной машины.... :DDDD

#15 balumba

balumba

    Всезнайка

  • Пропользователь
  • 1 760 сообщений

Отправлено 16 октября 2009 - 22:46

Говоря академическим языком и регистров там нет а имееться лишь структура из полупроводников....


ну с точки зрения химии да, но с точки зрения функциональности нет.
они там есть, просто их невидно невооруженным глазом ))

Основные регистры процессора, совместимого с Intel 386
IP (англ. Instruction Pointer) — регистр, обозначающий смещение следующей команды относительно кодового сегмента.

IP — 16-битный (младшая часть EIP)

EIP — 32-битный аналог

Сегментные регистры — Регистры указывающие на сегменты.

CS,DS,SS,ES,FS,GS

CS — указатель на кодовый сегмент. Связка CS:IP указывает на адрес в памяти следующей команды.

Регистры данных — служат для хранения промежуточных вычислений.

RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 — R15 — 64-битные

EAX, EBX, ECX, EDX, EBP, ESI, EDI, ESP — 32-битные (extended AX)

AX, BX, CX, DX — 16-битные

AH, AL, BH, BL, CH, CL, DH, DL — 8-битные (половинки 16-ти битных регистров)

Регистр флагов EFLAGS — содержит текущее состояние процессора.


Регистром называется функциональный узел, осуществляющий приём, хранение и передачу информации.



анекдот:
сбили во время вьетнамской войны китайцы нашего летчика, он парашутировался, самолет вдребезги, поймали его
и давай его пытать, все пытались устройство самолета выведать
ничего не сказал летчик, освободили его, наградили
привезли на встречу с курсантами, спрашивают
- чтобы вы хотели пожелать молодому поколению?
- учите ребята мат. часть...

))

а метод с открытием порта как файла в большинстве случаев не сработает (речь то о нестандартном самодельном устройстве)

ну самый простой случай - 8 светодиодов на LPT и требуется зажигать любую их комбинацию

вот тут не прокатит приведенный тобой способ так как не будет использоваться статусный регистр порта и постоянно будет выдаваться ошибка

#16 Izolda

Izolda

    Участник форума

  • Пропользователь
  • PipPipPipPip
  • 208 сообщений

Отправлено 18 октября 2009 - 17:27

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

если ты хочешь сам обрабатывать в программе порты - нужно писать драйверы обработчиков, которые переопределяют порты на себя - это уже системное программирование и дельфи тут не поможет, тут нужно искать книжки типа "написание драйверов в windows"


гугл советует использовать готовые библиотеки (io.dll, port.sys) и тд.

юзала inpout32.dll , под ХР, проект на Дельфи, работа с лпт. все работало гуд.

не только светодиодики в заданной последовательности горят, но и движок вертится.

Сообщение отредактировал Izolda: 18 октября 2009 - 17:28


#17 balumba

balumba

    Всезнайка

  • Пропользователь
  • 1 760 сообщений

Отправлено 18 октября 2009 - 17:44

гугл советует использовать готовые библиотеки (io.dll, port.sys) и тд.

юзала inpout32.dll , под ХР, проект на Дельфи, работа с лпт. все работало гуд.

не только светодиодики в заданной последовательности горят, но и движок вертится.



Привет программерам

ну совершенно правильно.

в свое время на паскале нечто подобное делал, давно правда, на win98, там проще на аппаратный уровень пробиться
в xp и дальше удобнее через API
по ссылочке которую я дал тоже советуют использовать inpout32.dll

приятно общаться с грамотными людьми.

#18 V2g6cH4

V2g6cH4

    Активный участник

  • Пропользователь
  • PipPipPipPipPip
  • 675 сообщений

Отправлено 18 октября 2009 - 22:08

Ладно, не буду с вами спорить, программисты....
http://www.citforum....ndows/parp_win/
На месте некоторых я бы поражался даже мудрости и уму стиральной машины.... :DDDD

#19 balumba

balumba

    Всезнайка

  • Пропользователь
  • 1 760 сообщений

Отправлено 18 октября 2009 - 22:55

Ладно, не буду с вами спорить, программисты....
http://www.citforum....ndows/parp_win/


ты тоже пишешь в общем правильно, только твой метод работает через драйвер устройства через стандартные функции ввода/вывода

Драйвер выполняет последовательность согласования с устройством ...


а тут речь о записи прямо в порт ....

ну вот для примера человек делал для конкурса (так и недоделал) радиоуправляемую машинку, которая управлялась с lpt порта компа
(в замысле она должна была ездить по программе)
тут поскольку никакого драйвера нет единственный вариант через API писать прямо в порт



Ответить