用C++写的dll跟pos机通信,两个函数
  function OpenComm(lpComPort: Integer; lpBaudRate: Integer; timeout: SmallInt): Integer; cdecl;              external 'UnitPad_dll.dll';
  function SendReq(nReqInfoLen: Longint; ReqInfo: TByteArr): Integer; cdecl; external 'UnitPad_dll.dll';  OpenComm函数是打开com口,SendReq是发送命令;TByteArr 是byte类型的数组begin
  i := OpenComm(com, 57200, 360);
  if i = 1 then
    ShowMessage('连接成功');
   
  ss := '00'; //收款
  sb := GetBytes(ss);
  r := SendReq(Length(sb), sb);
  if r <> 1 then
    ShowMessage('与pos机通信失败');
end;这样写可以成功。但是如果我把
  if i = 1 then
    ShowMessage('连接成功');
这句去掉。SendReq就返回错误了,不知道为啥

解决方案 »

  1.   

    你OpenComm是自定义函数吗?是的话就把代码贴出来看看。另外你可以用Sleep(1000);来代替if i = 1 then
      ShowMessage('连接成功');
    看看
      

  2.   


    sleep(1000);//可以加等待时间
    if i = 1 then begin
      ss := '00'; //收款
      sb := GetBytes(ss);
      r := SendReq(Length(sb), sb);
      if r <> 1 then
      ShowMessage('与pos机通信失败');
    end;