首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请高手帮助-dll调用有关问题

2012-03-18 
请高手帮助----dll调用问题以下是dll说明:我不知道在delphi里如何调用VC的dll,在implementation里面声明的

请高手帮助----dll调用问题
以下是dll说明:我不知道在delphi里如何调用VC的dll,在implementation里面声明的时候总出错,请高人指点一下:
1)   INT   Wcard(CHAR   *SET,CHAR   *WDATA,INT   TRACK)

功能:控制SJE353B磁卡读写机进行写磁卡操作,按ESC键可退出.

返回:   整型
      =     1:   写卡正确
          -1:   所选串行口打不开
          -2:   与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
          -3:   串口设置错误
          -4:   写卡错误
          -5:   用户   ESC   退出
 

参数:
  SET:     字符串,用来设置串口.
              格式: "1,9600,N,8,1 "   ------   (1=com1或2=com2),
(9600=baud9600或4800=baud4800
  或2400=baud2400或1200=baud1200),
(N=无校验或O=奇校验或N=偶校验),
(8=8个数据位或7=7个数据位),
(1=1个停止位或2=2个停止位).
              如: "2,9600,O,7,1 "   表示串口2,波特率9600.奇校验,7个数据位,1个停止位.
   
  TRACK:   需要进行写卡操作的磁道选择号(具体定义如下:)                      
                        --------     1:选择第1磁轨  
                              2:选择第2磁轨
              3:选择第3磁轨
              4:选择第2和第1磁轨
              5:选择第2和第3磁轨
 
  WDATA:   字符串,所要向卡上写的数据.
              格式: "磁道1数据 "                       ------     写第1轨数据(此时   TRACK   为1)
            "磁道2数据 "                         ------     写第2轨数据(此时   TRACK   为2)            
            "磁道3数据 "                         ------     写第3轨数据(此时   TRACK   为3)
            "磁道2数据a磁道1数据 "     ------     写第2轨数据和第1轨数据(此时   TRACK   为4,
                                                                                  小写字符a作为磁道2和磁道1的数据的间隔符)        
            "磁道2数据a磁道3数据 "     ------     写第2轨数据和第3轨数据(此时   TRACK   为5,
                            小写字符a作为磁道2和磁道3的数据的间隔符)

              其中:   小写字符a为磁道2与磁道1(或磁道2与磁道3)的数据的分隔符
                          1轨数据可为字母或数字,最多76个
                          2轨数据只可为数字,最多37个  
                          3轨数据只可为数字,最多104个
                         


              如:       Wcard( "1,9600,N,8,1 ", "1111111111 ",1)
                                                --------   表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
                                                                          无校验的方式向第1磁轨中写入数据:1111111111
                                                                         
                          Wcard( "1,9600,N,8,1 ", "2222222222 ",2)
                                                --------   表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
                                                                          无校验的方式向第2磁轨中写入数据:2222222222
                                                                         
                          Wcard( "1,9600,N,8,1 ", "3333333333 ",3)
                                                --------   表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
                                                                          无校验的方式向第3磁轨中写入数据:3333333333
                                                                         
                          Wcard( "1,9600,N,8,1 ", "2222222222a1111111111 ",4)
                                                --------   表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
                                                                          无校验的方式向第2磁轨中写入数据:2222222222   并且
                                                                          向第1磁轨中写入数据:1111111111


                                                                         
                          Wcard( "1,9600,N,8,1 ", "2222222222a3333333333 ",5)
                                                --------   表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
                                                                          无校验的方式向第2磁轨中写入数据:2222222222   并且                                                                                                                                                                    
                                                                          向第3磁轨中写入数据:3333333333                                                                          
                                                                         
              具体见SLE300系列磁卡读写机使用说明书


2)   INT   Rcard(CHAR   *SET,CHAR   *RDATA,INT   TRACK)

功能:控制sLe353b进行读磁卡操作,按ESC键可退出.

返回:   整型
      =     1:         读卡正确,
          -1:         所选串行口打不开
          -2:         与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)          
          -3:         串口设置错误
          -4:         读卡错误
          -5:         用户   ESC   退出

参数:
  SET:     字符串,用来设置串口.
              格式: "1,9600,N,8,1 "   ------   (1=com1或2=com2),
(9600=baud9600或4800=baud4800
  或2400=baud2400或1200=baud1200),
(N=无校验或O=奇校验或N=偶校验),
(8=8个数据位或7=7个数据位),
(1=1个停止位或2=2个停止位).
              如: "2,9600,O,7,1 "   表示串口2,波特率9600.奇校验,7个数据位,1个停止位.

  TRACK:   需要进行写卡操作的磁道选择号(具体定义如下:)                      


                        --------     1:选择第1磁轨  
                              2:选择第2磁轨
              3:选择第3磁轨
              4:选择第2和第1磁轨
              5:选择第2和第3磁轨

  RDATA:   读卡数据输出缓冲区(用于存放读卡成功后的返回数据)
字符串,长度不少于300字节.
         
读卡成功返回格式:  
          RDATA   =   "磁道1数据 "             -------   返回磁道1数据(此时   TRACK   为1)
          RDATA   =   "磁道2数据 "                           -------   返回磁道2数据(此时   TRACK   为2)                    
          RDATA   =   "磁道3数据 "                           -------   返回磁道3数据(此时   TRACK   为3)
          RDATA   =   "磁道2数据a磁道1数据 "       -------   返回磁道2数据和磁道1数据(此时   TRACK   为4)
          RDATA   =   "磁道2数据a磁道3数据 "       -------   返回磁道2数据和磁道3数据(此时   TRACK   为5)
         
      读卡错误:   Rcard函数返回值为-4
           
              其中:   小写字符a为磁道2与磁道1(或磁道2与磁道3)的数据的分隔符
                          1道数据可为字母或数字,最多76个
                          2道数据只可为数字,最多37个  
                          3数据只可为数字,最多104个
                         
              如:
                          Rcard( "1,9600,N,8,1 ",RDATA,1)
                                              --------   表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
                                                                          无校验的方式从第1磁轨中读取数据(存放在RDATA中)
                                                                         
                          Rcard( "1,9600,N,8,1 ",RDATA,2)
                                              --------   表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
                                                                          无校验的方式从第2磁轨中读取数据(存放在RDATA中)          


                                                                                         
                          Rcard( "1,9600,N,8,1 ",RDATA,3)
                                              --------   表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
                                                                          无校验的方式从第3磁轨中读取数据(存放在RDATA中)  
                                                                         
                          Rcard( "1,9600,N,8,1 ",RDATA,4)
                                              --------   表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
                                                                          无校验的方式从第2磁轨和第1磁轨中读取数据
                                                                          (存放在RDATA中,中间以小写字符a作间隔)        
                                                                         
                          Rcard( "1,9600,N,8,1 ",RDATA,5)
                                              --------   表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
                                                                          无校验的方式从第2磁轨和第3磁轨中读取数据
                                                                          (存放在RDATA中,中间以小写字符a作间隔)        
                                                                                                                                                               




[解决办法]
INT Wcard(CHAR *SET,CHAR *WDATA,INT TRACK)

function Wcard(Set: PChar; WDATA: PChar; TRACK: Integer): Integer;stdcall; extenal
[解决办法]
PostMessage(handle,WM_KEYDOWN,27,0);

热点排行