如何讓單晶片收到的是多字節(Byte)2進制碼呢?

各位先進,小弟在LabVIEW中要將2進制數據透過RS232傳送給單晶片,但是VISA的Write函數中的write buffer只能接受string類型,數據在Write中又是以ASCII碼形式發送的,所以單晶片收到的是數據的ASCII碼,求助各位先進,各位老師,如何寫LV的程式,才能讓單晶片收到的是數據的二進制碼呢?這問題困惑了小弟很久了,爬了不少書、也看了HELP中的example,均找不到答案,在此向先進們求助,求助

既然單晶片能收到數據,在晶片中加個ascii to binary的轉換不就好了嗎?

yao先進:

     “既然單晶片能收到數據,在晶片中加個ascii to binary的轉換不就好了嗎?”

     多謝指教,這當然也是曾經想過的一種方法,準備作為“不得以而為之”的最后方案。能夠直接傳送binary code當然最理想了,yao先進,幫忙想想辦法吧。

[QUOTE=pwch]

yao先進:

     “既然單晶片能收到數據,在晶片中加個ascii to binary的轉換不就好了嗎?”

     多謝指教,這當然也是曾經想過的一種方法,準備作為“不得以而為之”的最后方案。能夠直接傳送binary code當然最理想了,yao先進,幫忙想想辦法吧。

[/QUOTE]

請問pwch 單晶片中如何將ascii轉成binary

[QUOTE]

請問pwch 單晶片中如何將ascii轉成binary

[/QUOTE]

ctype.h中就有很多函式,不過通常是用toint()轉成Hex吧

雖然不能直接以binary輸入,但用hex也能達到同樣效果吧??

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

 

orange110839157.5491782407

這部份觀念我有點忘了,我現在沒有uP可以try
所以我希望可以討論一下,我也想再搞清楚一點

我假設你想傳一個41(hex)進入uP,那LabVIEW的VISA是以65(ascii)傳出
而uP收到是一個byte "A" 嗎?還是兩個bytes "6" "5"
而你希望看到的結果是什麼?

抱歉,可能我的提問觀念全都錯掉,不過我想透過討論的過程幫我回憶一下,以前還在學校我就可以自己try了

labview以normal輸入65的話,單晶片會收到分別'6'和'5'的2個byte資料(ascii)

如果是hex display輸入65的話,傳到單晶片就是0x65

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

如有錯誤請指正

 

[QUOTE=orange1108]

[QUOTE]

叫拜pwch 虫垂?[い?W?z盢ascii锣Θbinary

[/QUOTE]

ctype.hい碞Τ??OㄧΑ,ぃ筁硄盽琌ノtoint()锣ΘHex?汏/p>

瘤礛ぃ??钡?lbinary块????#12494;hex?僣~笷??鬺荷譁?汋?

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

先進,您好!

Hex是binary的縮寫形式,當然是一回事。

現在問題的關鍵是write節點的輸入只能是string

[/QUOTE]

orange1108:您好!

     下面是您的貼圖。現在的問題是:由于write節點只能輸入string,所以如您圖中的兩個“unsigned byte array”是無法與節點write相連的,否則會以“數據類型不同”而報錯。
![](upload://6AipuyNSXDFkyoII0rECE0KTKKF.jpeg)

yao先進:您好!  

為防止亂碼,下面貼的是您的原文:

“我假設你想傳一個41(hex)進入uP,那LabVIEW的VISA是以65(ascii)傳出
而uP收到是一個byte "A" 嗎?還是兩個bytes "6" "5"
而你希望看到的結果是什麼?”

答:進入LV中write節點的string“65”,單晶片收到的hex碼是“36H,35H”兩個bytes,

     進入LV中write節點的string“41”,單晶片收到的hex碼是“34H,31H”兩個bytes,

     進入LV中write節點的string“aB”,單晶片收到的hex碼是“61H,42H”兩個bytes。

而我希望我的hex碼“6541AB”,透過RS232后,單晶片收到的是hex碼“65H,41H,ABH”三個bytes。

不知我是否已表達清楚?

真是對不起....可能是我表達不好讓你誤會了

我那篇回覆是想跟你說"string control"這個元件的輸入方式

簡單的說,在"string control"按右鍵,選擇以"Hex Display"

然後請不要懷疑輸入"6541AB"....

單晶片就會收到0x65 0x41 0xAB三個bytes的資料了

 

小弟愚昧,有錯誤請指正

   {我那篇回覆是想跟你說"string control"這個元件的輸入方式

簡單的說,在"string control"按右鍵,選擇以"Hex Display"

然後請不要懷疑輸入"6541AB"....

單晶片就會收到0x65 0x41 0xAB三個bytes的資料了}

orange1108:

   ......這樣不行的,那個“string control”元件是無法和“write”元件相連的,

VISA中的“write”元件是透過RS232的必經之路,不透過它單晶片如何接受呢?

 

 

pwch:

這是您一開始的發言:

[QUOTE]各位先進,小弟在LabVIEW中要將2進制數據透過RS232傳送給單晶片,但是VISA的Write函數中的write buffer只能接受string類型,數據在Write中又是以ASCII碼形式發送的,所以單晶片收到的是數據的ASCII碼,求助各位先進,各位老師,如何寫LV的程式,才能讓單晶片收到的是數據的二進制碼呢?這問題困惑了小弟很久了,爬了不少書、也看了HELP中的example,均找不到答案,在此向先進們求助,求助[/QUOTE]

你已經說write buffer只能接受string類型....

但你現在又說“string control”元件是無法和“write”元件相連

小弟不太明白你的意思,但事實上不就是這樣嗎??![](upload://3yXYhSbpMVaLRCcD61FmdKTLHhd.jpeg)

orange1108:

謝謝你的指導,單晶片已能收到二進制形式的資料。

開始看了你第一次的貼圖,產生了誤解,請你見諒。直到見到你第二次貼圖才明白過來。

再次感謝你!