borland
delphi2.0/3.0以其強大的功能及方便快捷的程式設計
而為廣大程式設計師所喜愛。但是在用它來編寫工業控制程式時,需要對
計算機所連線的外部裝置進行操作,即直接對i/o位址進行讀寫操作,
這時該軟體就顯得有些美中不足了。
針對這一問題,筆者使用
delphi 2.0/3.0以內嵌彙編的方式編寫
了乙個模組port95. pas,可方便地實現直接對i/o位址的讀寫操作,代
碼簡捷且執行速度較快。
使用時只要將port95.pas加到工程檔案中,並在users中加上port
95,就可以在應用程式中直接對i/o埠進行操作。
具體的實現方法及port95.pas的源**如下:
unit port95;
inte***ce
function portreadbyte(addr:word) : byte;
function portreadword(addr:word) : word;
function portreadwordls(addr:word) : word;
procedure portwritebyte(addr:word; value:byte);
procedure portwriteword(addr:word; value:word);
procedure portwritewordls(addr:word; value:word);
implementation
function portreadbyte(addr:word) : byte; assembler; regi
ster;
a**mov dx,ax
in al,dx
end;
function portreadword(addr:word) : word; assembler; regi
ster;
a**mov dx,ax
in ax,dx
end;
function portreadwordls(addr:word) : word; assembler; re
gister;
const
delay = 150;
// depending of cpu speed and cards speed
a**mov dx,ax
in al,dx
//read lsb port
mov ecx,delay
@1:loop @1 //delay between two reads
xchg ah,al
inc dx
//port+1
in al,dx //read msb port
xchg ah,al //restore bytes order
end;
procedure portwritebyte(addr:word; value:byte); assemble
r; register;
a**xchg ax,dx
out dx,al
end;
procedure portwriteword(addr:word; value:word); assemble
r; register;
a**xchg ax,dx
out dx,ax
end;
procedure portwritewordls(addr:word; value:word); assemb
ler; register;
const
delay = 150;
// depending of cpu speed and cards speed
a**xchg ax,dx
out dx,al
mov ecx,delay
@1:loop@1
xchg ah,al
inc dx
out dx,al
end;
end. //單元結束
上述port95.pas適用於
delphi 2.0/3.0、windows 95 作業系統
。
在Delphi中操作Mysql
以前在vc中使用過mysql,當時是找的乙個現成的c mysql類。最近在delphi中又需要操作mysql,最初找了個封閉過的類,但已經是七八年以前的程式了,我機器上裝的是mysql5.1,使用了5.1中的libmysql.dll 2.25mb 連線正常 查詢乙個字段正常,但查詢兩個欄位就只能獲取...
關於 delphi中with在Python中的討論
下面這段是我昨天在python乙個討論群裡對delphi中with在python中的討論,希望能對大家有所啟發,同時我也將這個討論記錄下來,有時間多體會體會。不要小看這段,最後 seewind 說的話很經典。江南 23 46 27 其實 我覺得是想找 python中類似 delphi 的 with ...
在Delphi中定位檔案位置
在delphi中,定位檔案的操作主要有兩種方法。一種是直接定位檔案,即通過 開啟 對話方塊 opendialog 控制項來實現。另一種是只定位到資料夾,然後再在此資料夾內尋找檔案,這種定位方法是利用delphi提供的selectdirectory函式。這個函式是在filectrl單元中定義的,因此在...