非常感谢任何帮助 -
我无法在VB .NET中触发BarcodeEvent。扫描仪处于USB(IBM手持)模式,一切正常,与SDK附带的C#示例应用程序。此外,我能够在VB .net中使扫描仪发出蜂鸣声,因此驱动程序正常工作。 我可能搞砸了将这个C#代码转换为VB
cCoreScannerClass.BarcodeEvent += new
_ICoreScannerEvents_BarcodeEventEventHandler(OnBarcodeEvent);
void OnBarcodeEvent(short eventType, ref string pscanData)
{
string barcode = pscanData;
this.Invoke((MethodInvoker)delegate { textBox1.Text = barcode; });
}
- 这是我的代码:-------
Imports CoreScanner
Imports System.Collections.Generic
Imports System.Text
Public Class Form1
Public WithEvents cCoreScannerClass As CCoreScannerClass
Sub Main()
cCoreScannerClass = New CCoreScannerClass
Dim scannertype(1) As Short
scannertype(0) = 1
Dim numberOfScannerTypes As Short
numberOfScannerTypes = 1
Dim status As Integer
cCoreScannerClass.Open(0, scannertype, numberOfScannerTypes, status)
AddHandler cCoreScannerClass.BarcodeEvent, AddressOf OnBarcodeEvent
Dim opcode As Integer = 1001
Dim outXML As String
Dim inXML = "<inArgs>" +
"<cmdArgs>" +
"<arg-int>1</arg-int>" +
"<arg-int>1</arg-int>" +
"</cmdArgs>" +
"</inArgs>"
cCoreScannerClass.ExecCommand(opcode, inXML, outXML, status)
End Sub
Public Sub OnBarcodeEvent(eventType As Short, ByRef pscanData As String) Handles cCoreScannerClass.BarcodeEvent
MsgBox("Success!")
End Sub
答案 0 :(得分:1)
在玩完所有事件之后,同样精确的VB .net代码突然开始工作。我想当我做重启事件时,扫描仪就会出现。 对于Motorola corescanner类,没有一个VB .net的例子,sooo欢迎您:)
答案 1 :(得分:1)
我遇到了同样的问题,最终确定它与Interop.CoreScanner.dll文件的权限有关。
在干净的安装中,演示应用程序的简单“构建”将起作用。清理和重建会导致事件失败,但其他调用(如发现扫描仪或发出蜂鸣声)会起作用。我的自定义应用程序与清理和重建的演示应用程序的行为方式相同。
事实证明,SDK发布了具有预安装二进制文件的演示应用程序,这些二进制文件具有与安装程序不同的权限:
Motorola Scanner\Scanner SDK\Scanner SDK\Sample Applications\bin
Group: System Administrators Users Permission: - Full Control X X - Modify X X - Read and Execute X X X - Read X X X - Write X X - Special Permissions
Motorola Scanner\Common
Group: System Administrators BUILTIN (BUILTIN)? Permission: - Full Control X X X - Modify X X X - Read and Execute X X X - Read X X X - Write X X X - Special Permissions
我不知道'BUILTIN'用户是谁,或者Users组没有权限的原因,或者为什么你可以使用后一种设置执行DLL中的一些但不是所有代码。
然而,用前者取代后者解决了我的问题。