Delphi 为什么从winppla.dll调用函数A_GetUSBBufferLen()不';你不在东京德尔福工作吗?

Delphi 为什么从winppla.dll调用函数A_GetUSBBufferLen()不';你不在东京德尔福工作吗?,delphi,dll,thermal-printer,delphi-10.2-tokyo,Delphi,Dll,Thermal Printer,Delphi 10.2 Tokyo,我正在尝试在Windows 10中使用Argox打印机OS-214 Plus。我已连接打印机,Windows 10已识别,但尚未安装任何驱动程序 我已从路径下载并提取了Delphi 2009示例。\n命令库V409\PPLA\example\Win32\Delphi\u 2009。有一个名为release的文件夹,其中包含一个名为Delphi_2009.exe的编译exe。我放入了release从中提取的dllWinPort.dll和Winppla.dll。\Command Library V4

我正在尝试在Windows 10中使用Argox打印机OS-214 Plus。我已连接打印机,Windows 10已识别,但尚未安装任何驱动程序

我已从路径
下载并提取了Delphi 2009示例。\n命令库V409\PPLA\example\Win32\Delphi\u 2009
。有一个名为
release
的文件夹,其中包含一个名为
Delphi_2009.exe的编译
exe
。我放入了
release
中提取的
dll
WinPort.dll
Winppla.dll
。\Command Library V409\PPLA\Library\32位
。最后,我运行了
Delphi_2009.exe
,它按预期工作,在打印前显示以下消息:

因此,我尝试在Delphi Tokyo中运行下面的示例:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

    var dpCrLf : AnsiString = chr(13)+chr(10);
    var szSavePath : String = 'C:\Argox';
    var szSaveFile : AnsiString = 'C:\Argox\PPLA_Example.Prn';
    var sznop1     : AnsiString = 'nop_front' + Chr(13) + chr(10);
    var sznop2     : AnsiString = 'nop_middle' + Chr(13) + chr(10);
    function  A_Bar2d_Maxi(x:integer; y:integer; primary:integer; secondary:integer; country:integer;
              service:integer; mode:char; numeric:integer; data:AnsiString):integer;stdcall;
              external 'WINPPLA.DLL';
    function  A_Bar2d_Maxi_Ori(x:integer; y:integer; ori:integer; primary:integer; secondary:integer;
              country:integer; service:integer; mode:char; numeric:integer; data:AnsiString):integer;
              stdcall;external 'WINPPLA.DLL';
    function  A_Bar2d_PDF417(x:integer; y:integer; narrow:integer; width:integer; normal:char;
              security:integer; aspect:integer; row:integer; column:integer; mode:char;
              numeric:integer; data:AnsiString):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Bar2d_PDF417_Ori(x:integer; y:integer; ori:integer; narrow:integer; width:integer;
              normal:char; security:integer; aspect:integer; row:integer; column:integer; mode:char;
              numeric:integer; data:AnsiString):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Bar2d_DataMatrix(x:integer; y:integer; rotation:integer; hor_mul:integer;
              ver_mul:integer; ECC:integer; data_format:integer; num_rows:integer; num_col:integer;
              mode:char; numeric:integer; data:AnsiString):integer;stdcall;external 'WINPPLA.DLL';
    Procedure A_Clear_Memory();stdcall;external 'WINPPLA.DLL';
    Procedure A_ClosePrn();stdcall;external 'WINPPLA.DLL';
    function  A_CreatePrn(selection:integer; filename:AnsiString):integer;stdcall;
              external 'WINPPLA.DLL';
    function  A_Del_Graphic(mem_mode:integer; graphic:AnsiString):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Draw_Box(mode:char; x:integer; y:integer; width:integer; height:integer; top:integer;
              side:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Draw_Line(mode:char; x:integer; y:integer; width:integer; height:integer):integer;
              stdcall;external 'WINPPLA.DLL';
    Procedure A_Feed_Label();stdcall;external 'WINPPLA.DLL';
    function  A_Get_DLL_Version(nShowMessage:integer):PAnsiChar;stdcall;external 'WINPPLA.DLL';
    function  A_Get_DLL_VersionA(nShowMessage:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Get_Graphic(x:integer; y:integer; mem_mode:integer; format:char; filename:AnsiString):integer;
              stdcall;external 'WINPPLA.DLL';
    function  A_Get_Graphic_ColorBMP(x:integer; y:integer; mem_mode:integer; format:char;
              filename:AnsiString):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Get_Graphic_ColorBMPEx(x:integer; y:integer; nWidth:integer; nHeight:integer;
              rotate:integer; mem_mode:integer; format:char; id_name:AnsiString; filename:AnsiString):integer;
              stdcall;external 'WINPPLA.DLL';
    function  A_Get_Graphic_ColorBMP_HBitmap(x:integer; y:integer; nWidth:integer; nHeight:integer;
              rotate:integer; mem_mode:integer; format:char; id_name:AnsiString; hbm:HBITMAP):integer;
              stdcall;external 'WINPPLA.DLL';
    function  A_Initial_Setting(Type_Renamed:integer; Source:AnsiString):integer;stdcall;
              external 'WINPPLA.DLL';
    function  A_WriteData(IsImmediate:integer; pbuf:AnsiString; length:integer):integer;stdcall;
              external 'WINPPLA.DLL';
    function  A_ReadData(pbuf:PAnsiChar; length:integer; dwTimeoutms:integer):integer;stdcall;
              external 'WINPPLA.DLL';
    function  A_Load_Graphic(x:integer; y:integer; graphic_name:AnsiString):integer;stdcall;
              external 'WINPPLA.DLL';
    function  A_Open_ChineseFont(path:AnsiString):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Print_Form(width:integer; height:integer; copies:integer; amount:integer;
              form_name:AnsiString):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Print_Out(width:integer; height:integer; copies:integer; amount:integer):integer;
              stdcall;external 'WINPPLA.DLL';
    function  A_Prn_Barcode(x:integer; y:integer; ori:integer; type_Renamed:char; narrow:integer;
              width:integer; height:integer; mode:char; numeric:integer; data:AnsiString):integer;
              stdcall;external 'WINPPLA.DLL';
    function  A_Prn_Text(x:integer; y:integer; ori:integer; font:integer; type_Renamed:integer;
              hor_factor:integer; ver_factor:integer; mode:char; numeric:integer; data:AnsiString):integer;
              stdcall;external 'WINPPLA.DLL';
    function  A_Prn_Text_Chinese(x:integer; y:integer; fonttype:integer; id_name:AnsiString; data:AnsiString;
              mem_mode:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Prn_Text_TrueType(x:integer; y:integer; FSize:integer; FType:AnsiString; Fspin:integer;
              FWeight:integer; FItalic:integer; FUnline:integer; FStrikeOut:integer; id_name:AnsiString;
              data:AnsiString; mem_mode:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Prn_Text_TrueType_W(x:integer; y:integer; FHeight:integer; FWidth:integer;
              FType:AnsiString; Fspin:integer; FWeight:integer; FItalic:integer; FUnline:integer;
              FStrikeOut:integer; id_name:AnsiString; data:AnsiString; mem_mode:integer):integer;
              stdcall;external 'WINPPLA.DLL';
    function  A_Set_Backfeed(back:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Set_BMPSave(nSave:integer; pstrBMPFName:AnsiString):integer;stdcall;
              external 'WINPPLA.DLL';
    function  A_Set_Cutting(cutting:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Set_Darkness(heat:UINT):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Set_DebugDialog(nEnable:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Set_Feed(rate:char):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Set_Form(formfile:AnsiString; form_name:AnsiString; mem_mode:integer):integer;stdcall;
              external 'WINPPLA.DLL';
    function  A_Set_Margin(position:integer; margin:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Set_Prncomport(baud:integer; parity:integer; data:integer; stop:integer):integer;
              stdcall;external 'WINPPLA.DLL';
    function  A_Set_Prncomport_PC(nBaudRate:integer; nByteSize:integer; nParity:integer;
              nStopBits:integer; nDsr:integer; nCts:integer; nXonXoff:integer):integer;stdcall;
              external 'WINPPLA.DLL';
    function  A_Set_Sensor_Mode(type_Renamed:char; continuous:integer):integer;stdcall;
              external 'WINPPLA.DLL';
    function  A_Set_Speed(speed:char):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Set_Syssetting(transfer:integer; cut_peel:integer; length:integer; zero:integer;
              pause:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Set_Unit(unit_Renamed:char):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Set_Gap(gap:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Set_Logic(logic:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Set_ProcessDlg(nShow:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Set_ErrorDlg(nShow:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Set_LabelVer(centiInch:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_GetUSBBufferLen():integer;stdcall;external 'WINPPLA.DLL';
    function  A_EnumUSB(buf:PAnsiChar):integer;stdcall;external 'WINPPLA.DLL';
    function  A_CreateUSBPort(nPort:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_CreatePort(nPortType:integer; nPort:integer; filename:AnsiString):integer;stdcall;
              external 'WINPPLA.DLL';
    function  A_Clear_MemoryEx(nMode:integer):integer;stdcall;external 'WINPPLA.DLL';
    Procedure A_Set_Mirror();stdcall;external 'WINPPLA.DLL';
    function  A_Bar2d_RSS(x:integer; y:integer; ori:integer; ratio:integer; height:integer;
              rtype:char; mult:integer; seg:integer; data1:AnsiString; data2:AnsiString):integer;stdcall;
              external 'WINPPLA.DLL';
    function  A_Bar2d_QR_M(x:integer; y:integer; ori:integer; mult:char; value:integer; model:integer;
              error:char; mask:integer; dinput:char; mode:char; numeric:integer; data:AnsiString):integer;
              stdcall;external 'WINPPLA.DLL';
    function  A_Bar2d_QR_A(x:integer; y:integer; ori:integer; mult:char; value:integer; mode:char;
              numeric:integer; data:AnsiString):integer;stdcall;external 'WINPPLA.DLL';
    function  A_GetNetPrinterBufferLen():integer;stdcall;external 'WINPPLA.DLL';
    function  A_EnumNetPrinter(buf:PAnsiChar):integer;stdcall;external 'WINPPLA.DLL';
    function  A_CreateNetPort(nPort:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Prn_Text_TrueType_Uni(x:integer; y:integer; FSize:integer; FType:AnsiString; Fspin:integer;
              FWeight:integer; FItalic:integer; FUnline:integer; FStrikeOut:integer; id_name:AnsiString;
              data:PWideChar; format:integer; mem_mode:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Prn_Text_TrueType_UniB(x:integer; y:integer; FSize:integer; FType:AnsiString; Fspin:integer;
              FWeight:integer; FItalic:integer; FUnline:integer; FStrikeOut:integer; id_name:AnsiString;
              data:PWideChar; format:integer ; mem_mode:integer):integer;stdcall;external 'WINPPLA.DLL';
    function  A_GetUSBDeviceInfo(nPort:integer; pDeviceName:PAnsiChar; pDeviceNameLen:PInteger;
              pDevicePath:PAnsiChar; pDevicePathLen:PInteger):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Set_EncryptionKey(encryptionKey:AnsiString):integer;stdcall;external 'WINPPLA.DLL';
    function  A_Check_EncryptionKey(decodeKey:AnsiString; encryptionKey:AnsiString;
              dwTimeoutms:integer):integer;stdcall;external 'WINPPLA.DLL';

procedure TForm1.Button1Click(Sender: TObject);
var
     ret,nLen,sw : integer;
     pbuf : array[0..127] of AnsiChar;
     ver : PAnsiChar;
     strmsg : string;
     len1,len2 : integer;
     buf1,buf2 : AnsiString;
     buff1 : array[0..127] of WideChar;
     himage : HBITMAP;
begin
     // Test code start
     // open port.
     // dll version.
     ver := A_Get_DLL_Version(0);

     // search port.
     nLen := A_GetUSBBufferLen() + 1;
     strmsg := 'DLL ' + ver + dpCrLf;   // only sample coding, not smart.
     If nLen > 1 then
     begin
         len1 := 128;
         len2 := 128;
         SetLength(buf1,len1);
         SetLength(buf2,len2);
         A_EnumUSB(pbuf);
         A_GetUSBDeviceInfo(1, PAnsiChar(buf1), @len1, PAnsiChar(buf2), @len2);
         sw := 1;
         If 0 < sw then
                ret := A_CreatePrn(12, PAnsiChar(buf2)) // open usb.
         else
                ret := A_CreateUSBPort(1); // must call A_GetUSBBufferLen() function fisrt.
         If 0 < ret then
             strmsg := strmsg + 'Open USB fail!'
         else
         begin
             SetLength(buf1,len1);
             SetLength(buf2,len2);
             strmsg := strmsg + 'Open USB:' + dpCrLf+ 'Device name: ';
             strmsg := strmsg + buf1;
             strmsg := strmsg + dpCrLf+ 'Device path: ';
             strmsg := strmsg + buf2;
             //sw := 2;
             If 2 = sw then
             begin
                //get printer status.
                pbuf[0] := #$01;
                pbuf[1] := #$46;
                pbuf[2] := #$0D;
                pbuf[3] := #$0A;
                A_WriteData(1, pbuf, 4);   //<SOH>F
                ret := A_ReadData(pbuf, 2, 1000);
             end;
         end;
     end
     else
     begin
         CreateDirectory(PChar(szSavePath), nil);
         ret := A_CreatePrn(0, szSaveFile);   // open file.
         strmsg := strmsg + 'Open ' + szSaveFile;
         if 0 < ret then
             strmsg := strmsg + ' file fail!'
         else
             strmsg := strmsg + ' file succeed!';
     end;
     ShowMessage(strmsg);
     If 0 < ret then
         exit;

     // sample setting.
     A_Set_DebugDialog(1);
     A_Set_Unit('n');
     A_Set_Syssetting(1, 0, 0, 0, 0);
     A_Set_Darkness(8);
     A_Del_Graphic(1, '*');   // delete all picture.
     A_Clear_Memory();   // clear memory.
     A_WriteData(0, sznop2, StrLen(PAnsiChar(sznop2)));
     A_WriteData(1, sznop1, StrLen(PAnsiChar(sznop1)));

     // draw box.
     A_Draw_Box('A', 10, 10, 380, 280, 4, 4);
     A_Draw_Line('A', 200, 10, 4, 280);

     // print text, true type text.
     A_Prn_Text(20, 30, 1, 2, 0, 1, 1, 'N', 2, 'PPLA Lib Example');
     A_Prn_Text_TrueType(20, 60, 30, 'Arial', 1, 400, 0, 0, 0, 'AA', 'TrueType Font', 1);   // save in ram.
     A_Prn_Text_TrueType_W(20, 90, 20, 20, 'Times New Roman', 1, 400, 0, 0, 0, 'AB', 'TT_W: 多字元測試', 1);

     StringToWideChar('TT_Uni: 多字元測試', buff1, 128);  // Converts double-byte characters to UNICODE(wide characters).
     buff1[13] := #$0000;   // null.
     A_Prn_Text_TrueType_Uni(20, 120, 30, 'Times New Roman', 1, 400, 0, 0, 0, 'AC', buff1, 1, 1);   // UTF-16

     buff1[0] := #$FEFF;   // UTF-16.
     StringToWideChar('TT_UniB: 多字元測試', buff1+1, 128);  // Converts double-byte characters to UNICODE(wide characters).
     buff1[15] := #$0000;   // null.
     A_Prn_Text_TrueType_UniB(20, 150, 30, 'Times New Roman', 1, 400, 0, 0, 0, 'AD', buff1, 0, 1);   // Byte Order Mark.

     // barcode.
     A_Prn_Barcode(220, 60, 1, 'A', 0, 0, 20, 'B', 1, '1234');
     A_Bar2d_QR_A(220, 100, 1, '3', 10, 'N', 0, 'QR CODE');

     // picture.
     A_Get_Graphic_ColorBMP(220, 150, 1, 'B', 'bb.bmp');   // Color bmp file to ram.
     A_Get_Graphic_ColorBMPEx(220, 170, 200, 150, 2, 1, 'B', 'bb1', 'bb.bmp');//180 angle.
     himage := LoadImage(0,'bb.bmp',IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
     A_Get_Graphic_ColorBMP_HBitmap(300, 150, 250, 80, 1, 1, 'B', 'bb2', himage);//90 angle.
     If 0 <> himage then
         DeleteObject(himage);

     // output.
     A_Print_Out(1, 1, 2, 1);   // copy 2.

     // close port.
     A_ClosePrn();
end;

end.
单元1;
接口
使用
窗口、消息、系统工具、变体、类、图形、控件、窗体、,
对话框,stdctrl;
类型
TForm1=类(TForm)
按钮1:t按钮;
程序按钮1点击(发送方:ToObject);
私有的
{私有声明}
公众的
{公开声明}
结束;
变量
表1:TForm1;
实施
{$R*.dfm}
var-dpCrLf:AnsiString=chr(13)+chr(10);
var szSavePath:String='C:\Argox';
var szSaveFile:AnsiString='C:\Argox\PPLA_Example.Prn';
变量sznop1:AnsiString='nop_front'+Chr(13)+Chr(10);
变量sznop2:AnsiString='nop_middle'+Chr(13)+Chr(10);
函数A_Bar2d_Maxi(x:整数;y:整数;主:整数;次:整数;国家:整数;
服务:整数;模式:字符;数字:整数;数据:AnsiString):整数;stdcall;
外部“WINPPLA.DLL”;
函数A_Bar2d_Maxi_Ori(x:integer;y:integer;Ori:integer;primary:integer;secondary:integer;
国家/地区:整数;服务:整数;模式:字符;数字:整数;数据:AnsiString):整数;
stdcall;外部“WINPPLA.DLL”;
函数A_Bar2d_PDF417(x:integer;y:integer;窄:integer;宽:integer;法线:char;
安全性:整数;方面:整数;行:整数;列:整数;模式:字符;
数值:整数;数据:AnsiString):整数;stdcall;外部“WINPPLA.DLL”;
函数A_Bar2d_PDF417_Ori(x:整数;y:整数;Ori:整数;窄:整数;宽:整数;
普通:字符;安全性:整数;方面:整数;行:整数;列:整数;模式:字符;
数值:整数;数据:AnsiString):整数;stdcall;外部“WINPPLA.DLL”;
函数A_Bar2d_DataMatrix(x:integer;y:integer;旋转:integer;hor_mul:integer;
ver_mul:integer;ECC:integer;数据格式:integer;num_行:integer;num_列:integer;
模式:字符;数字:整数;数据:AnsiString):整数;stdcall;外部“WINPPLA.DLL”;
程序A_清除_内存();stdcall;外部“WINPPLA.DLL”;
程序A_ClosePrn();stdcall;外部“WINPPLA.DLL”;
函数A_CreatePrn(选择:整数;文件名:AnsiString):整数;stdcall;
外部“WINPPLA.DLL”;
函数A_Del_图形(mem_模式:整数;图形:AnsiString):整数;stdcall;外部“WINPPLA.DLL”;
函数A_绘制框(模式:字符;x:整数;y:整数;宽度:整数;高度:整数;顶部:整数;
边:整数):整数;stdcall;外部“WINPPLA.DLL”;
函数A_绘制线(模式:字符;x:整数;y:整数;宽度:整数;高度:整数):整数;
stdcall;外部“WINPPLA.DLL”;
程序A_进给_标签();stdcall;外部“WINPPLA.DLL”;
函数A_Get_DLL_Version(nShowMessage:integer):PAnsiChar;stdcall;外部“WINPPLA.DLL”;
函数A_Get_DLL_VersionA(nShowMessage:integer):integer;stdcall;外部“WINPPLA.DLL”;
函数A_Get_Graphic(x:integer;y:integer;mem_mode:integer;格式:char;文件名:AnsiString):integer;
stdcall;外部“WINPPLA.DLL”;
函数A_Get_Graphic_ColorBMP(x:integer;y:integer;mem_mode:integer;format:char;
文件名:AnsiString):整数;stdcall;外部“WINPPLA.DLL”;
函数A_Get_Graphic_ColorBMPEx(x:integer;y:integer;nWidth:integer;nHeight:integer;
旋转:整数;内存模式:整数;格式:字符;id\u名称:AnsiString;文件名:AnsiString):整数;
stdcall;外部“WINPPLA.DLL”;
函数A_Get_Graphic_ColorBMP_HBitmap(x:integer;y:integer;nWidth:integer;nHeight:integer;
旋转:整数;内存模式:整数;格式:字符;id\u名称:AnsiString;hbm:HBITMAP):整数;
stdcall;外部“WINPPLA.DLL”;
函数A_初始_设置(类型_重命名为:integer;源:AnsiString):integer;stdcall;
外部“WINPPLA.DLL”;
函数A_WriteData(IsImmediate:integer;pbuf:AnsiString;长度:integer):integer;stdcall;
外部“WINPPLA.DLL”;
函数A_ReadData(pbuf:PAnsiChar;长度:整数;dwTimeoutms:integer):整数;stdcall;
外部“WINPPLA.DLL”;
函数A_加载_图形(x:整数;y:整数;图形名称:AnsiString):整数;stdcall;
外部“WINPPLA.DLL”;
函数A_Open_ChineseFont(路径:AnsiString):整数;stdcall;外部“WINPPLA.DLL”;
函数A_打印表单(宽度:整数;高度:整数;份数:整数;数量:整数;
表单名称:AnsiString):整数;stdcall;外部“WINPPLA.DLL”;
函数A_打印输出(宽度:整数;高度:整数;副本:整数;数量:整数):整数;
stdcall;外部“WINPPLA.DLL”;
函数A_Prn_条形码(x:integer;y:integer;ori:integer;type_重命名为:char;窄:integer;
宽度:整数;高度:整数;模式:字符;数字:整数;数据:AnsiString):整数;
stdcall;外部“WINPPLA.DLL”;
函数A_Prn_Text(x:integer;y:integer;ori:integer;font:integer;type_重命名为:integer;
水平因子:整数;垂直因子:整数;模式:字符;数值:整数;数据:AnsiString):整数;
stdcall;外部