1樓:匿名使用者
如果你每次收到的位元組數能確定(比如每條發過來的命令位元組數固定,或者最前一兩個位元組表示後面的位元組數),就按照位元組數接收。然後直接把收到的字串給顯示控制元件,不使用移位暫存器或反饋節點當然就不顯示之前的字元了。
別加「等待」之類的函式(手錶圖示哪個),串列埠讀取函式會在讀到指定數量的字元或到達超時之後返回讀到的字串。用它就能控制迴圈。也就是說來一條命令或者到達一次超時之後,自動迴圈一次,字串顯示控制元件裡面的值就是剛收到的字串了。
如下圖:
串列埠的引數我就使用預設的「9600,8,n,1」了,超時值我設定的是100ms,為了讓程式執行時不會因為預設的10000ms超時顯得程式卡死。但是幾乎每100毫秒就會有一個超時錯誤並返回空字串,所以內層的錯誤分支什麼也沒做,在超時的時候不用空字串替換原有的顯示值。
如果字元數不確定,你還不想保留之前的值,那就不好辦了。很有可能會造成一句話分兩次顯示的情況,某次顯示前面一部分,後面一次顯示後一部分。
看下圖吧:
為減少上述情況的出現,我把超時值改為了1000ms,後面的條件分支根據讀到的位元組數區分。0的時候不更新顯示控制元件,其它值的時候顯示剛剛收到的字串。因為你不要和前面的拼湊,所以有可能是不完整的。
其實也可以讓字串顯示控制元件自動滾動,或者字串長度達到一定長度時或點清空按鈕時,清空顯示值。可以用反饋節點/移位暫存器/區域性變數/值屬性等。
下圖的做法最簡單,因為用的是輸入控制元件,可以隨便刪除之前的內容。
2樓:tn瓶邪
使用移位暫存器功能。在迴圈框左邊框或右邊框上點右鍵,新增移位暫存器,將採集到的資料連到右邊的暫存器埠,再從外界連到左邊的暫存器入口,裡面再加一個函式將暫存器入口的資料與新鮮採集到的資料合併,然後引到輸出控制元件上。
從需實現一個類似這樣的功能: display = old data + new data
在Labview中,如何將接收到的資料存入陣列或者儲存起來
小丁創業 方法和詳細的操作步驟如下 1 第一步,開啟前面板,從控制面板中選擇 陣列矩陣 庫中的 陣列 選項,然後將其放置在前面板上,見下圖,轉到下面的步驟。2 第二步,執行完上面的操作之後,開啟後面板並找到相應的陣列,然後在右鍵選單中單擊 屬性 選項,見下圖,轉到下面的步驟。3 第三步,執行完上面的...
VC 串列埠通訊中怎麼將串列埠收到的資料儲存到檔案中
在oncomm事件中作如下處理 long cscrdlg oncommunicate wparam ch,lparam port catch cfileexception,e end catch if error 0 messagebox 檔案已儲存!bj2948a提示 mb iconinforma...
c裡通過串列埠收到的資料會轉換為16進位制字串
數值是沒有必要分幾進位制的,它在記憶體中就是二進位制儲存的。只是為了方便人們檢視,可以轉為n進位制的格式顯示在文字框中進行顯示的。所以1 buf 就不要轉為字串了,直接以二進位制格式存入資料庫。下次也是以二進位制的形式取出 就是byte 2 richtextbox1 要顯示二進位制也好,16進位制也...