Главная страница
    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.031 c
1-1081497806
Vlad1
2004-04-09 12:03
2004.04.25
Проблемы с Delphi 8. WinXP


7-1077707481
CrytoGen
2004-02-25 14:11
2004.04.25
проблемы с CreateProcessAsUser


1-1081667354
hgd
2004-04-11 11:09
2004.04.25
Как нарисовать стрелку


1-1081274081
GanibalLector
2004-04-06 21:54
2004.04.25
StringGrid


1-1081405239
prorok2
2004-04-08 10:20
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский