在COM端口中捕获原始数据


11

我有一个蓝牙传输设备,我的PC(Windows 7)已连接到该设备并进行配置,就好像它是通过RS232串行端口(COM4)连接的。如何捕获蓝牙设备发送的原始数据,或者等效地捕获COM4中接收的原始数据?


据我所知,这不是电子问题。
Brian Carlton

5
我实际上认为这是话题。有些软件可以捕获来自COM端口的串行数据(即使在其他应用程序正在使用该端口的情况下也可以捕获其中的某些数据),并且该软件实际上具有足够的专业性,以致大多数人不知道它的存在。不利的一面是,花了一些时间寻找这样的软件之后,我找不到在XP后的计算机上能正常工作的任何软件。
AndrejaKo 2012年


Answers:


9

您可以使用标准的终端程序来捕获不同格式的数据。我建议使用Bray的Terminal,这真的很容易,并且有很多选择!

还是要在某种自己的应用程序中捕获和解释数据?


谢谢!我不是要解释数据。我想要的只是接收原始数据并将其保存在文件中。我试图找出我的蓝牙设备实际发送的内容。布瑞的候机楼会为我这样做吗?
user11395 2012年

@ user11395-是的,任何一款不错的终端软件都可以执行此操作,我也使用Bray的Terminal-Putty是另一个好软件...提示-如果您在Bray的Terminal中遇到连接问题,请转到Windows中的BT模块设备属性(面板->蓝牙设备,右键单击并选择“属性”),然后取消选择并重新选择SPP服务。
奥利·格拉泽

谢谢奥莉。我正在运行Bray的Terminal,但似乎有问题。我“重新扫描”端口,找到端口COM4,连接到COM4,然后看到捕获的数据。但是我认为它们是不正确的。我不确定应该选择的波特率/数据位/奇偶校验停止位/握手的值。有什么建议么?
user11395 2012年

通常,将模块设置为9600,1,N(1个停止位,无奇偶校验),但是115200也很常见(无论从哪里购买,它都可以说默认值是什么)也设置为不握手。您可以使用AT命令设置波特率(不能通过无线链接,必须直接连接到模块Rx / Tx引脚)。尝试此操作之前,请重复发送一个已知字符,然后从最慢的波特开始并逐步提高波特率-其中之一应该产生正确的数据。
奥利·格拉泽

我设法通过Bray的终端捕获了数据。无论我在Bray的终端上选择9600还是115200的波特率,我都会得到相同的数据(这似乎是正确的)。为什么两个选项都给出相同的结果?另外,我发现我的设备的波特率为115200,但据我在设备管理器中所看到的,此COM端口设置为9600的波特率(我猜默认情况下)。我应该改变吗?
user11395 2012年

2

我发现的最佳解决方案虽然有点粗糙,但是却是Tera Term http://ttssh2.sourceforge.jp/index.html.en

Bray在Windows 8上不能很好地发挥作用。虽然没有源代码无法确切地说明它在做什么,但看来它正在对注册表设置的位置进行一些假设。

Portmon在Windows 8上也不适合我。


我正在最新版本的Win 10中使用Bray,因此至少在某些情况下它仍然可以工作。我的计算机仅安装了COM3。
克里斯·龙

2

我个人最喜欢的用于调试的终端仿真器是RealTerm,它具有丰富的嵌入式系统显示选项。RS-232和TCP / IP都可以在Windows 7 x64及更低版本下正常运行(我没有在Win 8下尝试过,但是没有任何理由认为它不起作用)。我发现特别有用的一些功能是:

  • ASCII / HEX数据视图
  • 捕获文件可以包含时间戳记
  • 有一种简单的方法来发送二进制数据序列
  • 硬件流量控制引脚可以轻松监控/更改

I2C,SPI,Dallas 1-wire和GPIB还有很多其他选择。我没有亲自使用这些功能,但是上面的SourceForge页面上有很好的总结。这是主显示标签视图的屏幕截图:

在此处输入图片说明


1

我也建议Bray,如果您不确定波特率,请打开硬件管理器,浏览至COM端口并选择属性,尽管并非总是准确,但仍在此处列出。


我设法通过Bray的终端捕获了数据。无论我在Bray的终端上选择9600还是115200的波特率,我都会得到相同的数据(这似乎是正确的)。为什么两个选项都给出相同的结果?另外,我发现我的设备的波特率为115200,但据我在设备管理器中所看到的,此COM端口设置为9600的波特率(我猜默认情况下)。我应该改变吗?
user11395 2012年


1

根据您的确切要求,使用微控制器可以捕获数据并为其添加时间戳,然后将其转发到PC可能会有所帮助。以往在典型PC上发现的UART只能够记录准确的定时信息或通过让处理器在字节到达时抓住每个字节而没有缓冲来捕获9位数据。后来的操作系统和驱动程序通常都无法做到这一点,而UART-to-USB芯片在这方面毫无希望。如果您的PC可以以所需数据速率的两倍接收数据,则您可以让微控制器接收字节数据,并为每个字节发送两个字节。第一个字节将设置MSB,在下一个比特中报告传入数据的MSB(如果是9比特,则报告两个MSB),并使用后5位(或4位)来报告自上一个字节的停止位的中间位置以来的时间量(0-30或0-14)(以例如一位时间为单位进行测量)。第二个字节将清除MSB,并包含剩余的7位数据。当没有数据传输时,将每30(或14)位时间发送FF起搏字符。因此,接收这些报告的软件将能够非常精确地(在一比特时间内)重建输入数据的准确时序。如果提供给PC的数据速率是所监视数据速率的四倍,则可以使用这种通用方案将两个接收通道复用到一个PC端口中(使用标头字节的一位来标识它是否包含第一或第二个数据)港口)。虽然将事情精确地计时到一位时间似乎有些多余,但有时它可能会有用,

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.