佳博打印机 POS调用DLL问题,在delphi中死活调用不出来,求教!代码如下:function GPNetOpenEX(ipaddr:pchar;connecttime:integer;writetime:integer):Integer; stdcall; external  'GPNetio.dll';
function GPNetOpen(ipaddr:pansistring;connecttime:integer;writetime:integer):Boolean; stdcall; external 'GPNetio.dll';implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
  openPrn:boolean;
  ipadd:string;
begin
  ipadd:='192.168.0.230';
  openprn:=GPNetOpen(pansistring(ipadd),3,3);
  if openprn then
  begin
    showmessage('连接成功! ');
  end
  else
  begin
    showmessage('连接失败!');
  end;
end;
改成PCHAR也不行!函数原型如下:int WINAPI GPNetOpenEX(LPCTSTR ipaddr,int connecttime,int writetime) 
 
/************************************************ 
**函数名称:GPNetOpenEX 
**功     能:连接打印设备。 
**参     数:LPCTSTR ipaddr,设备 IP地址 
int writetime,写超时,单位:秒 
int connecttime,连接超时  ,单位:秒    
**返  回  值:  返回大于或等于 0 的连接句柄(conn_num>=0),该值用于发送数据,或关闭连接, 
        一个进程最多可以同时打开 40个连接,可用于多线程同时 
        工作. 
             返回‐1 时连接失败。 BOOL WINAPI GPNetOpen(LPCTSTR ipaddr,int connecttime,int writetime) 
/************************************************ 
**函数名称:GPNetOpen 
**功     能:连接打印设备。 
**参     数:LPCTSTR ipaddr,设备 IP地址 
int writetime,写超时,单位:秒 
int connecttime,连接超时  ,单位:秒    
**返  回  值:TRUE    成功; 
             FALSE   失败。 
*************************************************/ 

解决方案 »

  1.   

    pansistring?试过pchar吗,开发商应该提供相关语言的demo吧
      

  2.   

    试过pchar也不行,开发商没有例程
      

  3.   

    我公司也是用的这个品牌的.只丢给我们一个DLL一个说明书PDF说明.DEMO之类全没有.这点的确不如北洋...
      

  4.   

    GPNetOpen('192.168.0.230',3,3);
    直接写IP,不转换一次试过了没?
      

  5.   

    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;   con_num:integer; implementation {function GPNetOpenEX(ip:pchar;connecttimt:Integer;weitertime:Integer):integer; stdcall;   external 'GPNetio.dll' name 'GPNetOpenEX' ; function GPNetSendEX(char1:pchar;len:Integer;con_num:integer):boolean; stdcall;   external 'GPNetio.dll' name 'GPNetSendEX'; function GPNetCloseEX(con_num:integer):boolean; stdcall;   external 'GPNetio.dll' name 'GPNetCloseEX';   //} function GPNetOpen(ip:string;connecttimt:Integer;weitertime:Integer):boolean; stdcall;   external 'GPNetio.dll' name 'GPNetOpen' ; function GPNetSend(char1:pchar;len:Integer):boolean; stdcall;   external 'GPNetio.dll' name 'GPNetSend'; function GPNetClose():boolean; stdcall;   external 'GPNetio.dll' name 'GPNetClose';  //}    {$R *.dfm}  procedure TForm1.Button1Click(Sender: TObject); var   flag:boolean; begin   {con_num:=GPNetOpenEX('222.27.255.229',1,1) ;   if con_num>0 then     begin       GPNetSendEX('清拍黄瓜',8,con_num);       GPNetSendEX('盘  8.00',8,con_num);       GPNetCloseEX(con_num);      end;      //  }   flag:=GPNetOpen('222.27.255.229',10,10) ;   if flag then     begin   GPNetSend('清拍黄瓜',8);   GPNetSend('盘  8.00',8);   GPNetClose();    end;  // }  end;  end.
      

  6.   

    delphi下调试能搞定。可以我们现在是在VB2008下调试,死都打不开连接。现在用TCP直接给它发送数据能打印的。晕死。
      

  7.   

    各位兄弟姐妹,,我已经搞定了,不过,我是 VC++, ^_^, 我只研究了三个函数,其他参数不知道。
    int i;
    HINSTANCE  hmod_gp = NULL;
    typedef BOOL (WINAPI * FnGPNetOpen)(LPCTSTR a,int co_time,int wo_time);
    typedef void (WINAPI * FnGPNetClose)();
    typedef int (WINAPI * FnGPNetSend)(LPCTSTR a,int len);FnGPNetOpen gpopen = NULL;
    FnGPNetClose gpclose = NULL;
    FnGPNetSend  gpsend = NULL;////////////////////////////////////////////////////////////
    hmod_gp = ::LoadLibrary ("ZYPOS58EX.dll");
    if (hmod_gp==NULL) 
    {
    AfxMessageBox("外设动态链接库 ZYPOS58EX.DLL 加载失败!");
    return;
    }
    gpopen  = (FnGPNetOpen)GetProcAddress (hmod_gp,"GPNetOpen");
    gpclose = (FnGPNetClose)GetProcAddress (hmod_gp,"GPNetClose");
    gpsend  = (FnGPNetSend)GetProcAddress (hmod_gp,"GPNetSend");
    /////////////////////////////////////////////////////////////////////
    if (!gpopen("192.168.0.99",60,30)) return;for(i=0;i<20;i++)
    gpsend("01234567890\n",12);gpclose();::FreeLibrary(hmod_gp);
    gpopen=NULL;
    gpclose=NULL;
    gpsend=NULL;
      

  8.   

    楼主,你看清楚了,他的DLL 是 WINAPI  不是  stdcall
    在C++中,是绝对不一样的,不知道 VB 和 DP 是不是有区别。