Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

Работа с 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.04 c
1-1081298822
olhovik
2004-04-07 04:47
2004.04.25
Вставка в .ехе


8-1074297795
Крусайдер
2004-01-17 03:03
2004.04.25
У меня есть битмап. Как его отобразить слева на право?


3-1080736757
прогерШ
2004-03-31 16:39
2004.04.25
Как отменить при мультиселекте все выделения?


4-1077856278
Alexander666
2004-02-27 07:31
2004.04.25
Raw Input Thread


14-1081011277
Knight
2004-04-03 20:54
2004.04.25
Общая тема "Ищу программу"...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский