タカヤ社のTR3-LD003Cというリーダライタを使用し、RFIDタグのUIDを元に、地図上にポイントを表示するというプログラムを作成しているのですが、何分他人から引き継いだプログラムで動かそうとしている為、この様な事が初めてであり非常に困っています。 テキスト型で02006408”943A992A000007E0”03F90Dの””内をUIDとして受信したいのですが・・・ ・恐らくバイナリでデータが返ってきている為まずこれをテキスト型に変換したい ・初めの4byteを削ってそこから8byte分をUIDにしたい の二点を行いたいのですが、どなたかポイントを教えて頂けないでしょうか。ちなみにvb2010を使用しています。 下記に恐らく問題点であろう部分の現時点でのプログラムです。出来ればこれに書き足す感じでご回答いただけると有り難いです。 Dim i As Integer Dim a As Byte Dim strRecData As String 'RFIDから受信したデータの保存先 Dim strRecDataArray() As String 'RFIDから受信したデータを、さらに":"で区切ったデータの保存先 Dim objRD() As Object 'DBから索引したデータの保存先 Try 'データの受信() ReceiveData = ReceiveData & ComSerialPort.ReadLine Catch ex As Exception '受信エラー時の処理() ReceiveData = ex.Message End Try If CStr(ReceiveData).Length = 30 Then strRecData = CStr(ReceiveData) strRecDataArray = strRecData.Split(":") 'データを":"で区切る If IsArray(strRecDataArray) And UBound(strRecDataArray) > 0 Then strRecData = Trim(strRecDataArray(1)) '外にあるスペースなどを除去する strRecData = strRecData.Substring(strRecData.Length - 21, 16) Else '読み取れない場合 End If strSQL = "select ID, 建物名, 階, Macro地図 , MacroX, MacroY, Micro地図, MicroX, MicroY from RFID " 'DBに送るSQL文の作成 strSQL = strSQL & "where RFID.ID='" & strRecData & "' " Com = New OleDb.OleDbCommand(strSQL, cng) 'cngで通信しているDBにstrSQLのコマンドを送る DRead = Com.ExecuteReader '返ってきたデータ If DRead.Read() Then 'データを読み取れるだけ読み取る ReDim objRD(DRead.FieldCount - 1) ' For i = 0 To DRead.FieldCount - 1 objRD(i) = DRead.GetValue(i) Next i Invoke(dlgRFID, ReceiveData, objRD) 'RFIDのデリゲートを使用 End If DRead.Close() ReceiveData = "" '受信したデータを消す End If ReceiveData = "" '受信したデータを消す
↧