在做一个读卡器的接口。只给了一个vb的demo 。怎么试也不成
dll 参数
Private Declare Function ic_init Lib "MWIC_32" (ByVal port As Long, ByVal baud As Long) As LongPrivate Declare Function readCard Lib "BGCard" (ByVal icDev As Long, ByVal userCode As String, cardAmount As Single, meterAmount As Single, TestAmount As Single, inserted As Byte) As LongPrivate Declare Function writeCard Lib "BGCard" (ByVal icDev As Long, ByVal userCode As String, ByVal Amount As Single, ByVal saveInfo As String) As Long//读卡部分
    Dim icDev As Long
    Dim reVal As Long
    Dim userCode As String * 8
    Dim cardAmount, meterAmount, TestAmount As Single
    Dim inserted As Byte
    icDev = ic_init(0, 9600) '串口一
    reVal = readCard(icDev, userCode, cardAmount, meterAmount, TestAmount, inserted)
    If reVal = 0 Then
        MsgBox "读卡成功。用户号:" & userCode & ", 卡上气量:" & cardAmount & ""
    Else
        MsgBox "读卡失败,错误号:" & reVal
    End If
    ic_exit icDev//写卡部分'////全局变量,保存返回信息
Private Sub WriteInfo(s As String)
Open "c:\saveinf.txt" For Output As #1
Print #1, s
Close #1
End Sub
Private Function ReadInfo() As String
Open "c:\saveinf.txt" For Input As #1
Dim FileData As String
Input #1, FileData
ReadInfo = FileData
Close #1
End Function
    Dim icDev As Long
    Dim reVal As Long
    Dim userCode As String * 8
    Dim saveInfo As String * 16
    icDev = ic_init(0, 9600) '串口一
    userCode = "12345678"
    saveInfo = ReadInfo
    reVal = writeCard(icDev, userCode, 10, saveInfo)
    If reVal = 0 Then
        WriteInfo saveInfo
        MsgBox "写卡成功。"
    Else
        MsgBox "写卡失败,错误号:" & reVal
    End If
    ic_exit icDev拜托各位大侠了!!!!!!!!!

解决方案 »

  1.   


    // 接口
    function readCard(icDev: Integer; userCode: PChar; var cardAmount, meterAmount,
      TestAmout: Single; var inserted: Byte): Integer; stdcall; external 'BGCard.dll';function writeCard(icDev: Integer; userCode: PChar; Amount: Single; saveInfo:
      PChar): Integer; stdcall; external 'BGCard.dll';......// 读卡部分
    var
      icDec, reVal: Integer;
      userCode: array[0..7] of Char;
      cardAmount, meterAmount, TestAmount: Single;
      inserted: Byte;
    begin
      // icDec := ic_init(0, 9600);  没交代
      reVal := readCard(icDec, userCode, cardAmount, meterAmount, TestAmount,
        inserted);
      if reVal = 0 then
        ShowMessage(Format('读卡成功。用户号: %d , 卡上气量: %d', [userCode,
          cardAmount]))
      else
        ShowMessage(Format('读卡失败,错误号: %d', [reVal]));
      //ic_exit icDev  没交代
    end;......// 写卡部分
    var
      icDev, reVal: Integer;
      userCode: array[0..7] of Char;
      saveInfo: array[0..15] of Char;
    begin
      icDec := ic_init(0, 9600);
      userCode := '12345678';
      saveInfo := ReadInfo;
      reVal := writeCard(icDec, userCode, 10, saveInfo);
      if reVal = 0 then
      begin
        // WriteInfo saveInfo   没交代
        ShowMessage('写卡成功。')
      end
      else
        ShowMessage(Format('写卡失败,错误号: %d', [reVal]));
      // ic_exit icDev  没交代
    end;
      

  2.   

    忘了那个几char数组自己改改reVal := readCard(icDec, @userCode[0], cardAmount, meterAmount, TestAmount, inserted);
    reVal := writeCard(icDec, @userCode[0], 10, @saveInfo[0]);
      

  3.   

    高手啊,我还没有改过VB的代码到Delphi里那
      

  4.   

    读卡部分没问题了,写卡部分少点东西。麻烦再给解决一下。谢谢!
    '////全局变量,保存返回信息
    Private Sub WriteInfo(s As String)
    Open "c:\saveinf.txt" For Output As #1
    Print #1, s
    Close #1
    End Sub
    Private Function ReadInfo() As String
    Open "c:\saveinf.txt" For Input As #1
    Dim FileData As String
    Input #1, FileData
    ReadInfo = FileData
    Close #1
    End Function
      

  5.   

    '///////////IC卡函数
    Private Declare Function writeCard Lib "BGCard" (ByVal icDev As Long, ByVal userCode As String, ByVal Amount As Single, ByVal saveInfo As String) As Long
    '////全局变量,保存返回信息
    Private Sub WriteInfo(s As String)
    Open "c:\saveinf.txt" For Output As #1
    Print #1, s
    Close #1
    End Sub
    Private Function ReadInfo() As String
    Open "c:\saveinf.txt" For Input As #1
    Dim FileData As String
    Input #1, FileData
    ReadInfo = FileData
    Close #1
    End Function
    Private Sub Command1_Click()
        Dim icDev As Long
        Dim reVal As Long
        Dim saveInfo As String * 16
        icDev = ic_init(0, 9600) '串口一
        reVal = makeCard(icDev, "12345678", 10, saveInfo, 129)
        If reVal = 0 Then
            WriteInfo saveInfo
            MsgBox "写卡成功"
        Else
            MsgBox "写卡失败,错误号:" & reVal
        End If
        ic_exit icDev
    End Sub
    Private Sub Command3_Click()
        Dim icDev As Long
        Dim reVal As Long
        Dim userCode As String * 8
        Dim saveInfo As String * 16
        icDev = ic_init(0, 9600) '串口一
        userCode = "12345678"
        saveInfo = ReadInfo
        reVal = writeCard(icDev, userCode, 10, saveInfo)
        If reVal = 0 Then
            WriteInfo saveInfo
            MsgBox "写卡成功。"
        Else
            MsgBox "写卡失败,错误号:" & reVal
        End If
        ic_exit icDev
    End Sub