Win CE 6.NET を使用するリーダーでパスポート情報 (MRZ) を読み取ろうとしています。ベンダーの API は C++ で記述されています
//[C + +]
typedef int (* CRXCALLBACK) (BYTE *pRecvBuff, nDataLen int);
int FAR PASCAL EXPORT CRX_Open (CRXCALLBACK lpDataCallback);
これは私のVB.NET実装です
'[VB.NET]
Public Class CRX
Public Delegate Function CRXCALLBACK (ByVal pRecvBuff As System.IntPtr, ByVal nDataLen As Integer) As Integer
<DllImport("Mrz.dll", EntryPoint:="CRX_Open", SetLastError:=True)> _
Public Shared Function CRX_Open(ByVal lpDataCallback As CRXCALLBACK) As Integer
End Function
End Class
フォームで
Private Sub CRX_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If CRX.CRX_Open(AddressOf MrzReaderCallback) <> CRX_ERR_SUCCESS Then
MessageBox.Show("CRX_Open Failed")
End Sub
Private Function MrzReaderCallback(ByVal pRecvBuff As System.IntPtr, ByVal nDataLen As Integer) As Integer
Try
Dim str As String = Marshal.PtrToStringUni(pRecvBuff)
MsgBox(str)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
End Try
Return CRX_ERR_SUCCESS
しかし、pRecvBuff
使用してコンテンツを受け取ると、Marshal.PtrToStringUni (pRecvBuff, nDataLen)
読めない文字が返されます
私への提案はありますか、何が間違っていますか?
よろしく
イヴァン