Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.06;
Скачать: CL | DM;

Вниз

Открыть порт "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 вся ветка

Текущий архив: 2006.08.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.072 c
15-1151863187
Handle
2006-07-02 21:59
2006.08.06
Люди поздравьте меня


2-1152879733
-=Germe$=-
2006-07-14 16:22
2006.08.06
Вопрос связан с перехватом времени


2-1152875372
crazy_corpse
2006-07-14 15:09
2006.08.06
ВОПРОСЫ АЛГОРИТМОВ!


15-1151130951
IMHO
2006-06-24 10:35
2006.08.06
Взрыв ноутбука на конференции в Японии


3-1148922065
alpha5
2006-05-29 21:01
2006.08.06
Странная ошибка