Главная страница
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.035 c
15-1152294495
palva
2006-07-07 21:48
2006.08.06
Сильвио Берлускони предстанет перед судом


2-1153074505
alexandrine
2006-07-16 22:28
2006.08.06
Сорри за простой, наверное вопрос...


4-1145014299
Sinka
2006-04-14 15:31
2006.08.06
Задний фон на TCustomObject (в частности на TTreeView)


15-1152129774
Имя не скажу
2006-07-06 00:02
2006.08.06
Проблема больших целых чисел


2-1152523701
filh
2006-07-10 13:28
2006.08.06
Подмена инфы о системе