Serial Port問題

0~5vdata acquisition.vi

請問一下,我現在已經可以很確定的從我的單晶片(PSoC)微電腦,當我轉動我的可變電阻時,可從我的微電腦送出0~255的數位資料。我是先將此數位資料送到我的電腦內的終端機去顯示,所以,可以很確定微電腦端可以正常的送出0~255的數位資料(當我轉動可變電阻時,可看到數位資料的變化於終端機上),為什麼,現在我又做一個介面,要顯示電壓值0~5伏於LabVIEW上。但為什麼都只能顯示0點多伏到1點多伏呢?都沒有辦法顯示0~5 伏呢?很確定是LabVIEW的問題。我除以51是因為數位資料從0~255,除以51後,電壓才會落在0~5伏。可是,為什麼都沒有辦法落在0~5伏特呢?Why?

看到你的程式,我直覺就是VISA READ輸出有問題....

VISA READ輸出是字串格式,來猜看看為什麼你顯示的結果為何是0點多到1點多

你的輸出經過![](upload://4xVrXIYL5mpLcmwPRk2ZhFlYEs.jpeg)這個元件,它是將字串(ASCII)轉成十或十六進制的值

做個簡單的實驗:

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

上圖中,透過中間那個元件,將string中所有的字串,一個個轉換成十進制數值的陣列

可以看到0~9的字串,轉換出來變成48~57....

所以可想而知為什麼你除以51之後只有0點多到1點多吧

所以,是不是就不要在經過string to byte的那個呢?直接就將它除以51呢?

可是,沒有辦法只接從read buffer(位於VISA read)那直接拉去除以51,會出現斷線。為什麼不行呢?現在我應該要怎麼接線,才可以呢?

不是這樣喔,我的意思是說

從我上篇的分析結果,我認為你從單晶送出來的資料是以ASCII格式送出來的

所以visa read得出來的會是0~9的ASCII格式

如果單晶送出來的是hex格式,則你原本的方法沒有問題

可是我已經很確定的是從我的VISA Read 的read buffer送出來的是0~255。,為什麼不能將它拿去除以51呢?如此才能得到電壓0~5v呢?

我還是不知道我真正出錯的原因在哪裏耶?還是很不清楚,很不懂?可以請會的人詳細的告訴我該怎麼做嗎?謝謝

(因為我有故意做個小實驗於read buffer輸出端將值送到記事本上顯示)

只要將read buffer讀到的ASCII格式 ,

再做個小程式轉成十進制格式 , 除以51就是你要的答案