Questions tagged «serial-port»

通常在较旧的PC上使用的硬件接口,通常带有9针DE-9插座/插头,在联网设备或服务器上也具有RJ-45插座/插头(否则通常用于以太网),或者带有(更宽)的硬件接口25针DB-25插座/插头。与该接口一起使用的两个常见标准是RS-232或RS-422。

2
使用echo和cat测试串行环回的意外结果
因此,我有一个标准的RS232串行端口,只需通过一条从Tx到Rx的导线即可将其环回。我通过运行测试环路echo和cat在两个独立的终端: cat /dev/ttyS1 echo "hi" > /dev/ttyS1 我的问题是输出。我希望看到一个“ hi”回到运行猫的终端,但是我得到了: hi [2 newlines] hi [4 newlines] hi [8 newlines] hi [16 newlines] hi [32 newlines] hi ...依次类推,直到I ctrl+ 为止c cat。 中断cat之后,如果我再次运行它,直到我第二次运行echo时,它才会输出“ hi”。 这正常吗?知道为什么我会看到这种行为吗? 编辑:换行符,我的意思是ASCII 0x0A。此输出中没有回车符。
17 cat  serial-port  echo 

6
Telnet发送Ctrl-C
我使用telnet连接到终端服务器,该服务器代理到RS-232端口的通信。 不幸的是,在使用某些设备时,无法发送CTRL+ C字符(0x03)。似乎没有发送字符,而是本地客户端捕获了击键,而我处于“其他模式”。我想要的只是发送一个角色。 为了调试,我一直在玩: ^] toggle termdata 和 ^] toggle options 当我在不起作用的终端服务器上按CTRL+ 时,会发生以下情况C: telnet 10.10.129.101 2012 Trying 10.10.129.101... Connected to termserv-val3 (10.10.129.101). Escape character is '^]'. ^] telnet> toggle options Will show option processing. ^] telnet> toggle termdata Will print hexadecimal representation of terminal traffic. SENT IAC IP SENT DO …


3
如何在Linux中将AT命令发送到调制解调器?
在Linux(Ubuntu)中,我尝试将AT命令发送到的调制解调器/dev/ttyACM0。我试图这样做: sudo socat - /dev/ttyACM0 但是在键入任何内容时,我只会得到一行重复此命令的代码(我希望是OK)。 当我做 sudo minicom modem1 它似乎有效。我输入AT并得到OK。我输入一些废话,我得到一个ERROR。 看来modem1minicom已通过某种方式配置为使用调制解调器/dev/ttyACM0。 如何使用socat发送AT命令?我需要配置一些东西吗?也许我可以使用modem1minicom的配置(我不知道如何查找/查看此配置)? 附加信息 给定的socat命令正确吗?我应该选择一些选项吗?使用该-v选项,我看到以下内容: AT > 2013/10/23 17:10:28.917413 length=3 from=0 to=2 AT < 2013/10/23 17:10:28.921598 length=3 from=0 to=2 AT AT ksjdhfjdgfhjkdfh > 2013/10/23 17:10:30.244923 length=17 from=3 to=19 ksjdhfjdgfhjkdfh < 2013/10/23 17:10:30.251383 length=29 from=3 to=31 ksjdhfjdgfhjk\b \bd\b \bf\b \bh\b \b …

2
我如何知道串行端口实际上是否在不打开设备的情况下传输数据?
我有一个通过串行线和两个以太网NIC连接的高可用性群集(Heartbeat)。我想设置一个能够识别断开的串行线的监视脚本(基本上,在SO上回答了相同的问题,但是我对这样的一般回答不满意)。 我不能简单地打开串行设备并自己读取数据,因为串行线是由Heartbeat打开的。 因此,我开始寻找一些间接的线索。到目前为止,我发现的唯一区别是的内容/proc/tty/driver/serial。连接后的样子如下: # cat /proc/tty/driver/serial serinfo:1.0 driver revision: 0: uart:16550A port:000003F8 irq:4 tx:2722759 rx:2718165 brk:1 RTS|CTS|DTR|DSR|CD 当断开连接时: # cat /proc/tty/driver/serial serinfo:1.0 driver revision: 0: uart:16550A port:000003F8 irq:4 tx:2725233 rx:2720703 brk:1 RTS|DTR 我没有足够的信心去确定行尾列出的信号具有已连接/已断开电缆的含义,因为我没有找到有关/ proc / tty / driver / serial内容的任何文档。我只能假设信号的存在意味着给定的信号是“现在”(或者是最近的过去?或?)。所述串行HOWTO说,当电缆被连接(CTS流量控制信号,DSR“我准备好进行通信”,CD“调制解调器连接到另一个”)附加信号呈现都在“输入”的方向。因此,另一端必须有人在世。 假设信号的含义如串行HOWTO中所述,我可以根据CD信号的存在来做出决定。但是我不确定。 因此,问题是:我的方法是“正确的”,还是我有不知道的更好的选择? 编辑: 我做了一些其他的观察,并与我的同事进行了交谈。事实证明,在线路的末端是否存在信号,可以很好地指示两端的串行端口活动。但是,这并不表示电缆的物理存在。每当有程序写入串行端口时,就会出现输出信号(RTS | DTR)。当另一侧正在写入时,会出现输入信号(CTS | DSR | CD)。当双方都没有通信时,根本就没有信号(这不一定意味着没有电缆)。不要忘记确切的信号取决于电缆的布线(我有“带有部分握手功能的空调制解调器”)。

2
udev规则,用于为相同的USB串行设备分配已知的符号链接
我有两个(可能将来会更多)相同的USB串行设备(不幸的是,序列号很低)-它们实际上是BTC矿机。当前,它们最终以ttyUSBXX为0、1或2结束,因为还有另一个不相关的USB串行设备(这里不必担心)。 我想编写一个udev规则,它将在内为它们分配可预测的名称/dev,例如/dev/miner0零是递增的整数。我不在乎其中的哪个会最终结束,但是我确实需要它们处于可预测的范围内,并且不会改变。 目前我有这个: SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="miner%n" 这很接近,因为我最终得到的名字像我想要的。唯一的问题是,因为矿工和第三装置有时会出现在一个随机的顺序,我可能最终有两个的miner0,miner1和miner2,但我从来不知道其中两个(无需手动寻找)。如果我添加更多非矿工USB串行设备(可能),则会加剧该问题。 我发现%e对它的引用似乎确实符合我的要求,但是似乎不再存在。 如何给这些设备起可预测的名称?如果可能的话,我也不想将它们绑定到USB总线上的位置。 进一步的信息/背景 值得一提的是,我并没有为它们的名字而烦恼,只是即使它们被插入另一个USB插座,它们的名称也不会改变。我会简单地忘记整个udev并在中使用条目/dev/serial/by-id,但是由于它们具有相同的序列号,所以其中只有一个! 还值得一提的是,这样做的原因是需要告知挖掘软件一系列要探测和查找的设备。我可以让它完成所有工作(它基本上只是找到ttyUSB*范围内的所有有效矿工),但是这会惹恼非矿工设备。因此,我需要提前知道的矿工的名称,以便可以将其配置为仅使用那些名称。可悲的是它不会接受通配符(因此,仅告诉它使用/dev/miner*似乎是不可能的),因此就出现了这个问题。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.