字串分離疑問

感謝版上各位解決了我上次的問題

儀器已經可以正常使用

這邊我針對labview的範例Basic Write and Read 進行了修改

簡化成只能讀取

讀取出來的是一個16位的字串(D15~D0)

D15為START WORD  D0為END WORD

不會顯現出來 所以畫面實際只會顯示D14~D1 共14碼的字串

![|399x257](upload://hv9ncW9ls1DfeaXLoT1cVxTpZxT.jpeg)

但若是我只想要擷取後面四碼(D4~D1)

例如上圖41550200000090

我希望出來的內容是00.90

就是除了後面四碼之外

在D2跟D3之間還要再加一個 .

作為小數點的辨別

我爬了一下文 分離字串方面

好像是要用Scan from string

但是我用了之後卻無法接線

翻過幾本書後也覺得沒講得很清楚

所以想問大家如何將字串分離

另外

我發現將我原本的字串接線給刪除後

卻無法重新連線

請問這是哪邊發生了問題?

如圖

![|380x212](upload://quc5ZHXHe30j3wa25y1A45TJvoS.jpeg)

 

 

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

 

煩請解惑一下

 

附上檔案~~

rs232.rar

 

你應該是接錯點了…剛剛用你的程式試了一下刪除在接上沒有問題!

好像看過妳的感覺

[QUOTE=mist0829]你應該是接錯點了...剛剛用你的程式試了一下刪除在接上沒有問題![/QUOTE]

感謝~~的確是我眼殘弄錯點了~~

[QUOTE=SCOTT7O]

好像看過妳的感覺

[/QUOTE]

 

恩~上次儀器字串讀取的問題就是sc大你幫我解決的!!

依之前SCOTT70說的,我寫了程式給你參考

Basic Serial Read.vi

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

感謝您的指教

這幾天試了幾下後

發現還是不行

反而是字串無法讀取出來

簡單說明一下

拉力計會送16個字碼(D15~D0)

但是D15和D0分別是Start Word 和End Word

所以其實實際上畫面顯現出來的只有14碼(D14~D1)

而我所要做的

便是擷取最後四碼(D4~D1)

看了一下你的程式

原諒我程度不高

不過大致上是了解到3個case structure

應該就是將  正負  單位  小數點 整合起來

不過offset那些設定我其實不太了解

另外最上層的concatenate strings

為什麼其中一個string是空白?

 

不知道是否有甚麼更直觀的元件

可以直接擷取D4~D1

感謝您的指教

首先必須先了解Start Word有存在String中嗎?用"\" Codes Display看.(圖1)

offset是說從哪個位置開始取字串,0表示從String最左邊(前面)的第1個位置開始,若Start Word有存在String中,則從D15開始.若Start Word不存在String中,則從D14開始那我提供的程式所有offset都要-1.

為什麼其中一個string是空白?這裡有寫錯應該是"f ",目的是要改變字串的形式,"%0.2f Kg"其中小數點後的數字表示小數點位數(D9),空白後面的是單位(D11&D12).(圖2)

若你只要固定取D4~D1且小數點2位可參考圖三,若Start Word不存在String中,就將offset改為10

Basic_Serial__Read[1].vi

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

![](upload://6EID9MOJGL11kX5awbsfG69Pjas.jpeg)

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

感謝指教

其實昨天晚上我已經試出來了

不過我用的是有點繞遠路的方法

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

 

 

下面那個是我原本弄得

我沒想到只要加個除100的運算就自動會有小數點了

變通不過來~~

所以只好自己加進去

缺點是萬一沒有收到字串 畫面還是會跑出. 跟 KG

DONWang大的才是最正統最簡潔的方法

感謝大家的幫忙