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

读卡器字符串有关问题

2012-02-08 
读卡器字符串问题Public Declare Function GetPosInfo Lib ComDll.dll (ByVal psCardData As String, nT

读卡器字符串问题
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


[解决办法]
是串口通信吗?是串口通信的话,建议你先用串口调试器调试好了通信在编写程序。
[解决办法]
前面的数据头长度不一样的关系吧,1-7位是啥内容
[解决办法]

探讨
引用:
startPosition和strlength这两个参数给的不对呗,你代码没贴完整鬼老二才知道是什么问题!


是指同样的参数

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

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

[解决办法]
VB code
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
[解决办法]
帮顶..........
[解决办法]
up~~~~~~~~~~~~~~~~

热点排行