用于从串行通信写入和读取数据的 Shell 脚本

2023-12-12

我正在制作一个简单的 shell 脚本来向串行设备写入和读取数据。 我在终端使用这些命令,它们响应正确:

为了写我正在使用:

echo -en '\xAA\x04\xC2' > /dev/ttyUSB0

要阅读,我正在使用 read:

cat -v < /dev/ttyUSB0

但是当我将其包含在 shell 脚本中时,它没有响应。我需要这方面的帮助。 我还想知道,当我发送写入命令时,它应该以十六进制格式提供输出,但它以这种格式提供输出 M--*^NM-^H 也需要这方面的帮助。


我希望你的cat语句正在阻塞等待文件结尾。它可能将您的输入 tty 视为标准终端设备,在这种情况下,它将需要文件结束符来终止输入(例如 Control-D),并且它可以对输入和输出应用其他处理。你最好熟悉一下stty命令及其选项(参见stty 手册页)。尝试做stty -F /dev/ttyUSB0查看设置了哪些选项。

读取输入的最简单方法可能是一次读取一个字符。您可以尝试使用以下脚本。这将从输入中一次读取一个字符,直到输入“q”为止。

stty -F /dev/ttyUSB0 raw
stty -F /dev/ttyUSB0 -echo
while read -rs -n 1 c && [[ $c != 'q' ]]
do
        echo "read <$c>" # Replace this with code to handle the characters read
done < /dev/ttyUSB0

如果 -F 不起作用,则将 stdin 重定向到设备。

对于您的输出问题,我认为它有效,但您看到的字符显示为字符而不是十六进制代码。要查看十六进制代码(仅用于验证测试 - 我认为您不想将十六进制代码发送到终端),请尝试:

echo -en '\xAA\x04\xC2' | od -tx1

您可能还希望在输出时设置原始模式,以避免驱动程序更改输出字符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于从串行通信写入和读取数据的 Shell 脚本 的相关文章

  • Bash:将字符串添加到文件末尾而不换行

    如何将字符串添加到文件末尾而不换行 例如 如果我使用 gt gt 它将添加到文件末尾并换行 cat list txt yourText1 root host 37 echo yourText2 gt gt list txt root hos
  • Python glob,操作系统,相对路径,将文件名放入列表中[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个目录中所有文件的列表 其中文件名以 root 结尾 在阅读了论坛中的一些文章后 我尝试使用 glob 和 os listdir 的基本策略 但我都遇到了麻烦 首先 当我使用 import glo
  • 链接错误:命令行中缺少 DSO

    我对 Linux 使用 Ubuntu 14 04 LTS 64 位 相当陌生 来自 Windows 并且正在尝试移植我现有的 CUDA 项目 当通过链接时 usr local cuda bin nvcc arch compute 30 co
  • 如何在 Linux 和 C 中使用文件作为互斥体?

    我有不同的进程同时访问 Linux 中的命名管道 并且我想让此访问互斥 我知道可以使用放置在共享内存区域中的互斥体来实现这一点 但作为一种家庭作业 我有一些限制 于是 我想到的是对文件使用锁定原语来实现互斥 我做了一些尝试 但无法使其发挥作
  • “git add”返回“致命:外部存储库”错误

    我刚刚进入 git 的奇妙世界 我必须提交我对程序所做的一系列更改 位于名为的目录中 var www myapp 我创建了一个新目录 home mylogin gitclone 从这个目录中 我做了一个git clone针对公共回购 我能够
  • unix 下日期字段排序

    我有包含数十万条记录的文本文件 其中一个字段是日期字段 有没有办法根据日期字段对文件进行排序 09 APR 12 04 08 43 632279000 AM 19 MAR 12 03 53 38 189606000 PM 19 MAR 12
  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • Linux无法删除文件

    当我找到文件时 我在删除它们时遇到问题 任务 必须找到带有空格的文件并将其删除 我的尝试 rm find L root grep i 但我有错误 rm cannot remove root test No such file or dire
  • 来自守护程序的错误响应:加入会话密钥环:创建会话密钥:超出磁盘配额

    我尝试在我的服务器上安装 docker 使用本教程 https docs docker com install linux docker ce ubuntu 我想远程运行 docker 镜像并使用 portainer Web 界面来管理一切
  • Ubuntu Python shebang 线不工作

    无法让 shebang 线在 Ubuntu 中为 python 脚本工作 我每次只收到命令未找到错误 test py usr bin env python print Ran which python usr bin python 在 sh
  • 类似 jq 中的 sql join

    我有以下 json id 1 type folder title folder 1 id 2 type folder title folder 2 id 3 type item title item 1 folder 1 id 4 type
  • Bash 中所有匹配的^单词^替换^?

    为了澄清 我正在寻找一种方法来执行global搜索并替换先前使用的命令 word replacement 似乎只替换了第一场比赛 有没有一些set我无法选择的选项 尝试这个 echo oneone oneone gs one two Rep
  • 为什么 Linux 原始套接字的 RX 环大小限制为 4GB?

    背景 我试图mmap 我的原始套接字的 RX 环形缓冲区64 bitLinux 应用程序 我的环由 4096 个块组成 每个块大小为 1MB 总共 4GB 请注意 每个 1MB 块中可以有许多帧 如果您好奇 请参阅此文档了解背景信息 htt
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • 有没有一种快速方法可以从 Jar/war 中删除文件,而无需提取 jar 并重新创建它?

    所以我需要从 jar war 文件中删除一个文件 我希望有类似 jar d myjar jar file I donot need txt 的内容 但现在我能看到从 Linux 命令行执行此操作的唯一方法 不使用 WinRAR Winzip
  • 调用 printf 系统子例程在汇编代码中输出整数错误[重复]

    这个问题在这里已经有答案了 来回 在windows7控制台窗口中运行gcc s2 asm 然后生成一个exe文件 运行a exe 然后崩溃 为什么 s2 asm 代码由以下源代码生成 int m m 1 iprint m s2 asm请参考
  • 如何从shell脚本自动登录MySQL?

    我有一个 MySQL 服务器 其中有一个用户和密码 我想在 shell 脚本中执行一些 SQL 查询而不指定密码 如下所示 config sh MYSQL ROOT root MYSQL PASS password mysql sh sou
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的

随机推荐

  • App Engine 开发服务器在更改时不会重新加载代码

    我正在开发一个将在 Google App Engine 上运行的 python 应用程序 我使用以下目录结构设置我的应用程序 approot app yaml index yaml myapp py controllers some con
  • Sympy 到 numpy 会导致 AttributeError: 'Symbol' object has no attribute 'cos'

    我正在尝试使用 sympy 进行偏导数 我想将其转换为函数 以便我可以替换值并估计 t 1 t 2 的某些值的导数 我使用的代码如下 import sympy as sp import numpy as np from sympy impo
  • 将外部文本从 .txt 加载到 html 文件

    我知道如何使用 txt 文件加载外部文本 div div 和 JavaScript text load pathtofile content txt element s id should be in string form 但这可以在两个
  • 微服务是设计模式还是架构? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 经过严格的研究和分析 我终于得出了一个让我困惑的问题 微服务是一种设计模式还是架构 有人说这是一种作为整体应用程序解决方案而演变的模式 因此也是设计模式 一些人毫无疑问地确认这是一个涉及其
  • 如何使用按钮在 div 中水平滚动动画

    我发现这段代码添加了在 div 中水平滚动的按钮 它是由 Vlad Danila 制作的 但问题是我无法为它的滚动设置动画 我尝试向容器添加过渡 但没有成功 const buttonRight document getElementById
  • 在Matlab中将十进制转换为二进制?

    我正在将以 10 为基数的数字转换为以 2 为基数的数字 并指定要用来表示这些以 10 为基数的数字的位数 这是我的负数代码 function output DTB decimal binary if decimal lt 0 smalle
  • 如何使用 Selenium - Python 选择下拉菜单选项值

    我需要从下面的下拉菜单中选择一个元素
  • Orion 的配置管理器与 PubSub Broker

    查看 FIWARE 目录 我看到 Orion Context 的两个条目 经纪人 一个名为 发布 订阅代理 还有另一个 为了 配置管理器 So 为什么有两个条目 它们对应的是同一个软件吗 我什么时候应该使用发布 订阅代理以及什么时候我应该使
  • Kafka 日志压缩始终显示同一键的最后两条记录

    发现这两个问题 here and here 但我还是不太明白 我仍然有 意外的 行为 我尝试使用此配置来记录紧凑的 kafka 主题 kafka topics sh bootstrap server localhost 9092 creat
  • Microsoft-Teams:由于“访问此应用程序时出现问题”错误,无法测试个人选项卡

    我使用清单编辑器创建了一个应用程序 在其中生成了 ID 并配置了个人选项卡以打开公共网站 https www ibm com in en 我已经下载了该应用程序的 zip 我已将应用程序上传到团队并且该应用程序显示在团队中 当我单击该应用程
  • 通过在java中删除透明像素将图像裁剪为最小尺寸

    我有一个精灵表 其中每个图像都位于 32x32 单元格的中心 实际图像不是 32x32 而是稍小一些 我想做的是获取一个单元格并裁剪透明像素 使图像尽可能小 我该如何在 Java JDK 6 中做到这一点 以下是我当前如何将图块表分解为单元
  • 在 UITableView 中显示建议位置

    基本上我想在我的应用程序中做的是UISearchBar当我写入时 它将反馈位置结果并将其填充到出现的 UITableView 中 我在这个网站上看到另外一个问题 UITableview 上的显示位置 但这确实对我没有帮助 没有任何答案对我有
  • python内置函数与魔术函数和重写[重复]

    这个问题在这里已经有答案了 可能的重复 元类上的拦截运算符查找 如何在新样式类中拦截对 python 神奇 方法的调用 考虑以下代码 class ClassA object def getattribute self item print
  • SEO 友好的 URL(带有 .htaccess)

    我想向我的网站添加友好的 URL 但我有一个问题 我从未使用过 htaccess My link https example com index php page users 我想要一个像这样的网址 https example com pa
  • 将 C .obj 文件链接到 Delphi 应用程序,解决标准 C 依赖关系

    我使用 BCC 5 5 命令行编译器编译了 libxml2 现在我有很多 obj 文件 我想将它们链接到我的 Delphi 应用程序中 不幸的是 我收到很多 不满意的前向或外部声明 错误 指向标准 C 库函数 如 memcpy open r
  • 使用 Phonegap,如何查看剩余的可用磁盘空间?

    我有一个 Phonegap 应用程序 它使用文件系统 API 将文件保存在设备文件系统上 启动时 应用程序需要一些文件系统空间window requestFileSystem但运行时可以下载其他文件 并且我无法预测所需的磁盘空间总量 其想法
  • 使用 Wifi 时可以查找当前位置,但使用 GPS 时会失败

    我开发了一个应用程序来使用 GPS 查找用户的位置 这并没有错误 它使用 Wifi 正确找到位置 但在 GPS 模式下它不返回任何值 我在清单中添加了所需的权限 并且 GPS 已打开 有人可以告诉我如何使用 GPS 获取位置吗 我在这里包含
  • 在windows项目中调用asp.net webmethod

    我怎么称呼这个WebMethod在 Windows 应用程序中的 ASP NET 中 我尝试过使用 Web 请求 post 方法 但它返回的是 ASP NET 页面的 XML 这是我的网络方法 WebMethod public static
  • 将数据传递给指令?

    In the docs它指出您可以将各种参数传递给指令 所以我想传入一个值 v my directive test 但我收到错误 Property or method test is not defined on the instance
  • 用于从串行通信写入和读取数据的 Shell 脚本

    我正在制作一个简单的 shell 脚本来向串行设备写入和读取数据 我在终端使用这些命令 它们响应正确 为了写我正在使用 echo en xAA x04 xC2 gt dev ttyUSB0 要阅读 我正在使用 read cat v lt d