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...

回一下上面各個大大的問題一下..
我所要擷取的字串是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
大大您說的方法是這樣嗎..
可是改這樣就一直出現錯誤耶@@
cloud
13
看來您會錯意了,或許是我表達能力不好...哪只是給您意會用的而非整個套入您的程式
我要表達的是您的資料可以一筆一筆累積起來,等到判斷條件出現了才整筆輸出
若要套入您的程式可參考下圖...
幾項注意要點 1.等到判斷條件出現了才整筆輸出 2.Wrie / Close 的vi須在迴圈外 ,Read在迴圈內,如此才可一直輸出而不會止出現一筆資料

謝謝大大..
我今天借到7.0的LABVIEW了...不過要明天才可以去試..
明天我試了再告訴您情狀...謝謝^^
cloud
16
一來一往好累ㄡ! 。不知您自己是否能多TRY幾次,因為唯有如此自己功力才會提升...。
目前有幾件事情需澄清
此時while loop迴圈輸出是XXXX XXXX8個ASCII的HEX碼(=4個字元)則表示回圈輸出是正確的,此時只要修改你原本後端的FOR LOOP內的程式即可。可簡單的改成如下即可:
此時ARRAY有四個欄位分別為XX XX XX XX四個2碼的ASCII HEX碼,看您要第幾碼直接取出即可。
若真的還不行請您將修改後完整的程式上PO。我再CHECK 看看
謝謝大大..原來是我自己擷取錯了字元了..
經過修改以經可以了..
我現在只要改我一次要幾筆資料就讀幾筆..
這樣不是不給它一個迴圈就可以了呢..不過我用了迴圈它卻一直讀不停...
真的很謝謝這位大大的幫忙..謝謝^^