当前位置: 首页 > 知识库问答 >
问题:

如何从Brother SDK中找到IOS上的打印机?

谢志文
2023-03-14

我从iPad上找到打印机设置打印可以找到我哥哥的打印机。

但是当我尝试代码时,我得到了空的设备列表,我不知道为什么。

我不熟悉斯威夫特。我只是尝试了官方文档中的示例代码。https://support.brother.com/g/s/es/htmldoc/mobilesdk/guide/discover-printer.html

这是我的代码:

func getPrinter() {

    let printerManager = BRPtouchNetworkManager()

     printerManager.setPrinterName("Brother QL-720NW")
     printerManager.startSearch(5)

    printerManager.getPrinterNetInfo()

    print("start")
    let testFind = YourClass()

    print("1")
    testFind.startSearchWiFiPrinter()
    testFind.didFinishSearch(printerManager)
    print("2")
  }

class YourClass: NSObject, BRPtouchNetworkDelegate {
    private var networkManager: BRPtouchNetworkManager?

    func startSearchWiFiPrinter() {
      print("3")
      let manager = BRPtouchNetworkManager()
      manager.delegate = self
      manager.startSearch(5)
      self.networkManager = manager
    }

    // BRPtouchNetworkDelegate
    func didFinishSearch(_ sender: Any!) {
      print("4")
      guard let manager = sender as? BRPtouchNetworkManager else {
        print("5")
        return
      }
      guard let devices = manager.getPrinterNetInfo() else {
        print("6")
        return
      }
      print(devices)
      print("7")
      for deviceInfo in devices {
        print("8")
        if let deviceInfo = deviceInfo as? BRPtouchDeviceInfo {
          print("Model: \(deviceInfo.strModelName), IP Address: \(deviceInfo.strIPAddress)")
        }
      }
    }
  }

我调用我的函数getPrinter(),这是我的打印日志:

共有1个答案

壤驷骁
2023-03-14

SDK文档提供了两种方法的示例实现:

func startSearchWiFiPrinter() {}

func didFinishSearch(_ sender: Any!) {}

在要执行搜索的类中,必须实现这些。您还需要声明类以参与协议BRPtouchNetworkDelegate。最后一件事是拥有一个能够容纳网络管理器的属性(这是在以下行中完成的:private var networkManager:BRPtouchNetworkManager?

但是,您不应该自己调用“didFinishSearch”方法。当您调用startSearchWiFiPrinter时,搜索开始,BRPtouchNetworkManager实例本身调用didFinishSearch方法。它能够这样做,因为您在以下行中设置了代理:manager。委托=自

你不需要2节课。您也不应该使用两个BRPtouchNetworkManager实例。

试试这个。请记住,您在startSearchWiFiPrinter的参数中输入的数字意味着搜索的时间(秒)。

class EXAMPLEClass: NSObject, BRPtouchNetworkDelegate {
    private var networkManager: BRPtouchNetworkManager?
    func getPrinter() {
         self.startSearchWiFiPrinter()
    }

    func startSearchWiFiPrinter() {
      let manager = BRPtouchNetworkManager()
      manager.delegate = self
      manager.setPrinterName("Brother QL-720NW")
      manager.startSearch(5)
      self.networkManager = manager
    }

    // BRPtouchNetworkDelegate
    func didFinishSearch(_ sender: Any!) {
      print("4")
      guard let manager = sender as? BRPtouchNetworkManager else {
        print("5")
        return
      }
      guard let devices = manager.getPrinterNetInfo() else {
        print("6")
        return
      }
      print(devices)
      print("7")
      for deviceInfo in devices {
        print("8")
        if let deviceInfo = deviceInfo as? BRPtouchDeviceInfo {
          print("Model: \(deviceInfo.strModelName), IP Address: \(deviceInfo.strIPAddress)")
        }
      }
    }
  }

 类似资料:
  • 问题内容: 我正在为具有内置行式打印机的Android设备开发应用程序。我必须与此打印机进行交互,并使用它来打印收据上的详细信息,然后使用裁纸器自动剪切该收据。我已经在其中看到了一些ESC命令,但是我不知道如何执行这些ESC命令。 关于Casio设备打印机,我有三个主要问题: 1.我已经使用了内置打印机的打印代码,但是打印后切纸刀没有激活 2.我不知道如何在android中将ESC命令发送到打印机

  • 我们希望打印到连接在apache运行的POS打印机上。由于应用程序的设计和部署,打印应该从服务器上完成(它应该检测订单并发送到不同的打印机和不同格式的打印...账单,厨房订单,等等...)。出于这个原因和其他原因(例如,从iPad访问应用程序),我们放弃了像QZ-Print applet这样的选项,并需要直接在服务器端打印。 提前谢了。

  • 问题内容: 我有一部分代码可以作为服务的一部分在本地正常运行。 该代码作为服务的一部分运行,当我通过提供数据进行单元测试时,它最终将生成报告并进行打印。 当我从ajax调用在.ashx中运行完全相同的代码段时。报告已生成(我可以看到在磁盘上创建的pdf文件),但未进行打印。 在这两种情况下,都使用相同的代码来打印报告。(两种情况下objReport.DefaultAutoPrint = 0) 我唯

  • 问题内容: 我只想在不选择用户的情况下打印JasperReport。我进行了搜索,但是没有有效的解决方案。这是我的代码的相关部分: 我想选择一台打印机,而不是简单的printReport。有什么办法吗? 问题答案: 这是应该的样子:

  • 问题内容: 我必须在热蓝牙打印机上打印一些数据,我正在这样做: 它适用于文本,但不适用于图像。我想我需要获取byte[]图像数据。我尝试通过这种方式获取图像数据: 不幸的是,打印机打印了许多奇怪的字符(大约50厘米的纸张)。我不知道如何打印图像。 我想尝试获取位图的像素,然后将其转换为a byte[]并发送,但是我不知道该怎么做。 谢谢 更新: 经过这么长时间,我正在执行此操作:我有一个名为pri

  • 问题内容: 我知道python中的\ xb函数,但是它似乎对我不起作用。我知道我可能需要下载第三方模块来完成此任务,如果是这样,哪一个最好? 我目前正在编写一个二项式展开求解器,以尝试和使用我自学的技能。当我尝试显示用户输入的扩展用于确认时,就会出现问题。目前,我必须像这样打印表达式: 这将打印(2x4)^ 5,而我希望将索引打印为上标。如何才能做到这一点? 问题答案: 您可以使用为您执行必要格式