Serial port 如何将捕获的串行数据解码为数字波形?

Serial port 如何将捕获的串行数据解码为数字波形?,serial-port,labview,Serial Port,Labview,我试图读取存储在排气阀执行器装置上的数据。要激活读数,必须在设备的PWM-IN引脚上施加一组指定频率和占空比序列的PWM脉冲: frequency 300 Hz ±5 1. Duty cycle 80 ±5 (10 periods) 2. Duty cycle 50 ±5 (10 periods) 3. Duty cycle 10 ±5 (10 periods) 在最后一个占空比之后,设备在PWM-IN和PWMOUT线路上串行传输95字节的数据。对于数据传输,使用9600波特/秒±5%的波特率

我试图读取存储在排气阀执行器装置上的数据。要激活读数,必须在设备的PWM-IN引脚上施加一组指定频率和占空比序列的PWM脉冲:

frequency 300 Hz ±5
1. Duty cycle 80 ±5 (10 periods)
2. Duty cycle 50 ±5 (10 periods)
3. Duty cycle 10 ±5 (10 periods)
在最后一个占空比之后,设备在PWM-IN和PWMOUT线路上串行传输95字节的数据。对于数据传输,使用9600波特/秒±5%的波特率。每个字节都添加了一个起始位和一个停止位,符合RS232 8N1接口

使用NI USB-6341,我可以生成PWM脉冲,但我尝试使用数字输入(变化检测)读取串行数据,但没有任何成功。我不知道问题是时间…速率…样本还是其他什么

如何将此数字波形解码为所需的数据字节

串行数据应为十六进制(95字节):

Labview代码:

串行数据


据我所知,您可以成功激活设备的串行数据输出,并将该数据捕获为数字波形(为了确认这一点,请发布数字波形图,我们可以在其中看到每个高/低转换)。你一直在想的是如何将这个波形解码成它所代表的数据字节。我可以想出三种方法:

  • 通过分析记录的波形对数据进行解码。标准串行数据传输是:您有一个开始位、八个数据位和一个停止位。将波形的串行数据部分划分为块,每个块代表一个字节,在每个数据位期间查找波形是高还是低,并将它们组合成一个字节。除非发射设备的时钟非常不稳定,否则我认为你应该能够找到每个起始位的上升沿,并查看从该点到下一个起始位的固定时间偏移
  • 将数据线直接连接到串行端口输入。在花费大量时间尝试在软件中解码数据之前,我肯定会尝试看看普通串行端口是否能够识别它!如果PWM输出为“TTL电平”,即“空间”为0伏,“标记”为+5伏,则可以使用“TTL-USB”转换器设备,否则可能需要一个简单的电平转换电路将输出调整到正确的电平。由于数据消息之前的PWM信号,您可能会得到一些垃圾字符,但希望不难将它们与您想要的数据区分开来
  • 将记录的波形重放到串行端口输入。如果直接接收串行数据不能正常工作,即如果串行接收器被PWM信号弄糊涂,然后,您可以从捕获的波形中丢弃PWM部分,并从另一个数字端口重放它-我认为USB-6341支持这一点。将该端口连接到配置为接收的TTL级串行输入,您将获得所需数据的可靠解码版本

如果您在这些问题的软件方面需要更多帮助,请就您遇到的问题提出更具体的问题。如果您需要硬件接口方面的帮助,最好打开它。

您可以查看LabVIEW的软件UART,但恐怕您的硬件对它们没有多大用处。你可以阅读更多细节。除非你将此作为一种学习体验,并且你有很多时间可以消磨,否则我甚至不会考虑用你的DIO卡解码串行流的想法。这听起来很直截了当,但事实并非如此

老实说,我认为这是相当扭曲,你必须发送一个PWM命令和阀门返回串行在同一个环节。如果您已经有一个串行端口,为什么不使用它进行双向通信呢?这看起来像是一个邪恶老师的家庭作业

如果你想坚持使用LabVIEW(我不明白你为什么要这么做,我只是假设这是你想要的),解决问题最简单的方法就是使用一个便宜的USB到UART(RS232、TTL或你的邪恶阀门使用的任何东西),并使用一条流量控制线进行PWM。我认为您没有理由不能回收您的PWM LabVIEW代码


在我看来,对于这个特殊的任务,最简单、最可靠的解决方案是使用您喜欢的任何微控制器。即使您从未使用过,您也可能在一两天内找到一个可行的解决方案(对于微控制器来说,您所要做的并不是什么不同寻常的事情,而且您有大量的代码和教程)。

到目前为止,您都在做些什么,您在哪里遇到了问题?从“串行数据”图像上看,似乎您正在成功生成PWM信号并捕获设备的输出,是否正确?所以你的问题是如何解码串行数据?我只想用NI卡解码输入的串行数据。为了解码数据,我使用端口P0.3。我对您的问题进行了大量编辑,试图反映我认为您所做的工作以及您的问题所在。如果您不同意我的更改,请随意撤销或再次编辑。您能否发布您记录的部分串行数据波形的图像,但在水平轴上使用较短的时间刻度,以便我们可以看到从高到低和从高到低的单个转换?我认为这将有助于人们评估如何帮助你。
5555 5555 5555 5555 5555 8540 0101 0286
1001 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 B0