【问题标题】:Communication with Serial Port - iOS Swift与串口通信 - iOS Swift
【发布时间】:2018-07-21 04:04:18
【问题描述】:

我决定从事一个开源项目。 该项目包括与串行端口的通信。这里是link 到它接受通过串行端口通信的一般命令参考。 该项目的开发人员给了我一个提示(Java 代码)关于它如何连接,以及我将如何读取/写入数据到串行端口。 他是这样说的:

创建套接字的调用(通常到 192.168.0.1 和端口 9999):

Socket s=new Socket(ip,port);

还有几个对象可以完成这项工作:

BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

char c;
out.write(":MS#");
if (in.ready()) c=in.read();

提到的代码包括通过 Socket 的连接。我将如何在 iOS Swift 中做同样的事情。 一些提示将不胜感激。

【问题讨论】:

  • 有像CFNetwork这样的内置套接字服务和新的Network framework(仅限iOS12 - 仍然是测试版),但使用像CocoaAsyncSocket这样的库可能更简单
  • 我会试一试。虽然我不知道沟通是如何进行的。任何建议将不胜感激:D
  • 快速查看似乎“串行端口”实际上是侦听 TCP 套接字的终端服务器。您打开到该套接字的网络连接,您在输出流上发送的任何数据都从串行端口发送出去,发送到串行端口的任何数据都通过与连接关联的输入流传递
  • 太棒了!我要试一试。谢谢。
  • 您需要熟悉处理异步事件,因为轮询串行端口以获取数据或阻止等待输入不是一个好主意

标签: java ios swift sockets socket.io


【解决方案1】:

IOKit、POSIX、Darwin/MachKernel 提供了一系列选项。简而言之,对于一件简单的事情来说,复杂得惊人!之所以如此,是因为串口的遗留问题。

在 Swift 中使您与此隔离的流行框架是 ORSSerialPort。这个开源项目的好文档也是如此。还有https://github.com/kpishere/POSIXSerialPort。以相同的方式进行模式化,但更简单,并且不依赖于 IOKit。它使用 Macos 中的 POSIX api 以及一些 Mach 内核特定的 api 用于线程和信号抽象。

【讨论】:

猜你喜欢
  • 2015-07-13
  • 1970-01-01
  • 2021-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多