要编写一个读写IC卡的程序,已有写卡函数
Function AT45D_WriteChar(Page: Word; Addr: Word; Length: Word; WriteData: Byte): Word;
问题一:我要将字符串 0f, 0f, 'setup1'写进去,其中0f是十六进制数,我应该怎么把这十六进制数和'setup1'连接起来?
问题二:函数中的WriteData是Byte型的,我怎么把问题一中已经连接好的一个字符串赋值给WriteData?需要类型转换吧,怎么做?急,多谢各位了!!!

解决方案 »

  1.   

    第一:应该是#0#0'setupl'
    第二:不清楚你这个函数每个参数的意义,接口手册里面应该有说明才对啊
      

  2.   

    我没说清楚,函数前面的值我都明白了,可以这么写
    AT45D_WriteChar(0,0,8,WriteData)
    关键是WriteData应该怎么写?难道写成AT45D_WriteChar(0,0,8,#0#0'setupl')么?
      

  3.   

    WriteData是byte类型,根本就放不下字符串的...
      

  4.   

    是呀,所以要转换类型,把string类型的指针送过去,应该怎么办呢?多谢了!!!急啊!!!
    还有问题一咋解决?
      

  5.   

    把字符串分解为多个Byte,用循环一个个写过去.不知行不行?
      

  6.   

    指针的话也要integer才可以,全当你的WriteData可以保存一个指针吧;你可以这样来做...
    1、用function HexToBin(Text, Buffer: PChar; BufSize: Integer): Integer来把十六进制的数转化成字符串类型的,大体的函数遵照下面的思路:
       var tempstring,hexstring:string;
           
       begin
           hexstring:='0f';//十六进制的0f
           HexToBin(@hexstring[1],@tempstring[1],length(hexstring));//tempstring中是转化后的字符串
           tempstring:=tempstring+'setup1';//添加上'setup1',字符串构造完成
           WriteData:=integer(@tempstring);
       end;
      

  7.   

    Function AT45D_WriteChar(Page: Word; Addr: Word; Length: Word; WriteData: Byte): Word;
    ///////刚才看了一下这个函数,感觉应该是这样的,length规定了要传输数据的长度,而WriteData是第一个数据的地址或者数据,但是不应该是byte类型的,它应该是Pchar或者是integer类型的。或者它本身有一些自定义的寻址的方法,搂住友没有这个函数的说明那,贴出来看看先...
      

  8.   

    多谢解答,但是HexToBin(@hexstring[1],@tempstring[1],length(hexstring));//tempstring中是转化后的字符串 这句有问题?
    另附上函数说明,我就是想将 0f 0f setup1 这8个字符写到第0页,地址0开始的位置,咋写呢?折腾好几天了,急死了!!!
    AT45D_WriteChar
    AT45D_WriteChar 函数将一串字符写入到AT45D系列卡片的存储区内。此函数受MCS_SetStringMode影响。WORD AT45D_WriteChar(
    WORD _wPage,
    WORD _wAddr,
    WORD _wLength,
    BYTE *_bWriteData
    );
     
    参数
    _wPage 
    指定要改写的卡片存储区的页地址,地址定义参见AT45D_ReadChar。 _wAddr 
    指定要改写的页地址内的字节起始地址。 _wLength 
    指定要写入的字符串长度。 由于AT45D系列卡片每页的存储量为264字节,因此当写入的长度超过页长时,页地址不变但字节地址会回绕到0。 _bWriteData 
    字符型指针。应用程序在调用此函数前,将要写入到卡片内的字符串存于_bWriteData指针内,该串的内容会覆盖卡片_wAddr地址起的_wLength个字节。 返回值
    如果函数调用成功,返回值为0。如果函数调用失败,返回值不为0。如需得到错误描述,请调用MCS_ErrorMsg。说明
    此函数将_bWriteData指向的字符串写入到卡片的_wPage页的_wAddr字节地址,共_wLength个字节。为了保证写入的正确性,应用程序应确保_bWriteData指针指向的内容及长度。在HEXADECIMAL模式下_bWriteData指向的字符串应为_wLength个字节;在ASCIISTRING模式下_bWriteData指向的字符串应为(_wLength * 2)个字节。
      

  9.   

    WORD AT45D_WriteChar(
    WORD _wPage,
    WORD _wAddr,
    WORD _wLength,
    BYTE *_bWriteData
    );按这个函数原型, 对应的Delphi函数应该申明为:function TForm1.AT45D_WriteChar(Page: Word;  Addr: Word;  Length: Word;  WriteData: PChar): Word;
    调用时的代码可以这样写:var
      S: ShortString;
    begin
      S := #$0F#$0F'setup1';
      AT45D_WriteChar(0, 0, Ord(S[0]), @s[1]);
    end;