字串擷取的問題

2004-10-21_191036_4225.vi各位大大..這是我自己寫的程式...主要是要來

經RS232來擷取字串資料...不過我有一個問題是...我所要擷取到的字串值要為

FF06 0000 0000 <== 0000的地方為變數..不一定就是0000

不過我在擷取時...字串的位置常會亂跑...可能跑成..

0000 FF06 0000 或 0600 0000 00FF   種種可能...

所以我將它定為前二碼為FF06才開始擷取在做事數值的動作...

可是這樣一來我有許多筆資料可能又這樣而沒有讀到...

請問要怎麼擷取才可以將所有的資料完整的擷取到呢...

對了..我所要擷取的儀器是KL-700這儀器...我問過廠商

它每秒所擷取的資料為25筆...請各位高手大大幫幫忙..謝謝^^

對了..我要把字串定在FF06 0000 0000

是因為我要取第3和第4組的碼轉成數值...所以我要固定這樣的位置...

它一個碼是兩位數...麻煩大大解答^^

你先找找其中是否有規則性存在。

比方說,有固定的檔頭、檔尾,
或者在所要擷取的資料裡或前後字元有特徵在,
然後依此再下去設計你的程式。

 

有...這我有問過廠商了...

啓始碼是FF...06是我所用的模組...後面4碼是我要擷取的數值..

正常值是FF06 0000 0000

所以我才要控製成這樣在做處理

這樣是否有辦法解決呢...麻煩大大幫忙解答

 

 

整理一下,從你所提供的資訊來看,
只要符合底下其中之一:

     1. FF06 開頭
     2. 以 FF 為頭、 06 為尾
     3. 以 06 為頭、FF 為尾

你要的資料就在裡頭。
不知道這樣對不對?

Airbolt38282.3578819444

以前我也有這困擾...(發現一次要讀固定長度的資料,其字元順序都會與上下筆混在一起)

不知有無更好方式,不過目前我的方式如下,不管一次的字元長度要多少都可以,只要有結束位元(以這CASE看來是起始位元,如果這樣輸出會是上一筆資料)。

用起來效果也還不錯(不過TIMEOUT時間需設依下符合自己的儀器及應用)

FYR...

![](upload://i1cWAkyJN6no0m3SZUWgu5Vil2P.jpeg)

請問cloud大大...

你說的方法是在開啓的字元那設嗎..

這儀器的讀取資料時間..

我今天自己試了...是1秒50筆資料

回一下上面各個大大的問題一下..

我所要擷取的字串是FF06 0000 0000

這是Hax display碼...二個數字為一個碼...而要這樣的排列是為了取碼作處理方便

這樣說不知道行不行..

還有謝謝上面那位大大教的方法...不過我一接上就不能執行了...是否可以麻煩大大都的完整一點..謝謝^^

理應可以的!...

因沒有設備,以模擬輸出(可變更FF06的位置)2004-10-25_090521_RS232test.vi

1.FF06於起始位元而非結束位元,若一次只輸出1筆(FF06 XXXX XXXX)就結束如此會得不到資料...。但若是連續資料(...FF06 XXXX XXXX FF06 XXXX XXXX...)則可得到上一筆的資料。

2.VISA CLOSE放的位置

若還有問題請將修改後的程式再上傳一次...

對不起因為我只有6.0I版的..所以不可以看...可否用圖片給我自己改正試試呢..

謝謝

2004-10-25_115153_62251.vi

大大您說的方法是這樣嗎..

可是改這樣就一直出現錯誤耶@@

看來您會錯意了,或許是我表達能力不好...哪只是給您意會用的而非整個套入您的程式

我要表達的是您的資料可以一筆一筆累積起來,等到判斷條件出現了才整筆輸出

若要套入您的程式可參考下圖...

幾項注意要點 1.等到判斷條件出現了才整筆輸出    2.Wrie / Close 的vi須在迴圈外 ,Read在迴圈內,如此才可一直輸出而不會止出現一筆資料

![](upload://gzSG4SPDYoLW0aGMAAxqpjlMFBK.jpeg)

 

謝謝大大..

我今天借到7.0的LABVIEW了...不過要明天才可以去試..

明天我試了再告訴您情狀...謝謝^^

 

樓上的大大..我試了您教我的方法了..

可是擷取到資料了..

不過好像不能完整的讀到我要的第四碼資料耶

請問是否有什麼好方法...可以只擷取到第四碼資料

謝謝

一來一往好累ㄡ! 。不知您自己是否能多TRY幾次,因為唯有如此自己功力才會提升...。

目前有幾件事情需澄清

此時while loop迴圈輸出是XXXX XXXX8個ASCII的HEX碼(=4個字元)則表示回圈輸出是正確的,此時只要修改你原本後端的FOR LOOP內的程式即可。可簡單的改成如下即可:

![](upload://65yc0i0WYMOajdK9r1d950vLpwT.jpeg)此時ARRAY有四個欄位分別為XX XX XX XX四個2碼的ASCII HEX碼,看您要第幾碼直接取出即可。

若真的還不行請您將修改後完整的程式上PO。我再CHECK 看看

 

 

謝謝大大..原來是我自己擷取錯了字元了..

經過修改以經可以了..

我現在只要改我一次要幾筆資料就讀幾筆..

這樣不是不給它一個迴圈就可以了呢..不過我用了迴圈它卻一直讀不停...

真的很謝謝這位大大的幫忙..謝謝^^