- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在编写一个应用程序,例如用于 RS232 端口连接设备的串行端口驱动程序。我在处理即插即用事件时遇到问题(How to notify connect and disconnect devices to installed RS232 ports of PC?)。我正在为每个设备打开一个文件描述符 (/dev/ttySx),我需要在将设备连接到 PC 时打开它,在断开连接时需要关闭它。我的问题是我是否需要像在 USB 设备(在 libusb 库中)一样在串行端口编程中处理 PNP 事件,如果需要,最好的方法是什么?
操作系统:CentOS
编程语言:C++
最佳答案
因此,传统串行端口没有直接的 PNP 事件 - 显然 USB 串行端口在某种程度上是串行端口,但我相信这是由串行设备的“usb 驱动程序”处理的,而不是其他东西你需要处理。
不幸的是,没有明确的方法可以确定串行端口上连接的最基本行为(RX、TX 和接地的三根线)。如果您至少使用四根线,则可以使用 DCD(数据载波检测)来注意到串行端口“连接在另一端”。在 linux 中,没有办法在用户模式下识别 DCD 引脚本身的变化。如果您尝试使用 fd = open("/dev/ttyS0", O_RDWR);
- 如果您指定 O_NONBLOCK
它将立即打开,无论 DCD 的状态如何。如果您未指定 O_NONBLOCK
,则操作系统会在打开之前等待运营商出现。如果需要,可以稍后将文件更改为非阻塞。然后,您将不得不使用 IOCTL 调用(或这些调用的其他一些包装)来轮询 DCD:http://man7.org/linux/man-pages/man4/tty_ioctl.4.html
“检测”串行端口的另一种方法是简单地从端口发送一些内容,然后查看是否收到(正确类型的)答复。这显然假设该设备实际上被设计为以某种方式响应串行端口上的某些事件 - 例如,调制解调器将接受“Hayes 命令”或“AT 命令”,并将一些信息返回给这些命令。但是,当然,要使其正常工作,您需要先打开设备,然后发送内容,并且(如果是调制解调器)很难检测到设备何时消失。当然,如果你的另一端有“你自己的”设备,你可以在没有“流量”的情况下,发送一个“ping”命令来询问对方机器是否还在。如果没有回复,那么设备就没了……
关于c++ - 串口编程中的PNP(Plug and Play)事件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23488070/
我正在使用 Plug,我想了解一下。 我的代码如下所示: defmodule Numerino.Plug do use Plug.Router use Plug.Debugger plug
我使用开发人员工具包为本地 Dynamics CRM 2011 开发了一个插件。我没有更新默认代码,只是简单地部署了它。但我收到异常(exception)。我不知道它有什么问题。以下是异常详细信息。
如果我启动我的 phoenix 应用程序的一个实例并用请求点击它,我的插件将适本地停止。但是,在测试环境中做同样的事情,停止并不会阻止下游的插件被调用,这会导致我的测试失败。我认为问题可能来自我在测试
我是第一次使用 ALSA,我看到了错误: pcm_plug.c:67: snd_pcm_plug_close: Assertion `plug->gen.slave == plug->req_slav
在我的一个 Controller 中,我有以下代码(摘录): case HTTPoison.get("https://*****.zendesk.com/api/v2/users/search.jso
为了应对最近的安全漏洞,Oracle 如何改变用户的 Java 插件启动体验? 详情 JRE 1.7 Vulnerability SO 的问答。 Oracle Security Alert for C
我有一个路由器模块,可以将请求转发到其他路由器。在这个路由器中,我有一个由 plug(:match) 和 plug(:dispatch) 组成的管道。 defmodule Example.Router
安装 absinthe_plug 后出现以下错误: = Compilation error in file lib/kerrigan_api_web/router.ex == ** (Undefine
许多插件通过 访问其公共(public)映射界面。 map 。然后,用户可以将这些映射用作自己映射的 Hook ,例如:nmap fu fooPluginUnlinkRootDir . 最近我遇到了
我想用 Plug.Upload在我的一个路由器中,上面没有任何库或框架,但这里有官方文档:https://hexdocs.pm/plug/Plug.Upload.html不提供与其他插头不同的示例,例
有人知道自动抓取歌曲的方法吗? 我想制作一个歌曲播放列表,以便我可以制作一个播放列表并收听它们。我尝试过制作一个脚本,但它有点有效,它打开了菜单,但没有将其添加到播放列表中。这是我的代码: funct
我在使用一个简单的示例时遇到了一些困难。我没有使用 Phoenix FWIW,只需插入 defmodule Unauthorized do defexception message: "not a
作为 Elixir 和 Web 域的新手(没有 Web 框架经验),我想知道什么是 Plug?据我了解,Cowboy 是一个网络服务器(虽然是在 Erlang 中,而不是 Elixir),而 Phoe
我最近发现了一个 vim 插件,使用了名为 的东西。 。例如有一个命令 abc_def我想执行它。 我已经尝试过类似 :abc_def 的一切和类似的。什么都没起作用。和:help 没有提供任何信息
我正在尝试使用 jQuery 插件在我的应用程序中实现拖放功能,如下所述:http://farhadi.ir/projects/html5sortable/无论如何,我只能拖动列表对象,而不能将它们放
我即将开始开发基于“插件”架构的桌面应用程序 (WPF),并打算使用 MEF(及其 DirectoryCatalog)来发现和加载插件程序集。我们将开发许多插件,因此将它们保留在单独的 VS 解决方案
我已经实现了一个打印结构/类的内存布局的函数。我希望此功能以这种方式“插入”到流中: BaseStruct1 struct1; cout << "The struct1 object is:" <<
我正在尝试为 vim-plug 制作一个插件.目前我不确定如何加载本地目录。我已经在我的根目录中运行了: mkdir vim-test cd vim-test git init mkdir synta
我正在尝试测试一种接收 Plug.Conn 类型连接的方法但我找不到使用 Plug.Conn API 使用请求参数初始化连接的方法。 例如: test "put request params", %{
是否可以在分块状态下保持连接打开几秒钟? 在请求中,我创建了几个进程,假设需要 5 秒才能完成,之后我想通过 block 向客户端发送响应,但连接已关闭 我正在用 postman 测试这个,我有这个标
我是一名优秀的程序员,十分优秀!