- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我将三个不同的串行设备连接到三个 USB 串行转换器 (FTDI USB-RS232)。如果我连接它们,我会按预期获得通用设备名称/dev/ttyUSBx。当我尝试编写一些 udev 规则时,udevadm 向我显示了三个设备的相同输出,但某些设备序列号属性除外。
这些序列号在每台设备上都会发生变化,因此如果我使用不同的 USB 串行转换器,我的规则将不再有效。因此,我需要一种方法来与连接到串行转换器的特定设备进行通信,并通过其响应来识别它。
"Writing udev rules" HOWTO , 说明了以下关于使用 PROGRAM 功能调用外部程序来命名设备的内容:
PROGRAM is used for running programs which produce device names (and they shouldn't do anything other than that). When those programs are being executed, the device node has not yet been created, so acting upon the device in any way is not possible,
规则示例:SUBSYSTEM=="usb", PROGRAM="/bin/device_namer %k", SYMLINK+="%c"
所以我无法从那里写入/dev/ttyUSBx 来识别设备。然后,我有了 RUN 功能,但它似乎无法创建新的 SYMLINK,因为 udev 不会获得 RUN 的输出。
规则示例:SUBSYSTEM=="usb", RUN="/bin/program"
我可以从该 RUN 脚本指示 udev 创建符号链接(symbolic link)吗?或者我可以从那里手动创建该符号链接(symbolic link)吗?
谢谢
最佳答案
一连接到电脑就自动在串口上盲目聊天是一件很可怕的事情。你确定你要这么做吗?首先,这需要一些时间,如果 udev 在创 build 备节点之前必须等待结果,这将延迟设备节点的出现。如果设备碰巧断电或者它的串行端口断开连接,那么你将无法正确命名它(并且你需要有一个超时来检测这个)。最后,如果连接了您期望的设备之外的另一台设备,您可能会向它发送垃圾,从而产生意想不到的后果。
您可以考虑依靠适配器的序列号来区分它们,并以一致的方式将每个适配器关联到外部设备。如果您的适配器甚至有真正的序列号而不是像 00000000 这样的占位符字符串,那么您就已经很幸运了!
尽管如此,这就是您的做法。
如您所料,您不能使用RUN
,因为为时已晚,设备节点已经创建。您必须使用 PROGRAM
。在您的程序中,您将不得不使用 mknod
自己创 build 备节点,因为 udev 还没有这样做。您应该在临时位置创建一个临时节点,并在程序退出前销毁它。
### Create the temporary device node in /tmp
device="/tmp/udev_device_guesser.$$"
# Note: mknod does not appear to be vulnerable to a symlink attack
mknod "$device" c "$MAJOR" "$MINOR"
### Use this device node to query what's attached to the serial port
insert your code here
### Get rid of the temporary node
rm -f "$device"
exit 0
关于linux - 根据设备响应而不是 udev 设备信息使用 udev 创 build 备符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5682874/
给定一个字符串,例如 s="##$$$#",我如何找到索引之前的“#”符号数等于“”数的索引$"符号在索引之后? 示例:如果 s="##$$$#",则输出将为 2。 解释:在索引 2 之前我们有 2
在本教程中,您将借助示例了解 JavaScript 符号。 JavaScript 符号 JavaScript ES6 引入了一种新的原始数据类型,称为 Symbol(符号)。符号是不可变的(不能更改)
在“函数编程的工艺”一书中,符号 '>.>' 将函数连接在一起,与 '.' 的方向相反。但是当我使用 ghci 实现它时,它显示了超出范围的错误 '>.>'。为什么?它是不再使用的旧符号吗? 最佳答案
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我需要从向量中删除 \"。这是我的数据: data <- c("\"https://click.linksynergy.com/link?id=RUxZriH*PWc&offerid=323058.1
我在 Nginx 配置中使用正则表达式来捕获文件 URL,但如果文件 URL 包含 # 符号,正则表达式模式将不会捕获它。 这里是nginx的配置部分。 location ~ ^/p/(?[\w\-=
如何使 & 符号在此图表的第一组条形/列下正确显示: http://jsfiddle.net/VxbrK/2/ 应该是“Apples & Oranges”而不是“Apples & Oranges”。
**在verilog中是什么意思? 我为测试台提供了以下逻辑 localparam NUM_INPUT_BITS = 1; localparam NUM_OUTPUT_BITS
我有一个使用正则表达式来验证电子邮件地址的方法。 public String searchFormail(String searchWord) { Pattern pattern = Patt
我想将一个字符串拆分为数字部分和文本/符号部分我当前的代码不包含负数或小数,并且表现得很奇怪,在输出的末尾添加了一个空列表元素 import re mystring = 'AD%5(6ag 0.33-
我有一些代码需要从数组中选择一个随机字符串,但它一直返回单个字母或数字。如何解决这个问题? var name = ["Yayek", "Vozarut", "Gezex",
我刚开始使用 Python,我在考虑应该使用哪种表示法。我读过 PEP 8关于 Python 符号的指南,我同意那里的大多数内容,除了函数名称(我更喜欢混合大小写风格)。 在 C++ 中,我使用匈牙利
在用 C# 编写代码时,我错误地在 if 语句中的变量前添加了一个符号(而不是感叹号)。 bool b = false; if (@b) { } 我很惊讶它编译成功,没有任何错误。 我想知道:上面的代
本文实例为大家分享了特殊字符替换电话号码中某一部分的方法,ios利用-号替换电话号码中间四位,供大家参考,具体内容如下 1、效果图 2、代码 rootviewcontroll
当我使用“x”和“z”作为符号时,这段代码没有问题: from sympy import * x, z = symbols('x z') y = -6*x**2 + 2*x*z**0.5 + 50*x
我需要从文本中删除标点符号: data <- "Type the command AT&W enter. in order to save the new protocol on modem;"
我有几个数字是 numeric 类。下面的例子。 df = c(12974,12412,124124,124124,34543,4576547,32235) 现在我想在每个数字前添加 '$' 符号而不
我有一个 highcharts 图例,其中符号以不同的大小显示,因为它们在实际图表中的大小不同。不幸的是,当数据点的大小增加时,它们也会在图例中增加。无论数据点大小如何,我都希望图例符号保持相同的大小
我需要使用包含平均值+-SD的标题。到目前为止,我只能得到以下信息: "Mean +- SD or N (%)" [1] "Mean +- SD or N (%)" 如何直接使用“+-”符号?您知道一
使用 XSLT 和 XPath 1.0,我有一个要转义的字符串以用于 URL,例如: one word & another 因此,描述元素的 text() 应该进行 URL 转义。 我该怎么做
我是一名优秀的程序员,十分优秀!