读卡器字符串问题

hq0927 2009-09-28 12:26:51
Public Declare Function GetPosInfo Lib "ComDll.dll" (ByVal psCardData As String, nTimeOut As Integer) As Integer

这是个读卡器的读卡函数,用这个函数来读取出一串字符串

例如读出字符串是"广东省解放路120号 51000010A95B120D"
"地址:广东省解放路120号 "
"区号:510000"
"检验码:10A95B120D"

我是用下面那个函数来截取的
问题就是.有时截取出来的字符变成"区号:000001" ,"检验码:0A95B120D"
因为读卡器供应商说他那个读出来是ascii码.所以我怀疑是不是我的读取程序的编码问题
或者麻烦各位帮忙看下我的这个函数有没有问题?
或者是其它的问题



Public Function getCardSubString(strCard As String, startPosition As Integer, strlength As Integer) As String
Dim byteAry() As Byte
Dim temAry() As Byte
Dim str As String
Dim I As Integer
Dim J As Integer

byteAry = Space$(256)
temAry = Space$(strlength / 2 + 1)
byteAry = StrConv(strCard, vbFromUnicode)

J = 0
For I = startPosition To startPosition + strlength - 1
temAry(J) = byteAry(I)
J = J + 1
Next I
...全文
153 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ProgrammerNO1 2009-11-05
  • 打赏
  • 举报
回复
Dim sSrc As String
Dim sSub As String

字符串声明能不能这样写

--->dim sSrc,sSub As String

hehe ..
嗷嗷叫的老马 2009-09-30
  • 打赏
  • 举报
回复
帮顶..........
嗷嗷叫的老马 2009-09-30
  • 打赏
  • 举报
回复
帮顶..........
chinaboyzyq 2009-09-30
  • 打赏
  • 举报
回复
up~~~~~~~~~~~~~~~~
Tiger_Zhao 2009-09-29
  • 打赏
  • 举报
回复
Public Function getCardSubString(strCard As String, _
startPosition As Integer, _
strlength As Integer _
) As String
Dim sSrc As String
Dim sSub As String

sSrc = StrConv(strCard, vbFromUnicode)
sSub = MidB$(sSrc, startPosition + 1, strlength)
getCardSubString = StrConv(sSub, vbUnicode)
End Function
hq0927 2009-09-29
  • 打赏
  • 举报
回复
顶起来..
贝隆 2009-09-28
  • 打赏
  • 举报
回复
是串口通信吗?是串口通信的话,建议你先用串口调试器调试好了通信在编写程序。
三楼の郎 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hq0927 的回复:]
引用 2 楼 citybird 的回复:
startPosition和strlength这两个参数给的不对呗,你代码没贴完整鬼老二才知道是什么问题!


是指同样的参数

例如第一次getCardSubString(pscarddata,8,6)="510000"
getCardSubString(pscarddata,14,10)="10A95B120D"

第二次就getCardSubString(pscarddata,8,6)="100000"
getCardSubString(pscarddata,14,10="0A95B120D"
[/Quote]

反正你最后10位是校验码,校验码前面的6位是区号,区号前面是地址,为什么不直接用right(pscarddata,10)取校验码,left(right(pscarddata,16),6)取区号,left(pscarddata,len(pscarddata)-16)取得地址
supergreenbean 2009-09-28
  • 打赏
  • 举报
回复
前面的数据头长度不一样的关系吧,1-7位是啥内容
hq0927 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 citybird 的回复:]
startPosition和strlength这两个参数给的不对呗,你代码没贴完整鬼老二才知道是什么问题!
[/Quote]

是指同样的参数

例如第一次getCardSubString(pscarddata,8,6)="510000"
getCardSubString(pscarddata,14,10)="10A95B120D"

第二次就getCardSubString(pscarddata,8,6)="100000"
getCardSubString(pscarddata,14,10="0A95B120D"
三楼の郎 2009-09-28
  • 打赏
  • 举报
回复
startPosition和strlength这两个参数给的不对呗,你代码没贴完整鬼老二才知道是什么问题!
  是一款USB设备芯片型号检测工具,可以自动查询U盘、MP3/MP4、、移动硬盘等的主控芯片型号、制造商、品牌、并提供相关资料下载地址。当然也可以查询USB设备的VID/PID信息、设备名称、序列号、设备版本等。   软件绿色小巧,即插即用,是数码消费者、电子爱好者、DIY人士和数码维修人员身边的好帮手。   我们还将在后续版本中完善更多功能....... -------------------------------------- 应用举例: 1、快速修复U盘:不用拆机即可查询U盘的芯片型号,快速找到对应的量产工具 2、帮你识别假冒U盘:还怕买到假冒U盘吗?随时带上我吧 3、专业选购MP3:MP3主控方案一般厂家都不说,而方案又是选购MP3的重要指标 4、识别假IPOD:我一直怀疑自已的IPOD是假的,又无法拆开,这个任务交给我搞定 5、维修好帮手:数码维修人员整天和数码产品打交道,我的出现就是你的得力助手 6、其它USB存储:买、移动硬盘、USB-Hub....,从专业角度帮你挑选对比 7、其它USB外设:摄像头、USB鼠标、打印机、USB声....,免拆壳哦 8、电脑主板芯片组:看芯片型号、找驱动、查主板性能,有我更轻松 9、后续还有更多神秘功能,等你来发掘...... -------------------------------------- 版本更新: v2.30 1、更正了在Win2000系统下对带有虚拟光盘的U盘支持不好的问题 2、对于同一设备带有多个序列号的情况(每个盘符对应的设备序列号不同)能够分别准确识别 3、修正了多盘符驱动(如多合一之类)时列表混乱的问题 4、进一步优化视觉体验,改进了提示设备名称的算法,更美观 v2.20 1、改变界面显示算法,彻底摆脱了巨大而且烦人的OCX文件! 2、修正两个关于界面的小bug 3、增加了鼠标指向超长的设备名称时弹出提示标签显示设备完整名称 V2.10 进一步优化系统资源占用率 V2.03 1.识别包含虚拟光盘的设备不需重新插拔即可得到虚拟光盘的盘符 2.从根本上杜绝了盘符出现[*:]的问题,只要Windows认盘,ChipGenius就能识别,识别过程中某些情况偶尔出现[*:],不过几秒之内一定能得到正确的盘符 3.改进了界面一个小bug,在Win2000下显示更清爽(因为旧版本在某些情况下显示会一团糟……) V2.01 1.改进了识别算法,获取驱动号的速度加快n倍 2.在精简版WindowsXP下实现实时监测设备插入拔出 3.大大降低了静态时的CPU占用率(从原来的40%左右降低到小于10%) 4.专门针对多盘符设备优化,大大加快了检测多合一的速度 5.优化界面显示,不会出现字符串长到文本框外面去的问题 V1.70 优化了数据库装载,加快启动速度。增加了一个节日彩蛋^_^ V1.68 修正一处小Bug,微调了软件界面 V1.67 支持在WinXP精简版下运行 V1.59 增加设备版本查询,增加相关方案资料下载链接地址 V1.50 增强了对带有虚拟光盘的U盘识别能力,修改了两个小Bug -------------------------------------- 使用声明: 我们不保证ChipGenius检测信息的准确性,查询结果仅供参考。

863

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧