Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

Работа с com портами   Найти похожие ветки 

 
mike_g   (2004-03-04 15:34) [0]

Не в одной литературе по Delphi я не нашол информации по встроеному языку assembler. Большая просьба помоч разрешить одну проблему.
Я задался целью написать на Delphi аналог программы кат. написана на TurboPascal 7.0. В ней имются процедуры написанные на assembler кат. производят передачу информации в COM-порт.
Например-
procedure TfmNmz.FormCreate(Sender: TObject);
begin   //FormCreate
SetRate(6); // установить скорость 19200
SetControl(cc8Bits); // установить длинну 8 бит, 1
....
....
end;
cc8Bits= 3;-константа
//==========================================
procedure SetRate(W:word);assembler;
asm
mov dx,comControl
in al,dx
mov ah,al  чтение регистра контроля линии и сохранение его значения
or al,ccDividerBit  установка 7 бита в 1 для установки скорости обмена out dx,al
mov dx,comDividerLo
mov al,W.byte[0]
out dx,al
mov dx,comDividerHi
mov al,W.byte[1]
out dx,al  пишем в регистры делителя значение переданное параметром
mov dx,comControl
mov al,ah
out dx,al  возвращаем начальное значение регистра
end;
//==========================================
procedure SetControl(V:byte);assembler;
asm
mov dx,comControl
mov al,V
out dx,al  инициализация регистра управления портом
end;
//==========================================
Как дело доходит до непосредственной передачи в порт (out dx,al) компьютер начинает виснуть.
Может в Delphi эти действия вообще производятся както по другому, ведь в программе написанной на TurboPascal всё работает.
И вобще хотелось бы получить информцию по работе с портами. Зарание блогадарен Андрей.


 
idiliya   (2004-03-04 15:47) [1]

http://crazy-fish.narod.ru/new/Doc/com_lpt.htm

на асм вставках впринципе тоже помучиться-получится но Только в Win9x!!!


 
Reindeer Moss Eater ©   (2004-03-04 15:48) [2]

Не в одной литературе по Delphi

В любой литературе по Windows (в т.ч. встроенной в Delphi):

Device i/o functions


 
Asdor ©   (2004-03-04 15:51) [3]

Ну кто же тебе даст в Windows работать напрямуюспортами на ассемлере?...
см. CreateFile, SetCommTimeouts, SetCommConfig, WriteFile...


 
Pat ©   (2004-03-04 16:59) [4]

>Asdor ©   (04.03.04 15:51) [3]
Win95/98 C COM-портом дадут


 
jack128 ©   (2004-03-04 17:07) [5]


> Win95/98 C COM-портом дадут
поэтому они - маст дай !!! :-))


 
Asdor ©   (2004-03-04 17:19) [6]

>jack128
Точно, мастдай и есть... :)


 
Talla2k ©   (2004-03-05 02:29) [7]

В 9x можно!
Вот процедурки:
procedure port(addr:word;value:byte);
 begin
      asm
      mov dx,addr
      mov al,value
      out dx,al
      end;
 end;

 procedure onbyte(bbyte:char);
var dermo:word;
  begin
  dermo:=base+5;
  {G+}  asm
    mov al,bbyte
    mov dx,base
            out dx,al
     @si:   mov dx,dermo
            in al,dx
            and al,0100000b
            jz @si
    end; {G-}
  end;
   procedure priem(var dat:byte);
       var ddat:byte; dermo:word;
       begin
           dermo:=base+5;
             asm
            jmp @st
      @ss3: mov al,$0d
            jmp @ss4
      @st:  mov cx,$5000
      @ss2: dec cx
            cmp cx,0
            jz @ss3
            mov dx,dermo
            in al,dx
            and al,$01
            jz @ss2
            mov dx,base
            in al,dx
       @ss4:mov ddat,al
            end; dat:=ddat;
         end;
А работать так
base:=$3f8;

    port(base+3,$80);port(base+1,$0);
    port(base,$0c);port(base+3,$03);
    port(base+1,$0);port(base+4,$01);
    port(base+2,$0);

 priem(data);priem(data);
 onbyte(chr($02));priem(data);


 
Graf   (2004-03-05 07:52) [8]

Чего вы все про 9х! Кто ею сейчас юзается. А как это сделать в 2K и XP?


 
KSergey ©   (2004-03-05 07:59) [9]

>  [8] Graf   (05.03.04 07:52)
> Чего вы все про 9х! Кто ею сейчас юзается. А как это сделать
> в 2K и XP?

А почитать форум за последние дня 2-3 - стабо? Этот вопрос поднимался уже не раз!!!

PS
Может новые темы для курсовых выдали? ;)



Страницы: 1 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
7-1077790648
Brut
2004-02-26 13:17
2004.04.25
Как открыть "сетевые подключения"


14-1080665686
Usver6000
2004-03-30 20:54
2004.04.25
Как в С++ сделать чтобы проги работала без С++


14-1080584908
Piter
2004-03-29 22:28
2004.04.25
Подскажите программу для изготовления Setup ов


1-1081315977
[BAD]Angel
2004-04-07 09:32
2004.04.25
Справка


14-1080554097
Dmitriy O.
2004-03-29 13:54
2004.04.25
Как определить чо нужно а что нет ?