(2)mifare卡读写器开发心得『转』--整理重发贴

发信人: yaoji104 发表时间: 2002-12-16 16:24:49
--------------------------------------------------------------------------------
关于防冲突的几个问题:
1、 bitFraming registerbit4 to bit6,当冲突发生在 bit7时RxAlign=?(RxAlign不能=7。)
2、当发生冲突 SecondaryStatus registerbit0 to bit2表示的是有效接收位,这个值是否包括冲突位;及一个字节 bit0 to bit7,在 bit4位发生冲突,RxLast bits=4 还是=5。
3、CollPos register 这个值是否包含寄偶校验位。
小弟这里先谢谢各位了。

发信人: yaoji104 发表时间: 2002-12-16 16:34:46
--------------------------------------------------------------------------------
关于防冲突的几个问题:
1、 bitFraming registerbit4 to bit6,当冲突发生在 bit7时RxAlign=?(RxAlign不能=7。)
2、当发生冲突 SecondaryStatus registerbit0 to bit2表示的是有效接收位,这个值是否包括冲突位;及一个字节 bit0 to bit7,在 bit4位发生冲突,RxLast bits=4 还是=5。
3、CollPos register 指示的冲突位是否包含寄偶校验位。
小弟先谢谢各位了。

发信人: srz 发表时间: 2002-12-17 09:44:41
--------------------------------------------------------------------------------
我在FIFO data中放入数据,command寄存器写入12H,然后读
CRCResultLSB和CRCResultMSB始终不变为何?

发信人: tpu 发表时间: 2002-12-17 10:12:25
--------------------------------------------------------------------------------
1:RxAlign取决于你总共接收到的位数。比如你先收到5个位,然后又在第7位冲突,那么RxAlign=(5 7)%8=4;
2:我一般在冲突时不考虑RxLast bits,只考虑CollPos。
3:不包括。

发信人: srz 发表时间: 2002-12-17 10:24:33
--------------------------------------------------------------------------------
你的理解有误:
bitFraming registerbit4 to bit6。
用于位方式帧的接收,RxAlign 定义了接收的第一个位存储到FIFO 的位置,更多的位存储到后面的位位置。

RxAlign 0 接收的最低位存在位0 接收的第二个位存在位1
RxAlign 1 接收的最低位存在位1 接收的第二个位存在位2
RxAlign 3 接收的最低位存在位3 接收的第二个位存在位4
RxAlign 7 未定义
在接收后RxAlign 自动清零,与防冲突无关。
当发生冲突 SecondaryStatus registerbit0 to bit2表示的是有效接收位,这个值包括冲突位;及一个字节 bit0 to bit7,在 bit4位发生冲突,RxLast bits=5。
3、CollPos register 指示的冲突位不包含寄偶校验位。
果在奇偶校验位检测到位冲突标志ParityErr 置位以指示一个奇偶校验错误。
发信人: yaoji104 发表时间: 2002-12-17 10:58:31
--------------------------------------------------------------------------------
对二位大虾的无私帮助我非常感激,但我还是有点不清楚:当已经接收的位数是8的倍数(及8、16、24位),此时又在 bit7位发生了冲突RxAlign应该=7,但是=7没定义。这时RxAlign应该=?。

发信人: brair 发表时间: 2002-12-17 11:01:26
--------------------------------------------------------------------------------
我在执行 while (ReadRawIO(RegCommand) & 0x3F) && !T2IR);时为什么总是出现超时错误,前面各位老兄说的方法我都试过了,还是不行,不知是什么原因,以前好象还执行成功过,但现在却一次都不会成功!谢谢!

发信人: yaoji104 发表时间: 2002-12-17 11:11:21
--------------------------------------------------------------------------------
我觉得你该把定时器去了,你的目的是要它复位成功而进行下面的具体操作。我两条语句都用了是可以成功的。不过我是用汇编写的。

发信人: srz 发表时间: 2002-12-17 11:20:11
--------------------------------------------------------------------------------
RxLast bits 返回最后接收到的字节的有效位的数目.
RxAlign 选择一个进入字节的位偏移.
你是不是二者混淆了?

发信人: brair 发表时间: 2002-12-17 13:51:54
--------------------------------------------------------------------------------
首先谢谢yaoji104,我已经调通了复位阶段了,以前产生错误的原因是某些变量声明的存储类型有错误。
请问一下各位大虾,为什么我在调用函数时参数传递总是错误的呢?
例如,我在调用 PcdReadE2(8,4,Snr_RC500)时,在函数内部的第一个参数值为1028,第二个参数值为255,第三个参数值为00,不知是什么原因,请各位大虾指导啊!

发信人: srz 发表时间: 2002-12-17 14:51:02
--------------------------------------------------------------------------------
如何启动CRC协处理器? 我在FIFO data中放入数据,command寄存器写入12H,然后读CRCResultLSB和CRCResultMSB始终不变为何?
ChannelRedundancy写入13h(CRC8计算)也是一样。

发信人: yaoji104 发表时间: 2002-12-17 15:02:08
--------------------------------------------------------------------------------
你是不是检测了E2Ready的有效性后才读的。

发信人: srz 发表时间: 2002-12-17 15:16:48
--------------------------------------------------------------------------------
我是检测CRCReady为1则读

发信人: jiangbo123 发表时间: 2002-12-17 16:14:26
--------------------------------------------------------------------------------
如果各位手头有CM200操作的源代码,可以和RC500的源代码对照着看,很多地方是大同小异的,可以给你不少的启发,达到事半功倍的效果!

发信人: jiangbo123 发表时间: 2002-12-17 16:17:20
--------------------------------------------------------------------------------
采用汇编开发的朋友,你们也可以先从philips拿到c语言的源代码,然后对照c语言开发,将c语言“翻译”成汇编。这样同样可以大大的加快开发进度!起码不必再为某个寄存器的值应该写入多少而耗费几天的时间。

发信人: jiangbo123 发表时间: 2002-12-17 16:23:44
--------------------------------------------------------------------------------
关于start_timeout函数,你提出的问题我也遇到过,我重试了很多次也找不出原因(后来怀疑是仿真器的问题,我用的是万利的),解决的方法是不使用该函数,在需要判断超时的地方(原来调用start_timeout),采用计数的方法,计数到了如果等待的数据还没有来,就认为超时。

发信人: jiangbo123 发表时间: 2002-12-17 16:26:23
--------------------------------------------------------------------------------
一般的超时都是大概的时间,不要求太精确,所以采用计数的方式完全没有问题,比如在M500PcdCmd函数中将原来的语句该成:
timecnt=1000;
while (!(MpIsrInfo->irqSource & wait for||!(timecnt--)));
调试通过。

发信人: yaoji104 发表时间: 2002-12-17 16:43:57
--------------------------------------------------------------------------------
虽然话是如此把C 翻译成汇编,但是我觉得做事还是要弄清个所以然,不然还是不懂没学到东东。   发信人: jiangbo123 发表时间: 2002-12-17 16:52:35
--------------------------------------------------------------------------------
你的意见我不敢苟同,就算你将RC500搞得再熟,也只是一个芯片的操作而已,如果你的程序已经可以正常的对卡进行操作了,你还有必要去深入了解每一个寄存器的操作细节,尝试每种接口方式的使用吗?如果你有这些时间完全可以去多了解一下各种mifare卡的结构,用法,甚至去研究RC531芯片了。再者,如果你真的将c语言“翻译”成汇编,并且调试通过了,你想对RC500不了解都难了。

发信人: jiangbo123 发表时间: 2002-12-17 16:57:10
--------------------------------------------------------------------------------
没什么,抢第100位跟贴!呵呵。

发信人: srz 发表时间: 2002-12-18 08:51:48
--------------------------------------------------------------------------------
如何启动CRC协处理器?  

发信人: fzb1 发表时间: 2002-12-18 16:54:37
--------------------------------------------------------------------------------
我想接触非接触卡读写系统,您能否给我cm200的 datasheet以及您认为有帮助的资料?谢谢。

发信人: winds 发表时间: 2002-12-18 18:55:44
--------------------------------------------------------------------------------
但是,RC500的源代码看得我头都大了,能告诉我寻卡指令怎么改吗?给我个启发也行啊!谢谢
email: a51@21cn.com

发信人: winds 发表时间: 2002-12-18 21:14:03
--------------------------------------------------------------------------------
中断方式要用非常多的全局变量,把程序的结构搞得非常难懂。
我想参考CM200的查询方式来改写程序,不知道要怎样改写下列语句?
timeout=1000;
while (!(MpIsrInfo->irqSource & wait for||!(timeout--)));
能不能直接改为
while(   (ReadRawRC(RegPrimaryStatus) & 0x08) || time--  );
发信人: jiangbo123 发表时间: 2002-12-19 08:28:19
--------------------------------------------------------------------------------
do{
    if(((*( volatile unsigned char *)(0xfffff419)) & 0x20)==0x0)
        SingleResponseIsr(); //jb
        } while (!(MpIsrInfo->irqSource & wait for|| T2IR));
判断有中断引脚来了低电平,就执行原来的中断服务程序。我当时是因为uclinux中用中断不知道怎么搞,呵呵。

发信人: jiangbo123 发表时间: 2002-12-19 08:30:12
--------------------------------------------------------------------------------
你对照两者的程序就知道了,你会发现很多RC500寄存器可以在CM200里找到对应的。

发信人: tpu 发表时间: 2002-12-19 10:06:25
--------------------------------------------------------------------------------
我也是用的uclinux,在s3c44b0上。
查询方式好像不太稳定,改成中断方式就好多了。

发信人: winds 发表时间: 2002-12-19 10:35:04
--------------------------------------------------------------------------------
不知道RC500能不能反复读取RegFIFOLength和RegPrimaryStatus来判断是否发送完毕

发信人: yaoji104 发表时间: 2002-12-19 11:24:43
--------------------------------------------------------------------------------
我用的是中断法与RC500通讯,我在做READE2时产生了第一次中断我把 2 Bytes adrress &字节个数送入FIF;而后我一直没有等到第二次中断,及RC500 把数据从E2 送到FIFO后产生的中断。不知什么原因,还请各位指点。

发信人: yaoji104 发表时间: 2002-12-19 11:27:03
--------------------------------------------------------------------------------
我用的是中断法与RC500通讯,我在做READE2时产生了第一次中断我把 2 Bytes adrress &字节个数送入FIF;而后我一直没有等到第二次中断,及RC500 把数据从E2 送到FIFO后产生的中断。不知什么原因,还请各位指点。

发信人: brair 发表时间: 2002-12-19 11:29:41
--------------------------------------------------------------------------------
不知你关掉了TX1,TX2没有,我也遇到过此种情况,后来关掉TX1,TX2就一切都正常了!

发信人: yaoji104 发表时间: 2002-12-19 11:35:20
--------------------------------------------------------------------------------
是不是把 TxControl 的 bit0、 bit1清零,我已经做了,还是不行

发信人: wtt 发表时间: 2002-12-19 13:06:04
--------------------------------------------------------------------------------
rc500在上电后没加载程序时在Tx端是否能检测到输出波形

发信人: jiangbo123 发表时间: 2002-12-19 15:36:38
--------------------------------------------------------------------------------
我在www.start-web.net/tpu 上下载的您移植的uclinux,是不是不全,应用程序部分和一些配置缺少文件。您能提供一个比较完整的程序吗?

发信人: winds 发表时间: 2002-12-19 17:17:00
--------------------------------------------------------------------------------
我往0x10开始的地址连续写入下面的数组,TX就有输出了,我的程序还没有调通,不知道是否有错哦。
unsigned char code   DEFPAGE3[]=  
{
    0x00, // PAGE
    0x5B, // RegTxControl        发送控制器 输入信号源为内部解调器 !
    0x3F, // RegCwConductance
    0x3F, // RFU13
    0x19, // RFU14
    0x13, // RegModWidth     
    0x00, // RFU16
    0x00, // RFU17

    0x00, // Page
    0x73, // RegRxControl1       设置接收灵敏度(默认)
    0x08, // RegDecoderControl   第5位设置防冲突是否补0(默认)
    0x6c, // RegbitPhase         接收和发送之间的相位,这个参数很重要     
    0xFF, // RegRxThreshold      接收的最小信号强度
    0x00, // RFU1D
    0x01, // RegRxControl2       接收解调器 !
    0x00, // RegClockQControl    Q信道时钟相移(默认)
    0x00, // Page
    0x06, // RegRxWait           接收器启动时间间隔(默认)
    0x03, // RegChannelRedundancy选择RF通道上检测类型模式(默认)
    0x63, // RegCRCPresetLSB     CRC计算的起始值(默认)    
    0x63, // RegCRCPresetMSB    
    0x00, // RFU25               选择输出是卡调制信号   
    0x04, // RegMfOutSelect enable mfout = manchester HT
    0x00, // RFU27
     
    // PAGE 5  
    0x00, // Page
    0x08, // RegFIFOLevel        FIFO溢出告警界线(默认)       
    0x07, // RegTimerClock       计数到0时提示,分频为7(默认)    
    0x06, // RegTimerControl     定时器启动和停止条件(默认)   
    0x0A, // RegTimerReload      定时器默认值(默认)    
    0x02, // RegIRqPinConfig     IRQ脚的输出状态(默认)         
    0x00, // RFU    
    0x00   // RFU
};

发信人: jiangbo123 发表时间: 2002-12-19 19:58:33
--------------------------------------------------------------------------------


发信人: tpu 发表时间: 2002-12-19 20:48:03
--------------------------------------------------------------------------------
我放上去的主要是内核源文件,其他的文件系统,配置文件都可以根据需要自己编出来。我想大家的硬件不一样,我放上我的系统,别人可能就用不了。
我在公司一个人搞rc531和s3c44b0x开发。有兴趣的话,我说不定可以帮你引见。

发信人: jiangbo123 发表时间: 2002-12-20 12:24:43
--------------------------------------------------------------------------------
谢谢你的回复,老实说我对uclinux不熟,刚开始搞的。你能将文件系和配置文件发给我参考一下吗?我自己做了一个开发板,但是操作系统一直没有移植成功。有机会多指教哟。你是哪家公司呢?那我先谢谢了。

发信人: tpu 发表时间: 2002-12-20 13:32:22
--------------------------------------------------------------------------------
只要把内核跑起来,其他的都好办。
我在深圳三环公司(www.trinfo.com.cn)。
你在哪里?
发信人: jiangbo123 发表时间: 2002-12-20 14:24:10
--------------------------------------------------------------------------------
我用的也是S344B0x,呵呵。移植一直没有成功。

发信人: yiwujin1 发表时间: 2002-12-20 14:59:40
--------------------------------------------------------------------------------
我在做rc 500项目,已能读出m1卡号,但令我郁闷的是,此后不久,rc500就不再正常工
作,寄存器可读写,但不再发射高频载波,连坏了两块500,痛不欲生,jiangbo123大侠伸伸手,
救我于水深苦难之中,不甚感激!
发信人: zhouxym 发表时间: 2002-12-20 16:55:04
--------------------------------------------------------------------------------
非常辛苦!没有原程序,只有RC500的 dataSHEET,几乎是一面数示波器的格子,一面调程序。我当时甚至将Manchester with subcarrier都数清楚了,调天线的那几个电容的苦更是难以用语言表达。但是我曾经有一片RC500不小心接了12V电压也没事啊.
   我一直在想:Philips 干吗要把这些开发用的技术资料封闭得这么死?搞得许多中间商从中牟利,我的那本 dataSHEET 竟要我300大洋。
发信人: jackguo35 发表时间: 2002-12-20 17:47:56
--------------------------------------------------------------------------------
发信人: tpu 发表时间: 2002-12-23 10:51:23
--------------------------------------------------------------------------------
你必须先把uClinux内核跑起来,才能做其他事情。你现在情况怎么样?是自己做的班子吗?佩服!

发信人: jiangbo123 发表时间: 2002-12-23 10:56:08
--------------------------------------------------------------------------------
我们的板子是自己做的。

发信人: jiangbo123 发表时间: 2002-12-23 13:17:09
--------------------------------------------------------------------------------
你有qq吗?我们可以聊聊!我的qq:24280715

发信人: wujians11 发表时间: 2002-12-23 17:29:41
--------------------------------------------------------------------------------
发信人: 1121 发表时间: 2002-12-24 08:19:59
--------------------------------------------------------------------------------
也是关于射频无线识别系统的。
  请问为何诊断码总是FFH。实测发射电路并没有对地短路,接收端也有振荡信号。

发信人: xxjohn 发表时间: 2002-12-24 10:22:33
--------------------------------------------------------------------------------
RC500在没有做初始化配置时TX1,TX2是没有信号输出的,必须向TxControl寄存器写入0x5B才会有信号输出。
MF1卡当KeyB密码可读时,用B密码验证总是失败,后来请教Philips工程师得知KeyB密码可读时不能作为Key用,所以验证不能成功。
以上是我开发中遇到的一些问题,提出来希望对大家有所帮助。

发信人: jiangbo123 发表时间: 2002-12-24 11:17:07
--------------------------------------------------------------------------------
发信人: 水边缘 发表时间: 2002-12-24 11:17:30
--------------------------------------------------------------------------------
发信人: mtexpo 发表时间: 2002-12-24 13:21:21
--------------------------------------------------------------------------------
jiangbo123
可否告诉我你的e_mail?谢谢!
mtexpo@yahoo.com

发信人: may_flower 发表时间: 2002-12-24 13:40:04
--------------------------------------------------------------------------------
如何操作?

发信人: may_flower 发表时间: 2002-12-24 13:56:21
--------------------------------------------------------------------------------
请教如何将philips提供的原代码编译、连接通过,用什么编译器?
                         多谢!!!
                      may_c51@163.com

发信人: jiangbo123 发表时间: 2002-12-24 15:09:54
--------------------------------------------------------------------------------
jiangbo123@yeah.net
你的email我已回复。

发信人: brair 发表时间: 2002-12-24 18:27:49
--------------------------------------------------------------------------------
请问各位大虾,不知为什么我开发的RC500读卡器,在单步调试时防冲突操作总能成功能读出正确的序列号,但全速运行时就经常读不出序列号或者是MI_NOTAGERR错误,或者是MI_SERNRERR错误,请各位高手指导。我的板子在用其他公司开发的单片机时,读卡效果很好能达到60mm且读卡也很稳定!!!  

发信人: stevenson 发表时间: 2002-12-25 11:36:48
--------------------------------------------------------------------------------
我在做mifare技术支持的过程中,经常有客户反映会烧片子。工程师们在开发过程中,请注意以下几项。
1. 不要任意更改保留位内容(RFU bit)
2. 在进行写E2prom时不要发生中断。即代码中的WriteE2 command.
3. 不要超出 datasheets中标定的最大AC &DC 值。例如:最大输出电流Itx为200mA/5V

发信人: stevenson 发表时间: 2002-12-25 12:38:54
--------------------------------------------------------------------------------
发信人: yaoji104 发表时间: 2002-12-25 13:20:39
--------------------------------------------------------------------------------
在初始化程序中
while (((ReadRawIO(RegCommand) & 0x3F) != 0x3F) && !T2IR);
while ((ReadRawIO(RegCommand) & 0x3F) && !T2IR);
执行了以上两个函数之后,要加一定的延时再执行初始化接口的代码,如果不延时各个寄存器的初始值会与 dataSheet的不一样,这是我开发中的心得,不知其他大侠如何?供参考。

发信人: brair 发表时间: 2002-12-25 15:02:01
--------------------------------------------------------------------------------
不知为什么,对M1卡的前两步操作(Request,Anticoll)均能正确的实现,读出的序列号也完全正确,但到第三步进行Select操作时,就接收不到数据了,不知是怎么回事,那位大虾遇到过这种情况,请帮帮小弟啊!!!

发信人: tpu 发表时间: 2002-12-26 09:25:09
--------------------------------------------------------------------------------
你是没加CRC吧!
前两步是不需要CRC的。但后来都要。

发信人: zslw 发表时间: 2002-12-26 10:02:35
--------------------------------------------------------------------------------
看得真过瘾,这么好的东西,希望各位高手能多发表发表啊!!!!!

发信人: brair 发表时间: 2002-12-26 10:15:55
--------------------------------------------------------------------------------
我已经打开了CRC处理器了,我记得以前曾经成功过,甚至读写操作也都能够实现,但不知怎么现在着一步总是通不过,还需要你多多指导啊!

发信人: may_flower 发表时间: 2002-12-26 11:31:24
--------------------------------------------------------------------------------
请问怎样读取mifare one 的Tag Type(第一步), 操作流程如何?
                      
                       Thank you!

发信人: brair 发表时间: 2002-12-27 14:27:59
--------------------------------------------------------------------------------
我终于找到了Select错误的原因了,竟然是我在中断服务程序中读FIFO之前关闭TX1,TX2读完后又打开造成的!
  可是现在又面临了另一个难题,就是我改过来以后,虽然Select没有问题了,可是在读序列号和读卡操作时读出来的数据则经常有部分是错误的,而在读FIFO之前先关闭TX1,TX2之后再打开则不会有错误,但这样又容易造成Select操作错误,我实在不知怎么来解决这个问题,望各位大虾多多指导啊!谢谢!!!

发信人: lazybear 发表时间: 2002-12-27 14:47:35
--------------------------------------------------------------------------------
发信人: 1121 发表时间: 2002-12-27 15:04:03
--------------------------------------------------------------------------------
目前国内的用量还不太大,仅几K片/年。
  TI的国内代理都不给技术支持,TI网站的技术支持也没有,但有评估板卖。
     

发信人: qin_peng 发表时间: 2002-12-27 16:00:48
--------------------------------------------------------------------------------
前一段我一直在关注该论坛,发现很多DX都在使用RC500芯片并遇到一些问题,我在开发过程中也遇到几个问题但都被一一解决。我个人认为PHILIPS提供的DEMO程序没有什么大问题,在实际应用中我们没有必要修改底层源代码,但各位请注意一点由于RC500的时序要求很严格,所以在调试程序的过程中用仿真器时不要在M500AUC.C RDIO.C插入断点,否则容易引起错误。另外DEMO程序使用的是22.1184MHZ的晶振频率,各位在使用自己的主板时要注意延时和定时器的参数,该程序在很多 while语句中没有加WATCH doG如果用户有自己的WATCH doG请注意。

发信人: jiangbo123 发表时间: 2002-12-28 18:52:14
--------------------------------------------------------------------------------
奇怪现象:
1、自己焊了一块板子,发现只能寻卡,防冲突大多失败,很少能成功。软件都是以前调试好做的备份,不应该有问题。但是寻卡非常好,一点问题都没有,综合比较还是觉得应该是软件的问题。调试了整整一天,设置断点调试来调试去,没有发现任何可疑之处,相反还损坏了一块rc500,心头一阵巨痛。开发阶段都坏了不少,没有想到都形成产品卖了很多出去了,现在还..........唉。一气之下,重新焊了一块,这次焊的比较小心,连上PC机测试,完全正常,所有操作一点问题没有,我立刻晕倒!!
结论:当你的板子长时间调试没有结果时,你想想会不会是硬件的问题,要不换块板子试试。
2、同一批加工回来的天线板,焊接同样参数的器件,连上同一个主板山测试,发现有个别的天线寻卡距离非常近,比其它的少一半以上。以为上面的电容电阻有问题,重新焊上新的电容电阻,故障依旧。与正常的天线板比较,未发现制板上有明显的区别。该现象至今未能解决。
结论:天线的寻卡距离和上面的电容电阻的参数关系非常大,有时电容差十几pf都会引起距离的寻卡明显变化。但是同样要注意制版工艺给寻卡距离造成的影响。

发信人: gg 发表时间: 2002-12-30 02:26:54
--------------------------------------------------------------------------------
在实际产品中,如果读卡终端比较多的话(就像食堂售饭系统),mifare还是受不了阿,最便宜的我看到好像是zlg500A,也要248。
当然食堂售饭系统因为是通过服务器操作,完全可以做成只读卡的形式,这时候除了temic,还有更好的选择么?总之mifare的成本很不合适。听说,一般如果是读写卡的话,尤其是涉及到钱,那么还是要用mifare,temic没有它可靠。
对了zlg500A的资料是加密的,不知道哪位兄弟给个密码,希望zlg不要生气,呵呵

发信人: gmcccode 发表时间: 2002-12-30 11:44:40
--------------------------------------------------------------------------------
发信人: jiangbo123 发表时间: 2002-12-30 13:18:28
--------------------------------------------------------------------------------
完全靠自己的说,呵呵。

发信人: 万古 发表时间: 2002-12-30 13:32:38
--------------------------------------------------------------------------------
我曾经也想搞读卡器,但一直不知道维根格式数据怎么读取,请jiangbo123赐教。

发信人: stevenson 发表时间: 2002-12-30 17:35:54
--------------------------------------------------------------------------------
发信人: stevenson 发表时间: 2002-12-30 17:40:09
--------------------------------------------------------------------------------
芯片,而自己没有type B卡的芯片,所以没有像typeA 那样为客户提供源代码,不过你可以根据typeB的协议来进行开发。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值