2012-04-24 52 views
1

I started a thread in the NI support forums about my project,但我目前的問題比在labview中編寫驅動程序更廣泛。我有一臺風速計,它使用USB UART橋接器 與計算機連接。我向Extech詢問任何類型的文檔並僅接收下面的通信協議。爲Extech HD300風速計編寫驅動程序

Serial Communication Protocol

我遇到了這方面的工作的幾個問題,所以我把包含在風速計和使用portmon嗅出命令要和,這裏的地方事情變得更糟糕的軟件。爲了儘可能簡化問題,我只採用環境溫度讀數。

(這是上面的協議文檔的「上傳協議」)

AA 61 64 6A 67 08 40 00 40 00 01 00 00 C6 41 00 00 00 00 00 3C 1C C6 9A 19 99 42 00 3C 1C C6 00 00 
AA 61 64 6A 67 08 40 10 40 00 01 7D 0C C6 41 00 00 00 00 00 3C 1C C6 39 1F 99 42 00 3C 1C C6 00 00 
AA 61 64 6A 67 08 40 10 40 00 01 00 00 C6 41 00 00 00 00 00 3C 1C C6 9A 19 99 42 00 3C 1C C6 00 00 
AA 61 64 6A 67 08 40 10 40 00 01 83 F3 C5 41 00 00 00 00 00 3C 1C C6 FB 13 99 42 00 3C 1C C6 00 00 

這是稍微截斷,但是:當我用製造商的軟件連接到instument下被抓獲什麼portmon重要的部分應該在那裏。當時的環境溫度讀取約76.5F。因此,根據該文件,這應該是在10-13th位,所以我相信:

0000c641 
7d0cc641 
0000c641 
83f3c541 

要記錄的環境溫度下,但我不知道如何閱讀。我認爲沒有理由爲什麼從開爾文或攝氏度轉換是必要的,因爲在F1中似乎有一點點。另外值得注意的是,我得到的值完全不同於任何記錄在幾個字段中的值,所以無論我讀錯了什麼,或者文檔都是錯誤的。我一直無法從製造商那裏得到關於協議的更多答案,所以我不知道爲什麼我的數據只有一半類似於預期的數據。

+0

文檔不可讀,很難提供幫助。消息的長度是多少?不要忘記,2個十六進制符號是1個字節,1個十六進制符號是2個位(我認爲你在這裏混淆的東西) – CharlesB 2012-04-24 20:10:56

+0

消息是長度爲50.我只設法捕捉它的大部分,因爲portmon的工作方式,但只是試圖讀取環境溫度,我認爲這就夠了。我很高興其他人發現這些文檔很糟糕,這讓我感到很沮喪。 – 2012-04-24 20:15:10

+0

這不是一個文檔,它是一個便箋。你知道郵件的字節順序嗎?第一個字節是AA,好的,但爲什麼第二個不是0x55,因爲它應該是?你確定你有正確的信息嗎? – CharlesB 2012-04-24 20:20:13

回答

2

41C60000作爲IEEE754標準的32位單精度浮點數轉換爲24.75。這看起來像一個攝氏溫度值將映射到76.55 F.

對於數據的其餘部分你會:

41C60000 = 24.7500000000000000000 
41C60C7D = 24.7560977935791015625 
41C5F383 = 24.7439022064208984375 

我認爲挑選出的存儲方式和格式爲您服務。

+0

哦,我的,你是我的英雄!我正在尋找轉換是如何工作的,以便我可以在我的labview程序中實現它。 – 2012-05-15 12:30:14

+0

@GaryZ對排序數據進行排序(如上所示)後,轉換如下:http://en.wikipedia。org/wiki/Single-precision_floating-point_format#IEEE_754_single-precision_binary_floating-point_format:_binary32 – 2012-05-15 14:12:41

+0

@GaryZ實際上,你可以保存轉換的混亂,並使用直接轉換http://zone.ni.com/reference/en- XX/help/371361E-01/glang/type_cast/ – 2012-05-15 14:14:29