首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >监视USB端口到标准CP2102串行适配器

监视USB端口到标准CP2102串行适配器
EN

Unix & Linux用户
提问于 2017-10-06 22:23:38
回答 1查看 2.6K关注 0票数 2

我一直试图得到一个HEX转储,什么是正在发送/接收到CP2102串行转换芯片。我可以找到监视硬件串口/dev/TTYS0 0等人的例子。

代码语言:javascript
复制
socat -d -d pty,link=/dev/ttyUSB0,raw,echo=0 pty,link=/dev/ttyUSB1,raw,echo=0

有人知道有什么资源可以告诉我如何监控这样的USB端口吗?到目前为止,一切都不起作用。也许我只是不明白串行监控的重路由方面什么的?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2017-10-09 16:46:49

如果可能的话,最简单的方法可能是调整软件以发出十六进制。大多数软件可能已经有了sdio.h (或等效的)和十六进制的串行数据,只需对往返于串行文件描述符的数据进行printf调用(或等效)。没有复杂的额外进程运送数据往返和很少额外的延迟。

如果您匆匆忙忙,可以使用strace (或sysdig SystemTap等)之类的方法来记录通信,尽管strace会大大减慢进程的速度,而且输出将需要后处理;另外两个是内核模块,所以可能不合适。

代码语言:javascript
复制
strace -xx -y -e trace=read,write -p $pid_of_your_program_here

在硬件级别,总线、盗用或类似的可能是另一种进入通信的方式。

同时,socat(1)似乎为十六进制选项提供了一个方便的-x

代码语言:javascript
复制
   -x     Writes  the  transferred  data not only to their target streams,
          but also to stderr. The output format is  hexadecimal,  prefixed
          with  ">  "  or "< " indicating flow directions. Can be combined
          with -v .

在做了一些实验之后,我可以通过以下方式监听到一个随机的Arduino:

代码语言:javascript
复制
socat -x PTY,link=/dev/blah,raw,wait-slave /dev/serial/by-id/usb-Arduino...

然后您的软件可以打开/dev/blah (或者可能通过EXEC运行它?)。注意,在raw路径之后没有指定任何/dev/serial/by-id/usb-Arduino...选项,与该设置一样,当socat试图配置它时,会出现tcgetattr(6, ...): Inappropriate ioctl for device错误。socat输出可能还需要后处理,因为它看起来类似于:

代码语言:javascript
复制
--
2017/10/09 16:32:20 socat[30806] I transferred 1 bytes from 6 to 5
< 2017/10/09 16:32:20.475916  length=31 from=2042 to=2072
 52 65 71 75 65 73 74 69 6e 67 20 74 65 6d 70 65  Requesting tempe
 72 61 74 75 72 65 73 2e 2e 2e 44 4f 4e 45 0a     ratures...DONE.
--
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/396602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档