Вниз
Скачать: CL | DM;

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

← →
огого   (2004-11-05 12:42) [0]

Под win2000 делаю все это, а  DataOut(0,3FC);, DataOut(3,3FC); не работают почему-то?
PortIO.sys находится в каталоге с exe.

function OpenPort():integer; //запускать один раз при инициализации приложения
begin
try
 ser1:= "PortIO"; //ключ реестра
 ser2:= "All port system";//DisplayName
 hSCManager:=OpenSCManager(nil,nil,SC_MANAGER_CREATE_SERVICE);//открываем SC Manager базу данных
 GetFullPathName("PortIO.sys",sizeof(acDriverPath),@acDriverPath,lpfPart); //полный путь
 path:= acDriverPath;
   //hService:= OpenService(hSCManager,PChar(ser1),SERVICE_START+$10000);
 hService:=CreateService(hSCManager,ser1,ser2,SERVICE_START+$10000,
          SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START,SERVICE_ERROR_IGNORE,
          Path, nil, nil, nil, nil, nil);//создаем сервис драйвера
 str3:="SYSTEM\CurrentControlSet\Services\PortIO";//путь в реестре
 openkey:=RegOpenKeyEx(HKEY_LOCAL_MACHINE,str3,0,KEY_CREATE_SUB_KEY + KEY_SET_VALUE,Hkey1);
 dwProcessId:=GetCurrentProcessId;//получаем Id процесса
 str4:= "ProcessId";
 openkey:=RegSetValueEx(Hkey1,str4,0, REG_DWORD,@dwProcessId, sizeof(DWORD));
 lpc:=nil;
 StartService(hService,0, lpc); //запускаем сервис
 RegDeleteValue(hkey1,str4);//удаляем значенпе в реестре
 RegCloseKey(hkey1); //закрываем ключ
 DeleteService(hService); //удаляем сервис
 CloseServiceHandle(hService);
 CloseServiceHandle(hSCManager);//закрываем SC Manager
 result:=0; //всё прошло успешно
except
 result:=1;//что-то не так
end;
end;

procedure DataOut(ByteValue:byte;PortAddress:word); //подпрограмма работы с внешним кодом вывода значений через порт
 asm
    push dx//сохранить значения  dx в стеке
    mov dx,PortAddress//dx=0378h адресс порта данных
    mov al, ByteValue //al=ByteValue данные для вывода в порт
    out dx,al //операция вывода
    pop dx // востановить значения
 end;


← →
Reindeer Moss Eater ©   (2004-11-05 12:55) [1]

Целых две статьи есть прямо на этом сайте.


← →
-=SS=- ©   (2004-11-05 13:03) [2]


> out dx,al /

А что ты хотел ?  Под Win NT эта команда не покатит. Выдаст ошибку чтото типа "Priveleged Instruction"



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.02 c
1-1101946013
Змей
2004-12-02 03:06
2004.12.19
listview


3-1100872886
Wolffgang
2004-11-19 17:01
2004.12.19
fkCalculated = -1, потом 2


14-1100622564
ИМХО
2004-11-16 19:29
2004.12.19
Связать мобильник с компом


3-1100700425
Александр_
2004-11-17 17:07
2004.12.19
Как узнать о результате выполнения запроса в InterBase?


1-1101965467
Pupkov
2004-12-02 08:31
2004.12.19
Поиск проседуры в runtime пакетах




   Наверх