USB 與 RS-232 對接 讀值(更新版)

前輩們大家好~

今天給老師驗收 他臨時要改功能.
我改不出來 上來向大家討教.

我現在要做讀寫功能合併.
也就是說 把COM的寫和讀寫在一起.
常態之下 處於接收資料.
寫的方面 則是 用按鈕控制.
當需要傳資料的時候 按下按鈕 就傳資料.

下面是小弟試著寫出來的程式.

COM PORT-1.vi

下面是錯誤訊息.



只要我一執行程式.
過一陣子 就出現 請大家指點我一下.
謝謝~

這是原始程式.

2009-09-30_113835_ATRQ8BSRX00M(2).vi

我想請教的是.


桃紅色 框起來的地方.
是怎麼做出來的?
謝謝~

COM_PORT.vi

我用同一台電腦做讀與寫的動作,若我選擇不寫入,則我的read物件的byte count就要設成0,因為若沒設成0,而設成任一數值,則因為沒有寫入的動作,而又要叫read去接收資料,自然就會因接收不到資料而產生您所出現的error code

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

 

![](upload://3Za0HKAmmqn152jcHplJm2iSVDz.jpeg)[QUOTE=IN0819]這是原始程式.
2009-09-30_113835_ATRQ8BSRX00M(2).vi

我想請教的是.
![](upload://vHHluw6OLNsPK3bIsAvZOkO4kH3.jpeg)

桃紅色 框起來的地方.
是怎麼做出來的?
謝謝~
[/QUOTE]

將case 切到true , 再把滑鼠對到"亮燈"按右鍵.....如下圖

 

[QUOTE=LG]

COM_PORT.vi

我用同一台電腦做讀與寫的動作,若我選擇不寫入,則我的read物件的byte count就要設成0,因為若沒設成0,而設成任一數值,則因為沒有寫入的動作,而又要叫read去接收資料,自然就會因接收不到資料而產生您所出現的error code

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

 

[/QUOTE]

前輩~
抱歉~
你的版本是9.0.
我的事8.5.
我沒辦法開啟.

您第一次po上來的程式,若您跑燈來看的話,它會先跑flat裡面的物件,所以當visa在read資料時,因為接收不到資料,就會出現timeout(您所出現的error code);至於您左下角的while loop因為若沒有按下"stop",它是不會離開while loop的,所以您用case來決定要由write buffer或write buffer2送資料,也就不會執行,等到您按下"stop"後,即使把要傳的資料丟出來了,但接收的程式碼(就是整個flat內的物件)也早就做完了.....

但是,即使您再啟動程式前,就先將"stop"按下,它也還是會出現error, 因為"資料流的觀念",程式仍會先執行flat內的程序,才會輪到做write的動作.....

您把接線的順序稍微對調一下.....

下面附上我直接用您的程式修改的流程順序,但您所使用的物件,我並沒有全部用上,另外,我測試的結果,delay time設成200,可能不太夠。我做的實驗是從500開始,程式執行完立刻再執行一次,一直做,修正將delay time改成700才"稍微"好一點,

COM_PORT-2 Folder.zip.............用您的程式修改的(lv8.5)

COM_PORT Folder.zip..............用昨天的範例修改的(lv8.5)

[QUOTE=LG]

您第一次po上來的程式,若您跑燈來看的話,它會先跑flat裡面的物件,所以當visa在read資料時,因為接收不到資料,就會出現timeout(您所出現的error code);至於您左下角的while loop因為若沒有按下"stop",它是不會離開while loop的,所以您用case來決定要由write buffer或write buffer2送資料,也就不會執行,等到您按下"stop"後,即使把要傳的資料丟出來了,但接收的程式碼(就是整個flat內的物件)也早就做完了…

但是,即使您再啟動程式前,就先將"stop"按下,它也還是會出現error, 因為"資料流的觀念",程式仍會先執行flat內的程序,才會輪到做write的動作.....

您把接線的順序稍微對調一下.....

下面附上我直接用您的程式修改的流程順序,但您所使用的物件,我並沒有全部用上,另外,我測試的結果,delay time設成200,可能不太夠。我做的實驗是從500開始,程式執行完立刻再執行一次,一直做,修正將delay time改成700才"稍微"好一點,

COM_PORT-2 Folder.zip.............用您的程式修改的(lv8.5)

COM_PORT Folder.zip..............用昨天的範例修改的(lv8.5)

[/QUOTE]

前輩你好~
我現在是用下面的程式去改.
因為 下面的程式結構我比較懂.
COM_PORT.vi
但是~ 執行以後 我發現幾點問題.
我不知道該怎麼去修改.

第一 我需要我的PORT 處於讀的狀態 不管有沒有資料要寫出 我都要能隨時讀取外不給的資料.
但是~ 現在的程式 如果我沒有寫入 就不能讀取.

第二 我的讀取 被寫入限制.
我寫出幾個BYTE 他才讓我讀幾個BYTE.

您看看,我寫了註解在程式碼裡面..

COM_PORT Folder.zip

[QUOTE=LG]

您看看,我寫了註解在程式碼裡面…

COM_PORT Folder.zip

[/QUOTE]

前輩~
不知道出了什麼問題.
我只要一點選擇COM PORT的地方.
LabVIEW就會當掉耶.

[QUOTE=LG]

您看看,我寫了註解在程式碼裡面…

COM_PORT Folder.zip

[/QUOTE]

一點選擇COM PORT.
就會"沒有回應".
![](upload://iLI8eZh1QD5dYHOBiIuKnqeoCGf.jpeg)

![](upload://4squRDsgNzYCsfAGYEtP1jRlUs1.jpeg)

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

COM_PORT Folder.zip

[QUOTE=LG]

您看看,我寫了註解在程式碼裡面…

COM_PORT Folder.zip

[/QUOTE]

前輩~
寫出的地方.
有辦法像這個範例一樣?
只要一輸出完.
按鈕就 回到原本的狀態嗎?
2009-09-30_113835_ATRQ8BSRX00M(2).vi

讀取的地方...
好像有蠻大的問題.
因為程式是一直持續執行的.
但是輸入如果的時間點 如果不是在他讀取的時候.
資料就會不見 也就不會顯示在螢幕上了.
有辦法等有資料輸入以後 在往後跑嗎?



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

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

COM_PORT Folder.zip

[QUOTE=LG]

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

COM_PORT Folder.zip

[/QUOTE]

前輩~
謝謝你喔~
雖然功能我改出來了.
我繼續專研一下.

有辦法像這個範例一樣?
只要一輸出完.
按鈕就 回到原本的狀態嗎?
2009-09-30_113835_ATRQ8BSRX00M(2).vi

讀取的地方...
好像有蠻大的問題.
因為程式是一直持續執行的.
但是輸入如果的時間點 如果不是在他讀取的時候.
資料就會不見 也就不會顯示在螢幕上了.
有辦法等有資料輸入以後 在往後跑嗎?

COM_PORT.vi

 

[QUOTE=SCOTT7O]

有辦法像這個範例一樣?
只要一輸出完.
按鈕就 回到原本的狀態嗎?
2009-09-30_113835_ATRQ8BSRX00M(2).vi

讀取的地方…
好像有蠻大的問題.
因為程式是一直持續執行的.
但是輸入如果的時間點 如果不是在他讀取的時候.
資料就會不見 也就不會顯示在螢幕上了.
有辦法等有資料輸入以後 在往後跑嗎?

COM_PORT.vi

 

[/QUOTE]

前輩~
抱歉喔.
你的是8.6的版本.
我的是8.5.
我沒辦法看.

 幫您轉

2009-09-30_113835_ATRQ8BSRX00M2 Folder.zip

COM_PORT Folder.zip

前輩~
我已經 成功的 CREATE 出 LOCAL VARIABLE了.
但是 要怎麼拉到FALSE的選項去用.
因為CREATE 出 LOCAL VARIABLE 他是出現在TRUE裡.