Вниз
Скачать: 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 вся ветка

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



Память: 0.47 MB
Время: 0.031 c
2-1152790137
novill
2006-07-13 15:28
2006.08.06
Какой тип лучше использовать для небольших строк?


2-1153302763
novill
2006-07-19 13:52
2006.08.06
Обработчик один - классы объектов разные, как объявить?


3-1148858671
x-relax
2006-05-29 03:24
2006.08.06
Поле Time Paradox, SQL запрос


1-1151182022
AlexeyT
2006-06-25 00:47
2006.08.06
TImage: баг с иконками большими 32х32


2-1153218226
spogi
2006-07-18 14:23
2006.08.06
opyat pro QRExpr...




   Наверх