C# - Windows Mobile - Pairing with Zebra RW 420

本文关键字:Zebra RW with Pairing Windows Mobile | 更新日期: 2023-09-27 18:33:52

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

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

我能够与打印机通信,甚至可以通过直接连接和打印进行打印,但我无法让移动设备实际与之配对。我尝试了引脚的变体,包括null"1""0000""1234"。无论如何,该方法始终返回 false。任何建议或想法为什么这可能会失败?我可以在WM6蓝牙菜单中配对设备,但不能在我的应用程序中配对。

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

BluetoothSecurity.PairRequest(device, "1"))

附加信息:

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

然后,我登录并在 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 蓝牙安全.PairRequest可能不适用于这种类型的配对?


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

C# - Windows Mobile - Pairing with Zebra RW 420

斑马的报价听起来像实际上根本不需要配对。 是否从应用打印? 如果是这样,只需连接到 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 ...

(来自一般蓝牙数据连接(

与此方法配对之前,需要正确配置 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);