0

我正在从我的 Raspberry Pi 上的 gpio 引脚读取以下二进制信号(它是气象站的输出)。

第一列是二进制高或二进制低。第二列是它在状态中花费的时间(秒)。

如何将此信号转换为十六进制?!

...
0 14.929292
1 0.002127
0 0.006867
1 0.001393
0 0.005303
1 0.001274
0 0.006126
1 0.001361
0 0.007541
1 0.001417
0 0.005062
1 0.001474
0 0.005119
1 0.001565
0 0.004906
1 0.001587
0 0.004916
1 0.002031
0 0.006007
1 0.001479
0 0.003678
1 0.001485
0 0.000994
1 0.004142
0 0.000865
1 0.006277
0 0.003858
1 0.001288
0 0.001028
1 0.001468
0 0.000945
1 0.004138
0 0.003327
1 0.001303
0 0.001174
1 0.001318
0 0.001017
1 0.001510
0 0.001485
1 0.001080
0 0.001907
1 0.002782
0 0.001083
1 0.002012
0 0.000712
1 0.003984
0 0.001785
1 0.001291
0 0.003149
1 0.001185
0 0.001020
1 0.001719
0 0.000993
1 0.003965
0 0.001157
1 0.001346
0 0.001762
1 0.001353
0 0.003219
1 0.001090
0 0.001106
1 0.001475
0 0.001160
1 0.001079
0 0.003874
1 0.001387
0 0.001015
1 0.001168
0 0.001092
1 0.001336
0 0.002504
1 0.001466
0 0.006063
1 0.001391
0 0.001196
1 0.001460
0 0.001082
1 0.001237
0 0.005049
1 0.001654
0 0.004914
1 0.001410
0 0.002722
1 0.001601
0 47.818081
1 0.001452
0 0.007532
1 0.001438
0 0.007975
1 0.001494
0 0.003077
1 0.002131
0 0.003056
1 0.001254
0 0.002685
1 0.001372
0 0.005003
1 0.002051
0 0.006997
1 0.001608
0 0.004868
1 0.001524
0 0.002524
1 0.001397
0 0.003103
1 0.001211
0 0.002434
1 0.001328
0 0.003475
1 0.001469
0 0.003672
1 0.001384
0 0.003847
1 0.001101
0 0.001133
1 0.001352
0 0.003504
1 0.002133
0 0.003257
1 0.001070
0 0.001182
1 0.001511
0 0.003301
1 0.001482
0 0.003779
1 0.001210
0 0.001099
1 0.001396
0 0.001127
1 0.001433
0 0.001697
1 0.001434
0 0.003132
1 0.001175
0 0.001754
1 0.001520
0 0.002905
1 0.001425
0 0.003625
1 0.001155
0 0.001036
1 0.001469
0 0.001041
1 0.001422
0 0.001251
1 0.001275
0 0.003414
1 0.001446
0 0.001734
1 0.001653
0 0.000435
1 0.002349
0 0.000974
1 0.005346
0 0.003247
1 0.001265
0 0.001192
1 0.001213
0 0.001404
1 0.001349
0 0.000963
1 0.003732
0 0.001186
1 0.001220
0 0.002529
1 0.001357
0 0.002573
1 0.001700
0 0.001158
1 0.001058
0 0.002571
1 0.001314
0 0.001164
1 0.001364
0 0.124659
1 0.001485
0 0.007492
1 0.002176
0 0.006881
1 0.002083
0 0.005526
1 0.001351
0 0.005029
1 0.001528
0 0.001726
1 0.001366
0 0.002089
1 0.001258
0 0.002579
1 0.001463
0 0.001262
1 0.001487
0 0.000975
1 0.003736
0 0.002321
1 0.002073
0 0.004412
1 0.001433
0 0.002619
1 0.001390
0 0.002817
1 0.001201
0 0.003475
1 0.001512
0 0.000906
1 0.003958
0 0.003492
1 0.001581
0 0.000985
1 0.004103
0 0.001370
1 0.001046
0 0.001162
1 0.001534
0 0.001080
1 0.001510
0 0.003077
1 0.002124
0 0.003046
1 0.001293
0 0.003908
1 0.001406
0 0.001002
1 0.001109
0 0.001524
1 0.001009
0 0.001347
1 0.001448
0 0.000950
1 0.003651
0 0.001133
1 0.002038
0 0.002838
1 0.001991
0 0.002866
1 0.001291
0 0.003824
1 0.001191
0 0.001163
1 0.001447
0 0.000970
1 0.004059
0 0.000972
1 0.006388
0 0.001252
1 0.001262
0 0.001345
1 0.001329
0 0.004930
1 0.001273
0 0.003556
1 0.001570
0 0.003431
1 0.001550
0 0.001256
1 0.001461
0 0.001098
1 0.001005
0 0.002555
1 0.001503
0 0.005044
1 0.002070
0 0.004427
1 0.001499
...

如您所见,它为零约 48 秒,然后触发 1 和 0 的负载并再次回到零。

我需要弄清楚协议。我说不出那是什么。我唯一掌握的信息是当前温度为 21 摄氏度,风速为零,风向为零。非常感谢任何见解,

二进制数据图

上面是两个不同传输的一些二进制数据图。

4

1 回答 1

2

正如@NikolaiNFetissov 所说,绘制您测量的周期。但要绘制几个,一个在另一个之上,从 48 秒休息后的第一个间隔开始。

所以你将拥有:

A (21C) _____|----------|_____|-----|_____|-----

B (24C) ______|---------|_____|-----------|__________

Clock   _____|-----|_____|-----|_____|-----|_____|-----

etc

我会在不同的条件下测量几个周期(例如不同的温度但相同的风/方向),绘制它们然后看看你是否可以看到模式的哪些部分发生了变化。如果您知道采样率并将其绘制出来,将会有所帮助。你说这是最快的,但我想你正在计算时钟滴答声或其他东西 - 或者你如何确定秒数?

编辑:

如何绘制?我在想象一张方格纸和一支铅笔 :-) 至于一个程序,我唯一的(简短的)经验是使用 gnuplot。为此,您必须根据间隔创建坐标列表,因此:

1 0.006
0 0.002
1 0.005
0 0.001

可能会变成:

x,     y
0.0,   1
0.006, 1
0.006, 0
0.008, 0
0.008, 1
0.013, 1
0.013, 0
0.014, 0

etc

我的猜测是,在安装和学习使用 gnuplot 并创建坐标所需的时间里,您可以在纸上绘制数据并找出代码。但对我来说,时钟频率是关键......(抱歉继续说下去;-)

于 2012-11-27T20:31:13.897 回答