Bluetooth 如何从条形码扫描仪MT2070发送数据

Bluetooth 如何从条形码扫描仪MT2070发送数据,bluetooth,barcode-scanner,motorola-emdk,Bluetooth,Barcode Scanner,Motorola Emdk,摩托罗拉的MT2070条码扫描器有问题。我使用.NETUpdate 2的EMDK 2.6从扫描的条形码创建字符串,然后将其传输到主机pc。但传输失败 MT2070使用Windows CE5.0运行,并通过蓝牙连接至支架STB2078。但每次发送失败,结果代码都是E_错误模式 问题是,我不理解错误的_模式意味着什么,我将其设置为解码,而通过原始数据,源意味着什么 ScannerServicesClient scannerServices; scannerServic

摩托罗拉的MT2070条码扫描器有问题。我使用.NETUpdate 2的EMDK 2.6从扫描的条形码创建字符串,然后将其传输到主机pc。但传输失败

MT2070使用Windows CE5.0运行,并通过蓝牙连接至支架STB2078。但每次发送失败,结果代码都是E_错误模式

问题是,我不理解错误的_模式意味着什么,我将其设置为解码,而通过原始数据,源意味着什么

        ScannerServicesClient scannerServices;
        scannerServices = new ScannerServicesClient();
        SCANNERSVC_MODE mode;

        if(scannerServices.Connect(true))
        {
            Logger("start service with decode rights"); // primitiv method to see what happen

            scannerServices.GetMode(out mode);

            if (mode != SCANNERSVC_MODE.SVC_MODE_DECODE)
            {
                mode = SCANNERSVC_MODE.SVC_MODE_DECODE;
                if (scannerServices.SetMode(mode) != RESULTCODE.E_OK)
                {
                    Logger("cant set mode: " + mode.ToString());
                }
            }

            // wanna know which connection is use
            string connection = "";

            switch (scannerServices.HostParameters.CurrentConnection)
            {
                case SCANNERSVC_DATA_CONNECTION.NO_CONNECTION:
                    connection = "Not connected";
                    break;
                case SCANNERSVC_DATA_CONNECTION.BLUETOOTH:
                    connection = scannerServices.HostParameters.BluetoothConnection.ToString();
                    break;
                case SCANNERSVC_DATA_CONNECTION.RS232:
                    connection = scannerServices.HostParameters.RS232Connection.ToString();
                    break;
                case SCANNERSVC_DATA_CONNECTION.USB_CABLE:
                    connection = scannerServices.HostParameters.USBConnection.ToString();
                    break;
            }
            Logger(connection);

            ScannerHostParameters scnHost = new ScannerHostParameters(scannerServices);



            //example hello
            string input = "hello";                     //what should send
            byte[] output = new byte[input.Length];     //field with converted data
            byte source = 0;    //<-- what mean source? i sum all byte-value but this cant be correct

            for (int i = 0; i < input.Length; ++i)
            {
                output[i] = Convert.ToByte(input[i]);
                source += output[i];
            }

            RawData rawData = new RawData(output, input.Length, source);
            //RawParameters rawParam = new RawParameters();

            //rawParam.BaudRate = RawParameters.RawBaudRates.RAWSERIAL_9600;
            //rawParam.Type = RawParameters.RawHostType.Auto;

            RESULTCODE result = scannerServices.SendRawData(rawData, 2000);

            if(result == RESULTCODE.E_OK)
            {
                Logger("successful send");
            }
            else
            {
                Logger("Send failed: " + result.ToString());
            }
            Logger("ScannerService kill");
            scannerServices.Disconnect();
        }
        Logger("\n");
        scannerServices.Dispose();

        scannerServices = null;

谢谢你的帮助!很抱歉,我的英语

在您正在设置模式的某个地方-我在设置模式后立即执行此操作您将要执行以下操作:

//set raw mode
if (RESULTCODE.E_OK != scannerServices.SetAttributeByte((ushort)ATTRIBUTE_NUMBER.ATT_MIA_HOSTNUM, (byte)ENUM_HOSTS.HOST_RAW))
{
    throw new Exception("Can't set RAW mode");
    scannerServices.Disconnect();
    scannerServices.Dispose();
    return;
}
如果您有:

RawData rawData = new RawData(output, input.Length, source);
您可以将源保留为0:

RawData rawData = new RawData(output, input.Length, 0);
不幸的是,在编程方面,我并不是最棒的,所以我只是在让扫描器正常工作的过程中遇到了麻烦。文档不是很好,事实上我发现它严重缺乏。甚至摩托罗拉的员工似乎也不太了解它,也不知道如何编程。他们至少在一点上给了我错误的信息

我对扫描仪使用CDC COM端口仿真模式,以便它显示在设备管理器的端口下。我需要扫描仪与使用COM端口的旧程序一起工作。为此,还需要一个驱动程序


根据您使用扫描仪的方式,上述操作可能有效,也可能无效。

您确定在传输之前已成功读取条形码吗?是的,我确定。因为我让条形码显示在文本框中。一切都很好。你好,谢谢你的回答。我发现我需要根据蓝牙将扫描仪与支架配对。之后,我用usb电缆将支架连接到主机pc。如果发现支架为Com端口,我已使用文档中的ScanItem扫描RS232 Modus条形码。在这之后,一切都可以很好地与连接,所以我可以使用SendLabel,它的工作非常好。