【问题标题】:How do I know the Hexadecimal to use to communicate with my serial port?我如何知道用于与我的串行端口通信的十六进制?
【发布时间】:2014-10-22 02:04:04
【问题描述】:

背景信息:我正在使用 Visual Studio 2005 在对话框上编写 MFC/C++。如果我缺少任何信息或任何必要的信息来回答我的问题,请原谅我。我将在每天上午 9 点至下午 5:30 之间进行检查,因此请随时询问更多背景信息。

我确实知道如何使用 MFC/C++ 打开、读取、写入和关闭串行端口。问题是我不知道要向串口发送什么。我见过我的同事这样发送十六进制:

21 04 07 00 08 00 0F 22

我的工作是在 rx 和 tx 板上的以下图表上显示信号、噪声和阈值。 rx 和 tx 板位于事物的底部,如下所示:(ttp://www.joyfay.com/images/fei833/POSsystem/SSS05.jpg)

  1. http://tinypic.com/view.php?pic=2qdbnf8&s=8#.U_7vU_mSxnQ
  2. http://tinypic.com/view.php?pic=29vxzmg&s=8#.U_7vi_mSxnQ

我已准备好学习,我不要求直接回答。我希望我在 Stack Overflow 的编程前辈可以在这里帮助我。非常感谢。

【问题讨论】:

  • 这不是一个真正的 C++ 问题,这是一个关于如何驱动串行端口的问题,这里是题外话
  • 您需要查阅设备的 API 文档。
  • 我一直在网上搜索,我看到大多数人询问如何打开、读取、写入和关闭端口。在写端口时,他们似乎总是已经知道用十六进制写什么,只是缺乏打开、读取、写入和关闭端口的代码知识。我正好相反。关于我应该去哪里的任何想法?非常感谢。
  • 设备 API 文档是手册指南吗?还是我应该查看固件?
  • @BryanSeTo,两者之一。如果你有固件,那就可以了。否则询问制造商。如果您的公司是制造商,请询问您的一些同事。

标签: c++ mfc dialog


【解决方案1】:

您将不得不为您正在与之交谈的设备挖掘文档。它应该为您提供用于交换数据的协议。询问您的同事,他们肯定知道该文档的位置。

我只能粗略猜测

21 04 07 00 08 00 0F 22

0x21 字节很可能是表示帧开始的起始字节。设备使用它来同步自身以检测帧的开始。 0x22 字节很可能是结束字节,确认后面不会有更多字节。设备使用它来知道帧已被完整接收,因此它可以处理数据。 0x04 字节很可能是一个长度字节,它编码了后面有多少个数据字节。这似乎是 0x07、0x00、0x08、0x00。他们编码的内容非常难以猜测,它可能是两个 16 位值,例如 7 和 8。0x0f 字节可能是数据字节的校验和,用于验证数据字节没有损坏。

非常粗略的猜测,请阅读文档以确定。当然,请与您的同事讨论这件事,当您在隔壁的隔间里有人知道事实时,在互联网上询问一个完全陌生的人是没有意义的。 Petzold 的《代码》一书很好地帮助您停止谈论“十六进制”。

【讨论】:

  • 我开始明白这组十六进制想要表达的意思了。是的,我会听取建议并询问我的同事。感谢您提供有关此问题的解释、提示和资源。
  • 我已经就这个问题咨询了我的主管,他写了一个类似的软件。他说,之前编写这个软件的人没有留下任何协议或文档,而且做得很糟糕。我想问一下是否可以查看固件并尝试理解这行十六进制。还是我应该设计自己的协议?
猜你喜欢
  • 2021-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
  • 1970-01-01
  • 2012-10-24
  • 2011-06-20
相关资源
最近更新 更多