1

更新:这可能不是“配对”。这可能只需要启动一个服务并绑定到一个端口。但是,此代码也不存储它。即使在应用程序关闭后,我也需要存储设备。

我正在 Windows Mobile 6 手持设备上构建一个特别适合 Zebra RW 420 的程序。应用程序需要允许移动设备与 COM1 上的打印机配对。我相信我非常接近它,但我无法让这对请求起作用。

我可以与打印机进行通信,甚至可以通过直接连接和打印进行打印,但我无法让移动设备真正与之配对。我尝试了各种别针,包括null"1""0000""1234"。无论如何,该方法总是返回 false。任何建议或想法为什么这可能会失败?我可以配对仅在 WM6 蓝牙菜单中找到的设备,但不能在我的应用程序中配对。

需要注意的是,当程序说它正在尝试配对时,打印机上的小灯泡图标会亮起,但大约 5 到 10 秒后,它会失败。

BluetoothSecurity.PairRequest(device, "1"))

附加信息:

我已使用此代码成功与我的 Android 手机配对。

然后我登录并在 Zebra 打印机上设置了一个 PIN。但是,即使我知道打印机中的引脚正确/设置,此代码仍然无法与打印机配对。


来自https://km.zebra.com/kb/index?page=answeropen&type=open&searchid=1336682809706&answerid=16777216&iqaction=5&url=https%3A%2F%2Fkm.zebra.com%2Fkb%2Findex%3Fpage%3Dcontent%26id%3DSO8031 %26actp%3Dsearch%26viewlocale%3Den_US&highlightinfo=6292341,26,43#

Zebra 支持蓝牙的移动打印机只是“从属”设备。打印机将与任何试图建立有效连接的“主”设备配对。由于只有主设备可以发起连接,打印机不存储配对数据,该功能始终在主设备上完成。打印机一次只能连接到一个主设备,但任何数量的已存储打印机配对信息的主设备都可以启动与打印机的连接,而无需重新发现它。

我猜这意味着 InTheHand.Net BluetoothSecurity.PairRequest 可能不适用于这种类型的配对?


在 WM 手持设备的蓝牙部分,在“设备”选项卡下,我可以添加设备。我需要基本上做到这一点。我需要在该列表中注册设备,然后在“COM 端口”部分将其设置为使用 COM 1。我正在使用的应用程序实际上并没有打印。它的唯一目的是为其他应用程序准备打印机。

4

2 回答 2

0

Zebra 的引述听起来像是实际上根本不需要配对。你是从你的应用程序打印吗?如果是这样,只需连接到 SPP 服务并发送文本。

BluetoothAddress addr = ...
Guid serviceClass;
serviceClass = BluetoothService.SerialPort;
var ep = new BluetoothEndPoint(addr, serviceClass);
var cli = new BluetoothClient();
cli.Connect(ep);
Stream peerStream = cli.GetStream();
peerStream.Write ...

(来自通用蓝牙数据连接

于 2012-05-10T22:41:35.710 回答
0

在与此方法配对之前,需要正确配置 Zebra 移动打印机。这是我所做的:

  • 首先,我在打印机上运行了以下命令:

.

! U1 setvar "bluetooth.authentication" "setpin"

! U1 getvar "bluetooth.authentication"

! U1 getvar "bluetooth.enable"

! U1 getvar "bluetooth.discoverable"

! U1 setvar "bluetooth.bluetooth_pin" "0000"

! U1 getvar "bluetooth.bluetooth_pin"
  • 然后,使用此代码的应用程序成功运行。

.

int pair_req = 0;
try
{
    if (BluetoothSecurity.SetPin(device, "0000")) {
        while (status == false && pair_req < 3)
        {
            ++pair_req;
            status_box.Text = status_box.Text + '\n' + "Attempt " + pair_req.ToString();
            status_box.Update();


            if (BluetoothSecurity.PairRequest(device, "0000"))
            {
                status = true;
                client.Refresh();
                status_box.Text = "Paired Successfully.";
                status_box.Update();
                Thread.Sleep(5000);
            }
            else
            {
                status = false;

            }

        }
    }
}
catch (ArgumentNullException e)
{
    status_box.Text = "Pair failed.";
    status_box.Update();
    Thread.Sleep(5000);
}

status_box.Update();
Thread.Sleep(400);
于 2012-05-16T15:51:12.550 回答