Главная страница
    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.065 c
6-1077983460
Novichok
2004-02-28 18:51
2004.04.25
Загруженность сетевой карты


8-1074944902
_MAD_
2004-01-24 14:48
2004.04.25
работа с bmp


7-1078344685
Raki
2004-03-03 23:11
2004.04.25
Drag`n`Drop до того, как пользователь отпустит кнопку мыши


14-1080734429
Rule
2004-03-31 16:00
2004.04.25
Кто знает альтернативу JustOne ?


9-1067791476
DRON
2003-11-02 19:44
2004.04.25
Как динамически менять степень прозрачности под PowerDraw?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский