Форум: "WinAPI";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
ВнизОткрыть порт "DOT4_001" Найти похожие ветки
← →
cerber (2006-04-16 23:28) [0]при установке принтера НР 1220 он прописал свой порт "DOT4_001"(потому что USB) через который работает. Как открыть этот порт на АПИ и слать(принимать оттуда) данные?
← →
DC-AC (2006-04-17 07:33) [1]Через SetupAPI. При этом ты должен знать GUID этого порта (ищется в реестре).
← →
cerber (2006-04-17 23:31) [2]thanks. Будем пробовать.
← →
DC-AC (2006-04-18 09:27) [3]Вот, кстати, нашёл небольшой примерчик, когда начинал Эпсоны программировать, тренировался...
GUID замени на свой.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function OpenDevice(MyInterfaceGuid: PGUID; DeviceNum: Integer): THandle;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses SetupApi;
const GUID_CLASS_ID: TGUID = "{762bb1b4-5164-11d1-b00b-00c0d1570f9e}";
{$R *.DFM}
function TForm1.OpenDevice(MyInterfaceGuid: PGUID; DeviceNum: Integer): THandle;
var Hdi: HDEVINFO;
iHdi: Integer;
Idd: SP_DEVICE_INTERFACE_DATA;
pIddDetail: PSPDeviceInterfaceDetailData;
DesiredLength: Integer;
retval: THandle;
begin
Hdi:=SetupDiGetClassDevs(MyInterfaceGuid,
nil,
0,
DIGCF_PRESENT or DIGCF_INTERFACEDEVICE);
iHdi:=Cardinal(Hdi);
if iHdi=INVALID_HANDLE_VALUE then
begin
MessageBox(Application.Handle,"SetupDiGetClassDevs error",PChar(Application.Title),MB_ICONSTOP);
Result:=INVALID_HANDLE_VALUE;
Exit;
end;
Idd.cbSize:=sizeof(SP_DEVICE_INTERFACE_DATA);
if SetupDiEnumDeviceInterfaces(Hdi,
nil,
MyInterfaceGuid^,
DeviceNum,
Idd) = false then
begin
MessageBox(Application.Handle,"SetupDiEnumDeviceInterfaces error",PChar(Application.Title),MB_ICONSTOP);
Result:=INVALID_HANDLE_VALUE;
Exit;
end;
SetupDiGetInterfaceDeviceDetail(Hdi,
@Idd,
nil,
0,
@DesiredLength,
nil);
pIddDetail:=AllocMem(DesiredLength);
pIddDetail.cbSize:=sizeof(TSPDeviceInterfaceDetailData);
if SetupDiGetInterfaceDeviceDetail(Hdi,
@Idd,
pIddDetail,
DesiredLength,
@DesiredLength,
nil) = false then
begin
FreeMem(pIddDetail);
MessageBox(Application.Handle,"SetupDiGetInterfaceDeviceDetail error",PChar(Application.Title),MB_ICONSTOP);
Result:=INVALID_HANDLE_VALUE;
Exit;
end;
SetupDiDestroyDeviceInfoList(Hdi);
retval:=CreateFile(pIddDetail.DevicePath,
GENERIC_READ or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
0,
0);
FreeMem(pIddDetail);
Result:=retval;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDevice(@GUID_CLASS_ID, 0) <> INVALID_HANDLE_VALUE
then Label1.Caption := " OK" else Label1.Caption := "ERROR";;
end;
end.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.012 c