⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 initprinter.pas

📁 日昌餐饮管理系统是用Delphi7+SQL写的管理系统
💻 PAS
字号:
unit initprinter;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, ADODB, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    selport: TADOQuery;
    rjsado: TADOConnection;
    Timer1: TTimer;
    Button2: TButton;
    prtsetQ: TADOQuery;
    Button3: TButton;
    prtQ: TADOQuery;
    ADOQuery1: TADOQuery;
    ADOQuery2: TADOQuery;
    selportID: TAutoIncField;
    selportdjh: TIntegerField;
    selportyhh: TStringField;
    selporttwbh: TStringField;
    selportrq: TDateTimeField;
    selportmc: TStringField;
    selportgg: TStringField;
    selportdj: TBCDField;
    selportsl: TBCDField;
    selportje: TBCDField;
    selportfkbz: TBooleanField;
    selportzfbz: TBooleanField;
    selportzsbz: TBooleanField;
    selportcfdyjhm: TStringField;
    selportccjdyjhm: TStringField;
    selporttype: TStringField;
    ADOQuery3: TADOQuery;
    selportmemo: TStringField;
    function truc(port:string;disp_info:string):integer;
    procedure FormCreate(Sender: TObject);
    function initprt(port:string;disp_info:string):integer;
  private
    computer_name:string;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function Tform1.initprt(port:string;disp_info:string):integer;
 var
   comport_display:string;
   hcom:Thandle;
   lpdcb:Tdcb;
   sendnumber:dword;
   display:string[48];
   hxqlen,ii:integer;
begin
  if pos(computer_name,port)>0 then
  begin
    ii:=pos(computer_name,port);
    comport_display:=copy(port,1,ii-1)+'.'+copy(port,ii+length(computer_name),length(port));
  end
  else comport_display:=port;
  hxqlen:=0;
  while comport_display=comport_display do
  begin
   hcom:=createfile(pchar(comport_display), generic_write,0,Nil,OPEN_EXISTING,
            file_attribute_normal,0);
   if hcom<>4294967295 then break;
   hxqlen:=hxqlen+1;
   if hxqlen>1000 then
    begin
     messagedlg('打开 '+port+'端口失败!'+#13+'请检查打印机及其线路!',mtwarning,[mbok],0);
     exit;
    end;
  end;
  getcommstate(hcom,lpdcb);
  lpdcb.baudrate:=9600;
  lpdcb.DCBlength:=48;
  lpdcb.Parity:=0;
  lpdcb.ByteSize:=8;
  lpdcb.StopBits:=1;
  lpdcb.XonLim:=2048;
  lpdcb.XoffLim:=512;
  lpdcb.XonChar:=#17;
  lpdcb.XoffChar:=#19;
  setcommstate(hcom,lpdcb);
  disp_info:='打印机测试';
  display:=#27#97#1+disp_info+#27#64;
  hxqlen:=length(display);
  writefile(hcom,display,hxqlen,sendnumber,nil);
  closehandle(hcom);
  truc(comport_display,'');
  result:=0;
end;
function Tform1.truc(port:string;disp_info:string):integer;
 var
   comport_display:string;
   hcom:Thandle;
   lpdcb:Tdcb;
   sendnumber:dword;
   display:string[40];
begin
  //票打切纸
  comport_display:=port;
  hcom:=createfile(pchar(comport_display), generic_write,0,Nil,open_always,
            file_attribute_normal,0);

  getcommstate(hcom,lpdcb);
  lpdcb.baudrate:=9600;
  if lpdcb.ByteSize=7 then lpdcb.ByteSize:=8;
  setcommstate(hcom,lpdcb);
  display:=#27#97+#6+disp_info+ #13;
  writefile(hcom,display,length(display)+1,sendnumber,nil);
  display:=#27#100+#1;
  writefile(hcom,display,length(display)+1,sendnumber,nil);
  closehandle(hcom);
  result:=0;
end;

procedure TForm1.FormCreate(Sender: TObject);
var dwSize:DWord;
    flnm:string;
    lpBuffer: array[0..MAX_PATH] of char;
begin
     if not rjsado.Connected then
     begin
       flnm:=ExtractFilePath(Application.ExeName)+'rjscygl.udl';
       rjsado.ConnectionString:='FILE NAME='+flnm;
       RJSADO.Connected:=true;
     end;
     dwSize:= MAX_PATH;
     if not GetComputerName(lpBuffer, dwSize) then
        raise Exception.Create(SysErrorMessage(GetLastError()));
      computer_name:= StrPas(lpBuffer);
     form1.WindowState:=wsminimized;
     adoquery2.Close;
     adoquery2.SQL.Clear;
     adoquery2.SQL.Add('select * from prtset where port like '+''''+'%'+computer_name+'%'+'''');
     adoquery2.Open;
     while not adoquery2.Eof do
     begin
       initprt(adoquery2.FieldByName('port').AsString,'a');
       adoquery2.Next;
     end;
     rjsado.Connected:=false;
     application.Terminate;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -