NI產品與技術 討論區

取消
顯示結果 
搜尋替代 
您的意思是: 

visa

已解決!
前往解決方案

各位高手因為我的設備所下的指令是16進制例如8100(H)這樣輸入但是有一項指令需要將前面所輸入的指令做XOR,而因為LABVIEW要做XOR要轉成數字才能,所以我將81轉成10進制應該是129然後再轉成16進制但是每次轉出來都錯如下圖是我在哪裡設定錯誤,我也用大大的方法可是顯示不出數字,我在字串顯示的地方式設定16進制(H)來表示 請問這地方有哪裡出錯嗎,不好意思麻煩你了

16.JPG

我之前有用過也是直接用"Normal Display"但是經過VISA之後他所讀取到的是3831這樣設備還是不能動作,要收到81才能動作所以我當初財會使用Hex Display,但是因為所有字串都要在經過xor,用Hex Display轉成數字之後再轉成字串又不是我要的了,我真的想好久也是想不出來 請問有什麼辦法嗎,下圖就是我ㄧ開始下"Hex Display",這樣可以動作但是改用"Normal Display"就不能了請ˇ問有什麼辦法嗎

QQQ.JPG

0 積分
1 條訊息(共 13 條)
8,843 檢視

不曉得有沒有誤解你的意思,你是要先將16進位的數值轉成十進位的字串,再從十進位的字串轉成16進位的數值

 

首先你要先對第一個數值的property內設定成hexadecimal(如圖),再使用"Number to Decimal String"將16進位的數值轉成10進位的字串

 

接下來使用"Decimal String to Number"將10進位的字串轉成數值,最後要再將數值的property設成hexadecimal

下載全部
0 積分
2 條訊息(共 13 條)
8,838 檢視
您好
我現在想透過RS232來對設備做控制,而設備所能接受的指令是16進制
所以我在輸入指令的地方將DISPLAY設定成HEX(如下圖)
1.JPG
而在經過VISA所收到的訊息也是81000FFFF0ADA03001700006401010121這樣舍被是可以動作的
2.JPG
但是因為我現在要計算所有指令的crc,但是依上面這樣也不能直接做crc所以我將他們轉成數字再轉成字串(hex)但是這樣例如我是先將81(hex)及00(hex)做xor結果經該還是81但是卻是30請問這是什麼問題因為這樣設備沒有辦法動作假如將81的display改成normal diplay這樣是可以算出81但是visa卻不是收到8100這樣我也辦法改請問這樣要怎麼辦
3.JPG
0 積分
3 條訊息(共 13 條)
8,806 檢視

應該是要將全部的String都改成Normal String,如果說要輸出8100(String 2),輸入值(String)就應該要是8100吧,輸入81應該不太可能輸出8100吧~

0 積分
4 條訊息(共 13 條)
8,783 檢視

可以在更清楚的表達你現在的輸入跟輸出值是甚麼嗎?

0 積分
5 條訊息(共 13 條)
8,780 檢視

是這樣的因為我現在要控制的設備是透過RS232來做傳輸而格式是16進制,所以我輸入16進制字串,如下圖DISPLAY我選的是HEX,然後左邊接受指令是設備透過VISA所接收到的指令8100FFFF0ADA0300006401010120也是我說入的指令,格式就是hex display這樣設備是可以動作的

1.JPG

然後我將hex display改成normal display之後衣樣也輸入8100FFFF0ADA0300006401010但從下圖中接收指令地方就不是8100FFFF0ADA03000064010101這樣設備就沒辦法動作

2.JPG

之後因為8100FFFF0ADA03000064010101要做xor所以必須要先轉成數值,下圖中我display是選normal,在此模式下如下圖81xor 00會是81 這樣是正確的

3.JPG

現在將diaplay改成hex經過xor 但卻不是80

4.JPG

所以我現在遇到的問題是因為經過visa後設備所收到的指令要8100FFFF0ADA03000064010101,在未做xor時顯示方面以hex來輸入將還是會收到8100FFFF0ADA03000064010101,但是要是做xor一樣以hex來輸入收到卻不是8100FFFF0ADA03000064010101假如說輸入改以normal來輸入這樣是可以計算出80xor 00沒錯但是輸入到visa80會變成3830這樣,這樣設備還是不能動作.這問題我困擾很久了請問有什麼辦法嗎

 

0 積分
6 條訊息(共 13 條)
8,775 檢視

你可以先將HEX的字串轉成BYTE的陣列(String To Byte Array),再放入xor做運算,最後再用Byte Array To String轉回HEX的字串,如附圖,這樣應該可以達成你要的

 

試試看吧~~~

下載全部
0 積分
7 條訊息(共 13 條)
8,764 檢視

您好:

因為我的指令當中有一部份是根據設備的號碼來做輸入例如我的設備是23號這樣輸入之後轉成16進制是17

但因為我用的display是hex所以我遇到一個問題是輸出會變成3137而不是17設備就會無法辨識

 

17.JPG

0 積分
8 條訊息(共 13 條)
8,743 檢視
解決方案
由主題作者所接受 skyqoo

幫你找到了一篇類似這個問題的解決方法,裡面有個程式你應該可以用的到:

http://labviewpro.net/forum_post_detail.php?fid=1&post=2386

 

先用Number To Hexadecimal String把數值轉成16進位的字串,在使用上面那篇karatow所分享的程式轉成HEX顯示的字串

 

希望對你有幫助~

 


下載全部
9 條訊息(共 13 條)
8,737 檢視

感謝您 ,我困擾好久的問題終於有辦法解了

不好意思可以在請教你嗎

LABVIEW似乎是不是沒有想下圖一樣的物件可以先設定好選單功能

w.JPG

0 積分
10 條訊息(共 13 條)
8,727 檢視