當前位置:編程學習大全網 - 編程語言 - 如何將單片機輸出的交流信號用vb的程序讀出來(串口),並用這個信號繪制成曲線圖?

如何將單片機輸出的交流信號用vb的程序讀出來(串口),並用這個信號繪制成曲線圖?

先接收

Buffer = MSComm1.Input ' 接收壹個二進制數據

Arr(0) = AscB(Buffer) '存入到二進制數組數組中

Receive_Count_Byte = Receive_Count_Byte + 1

'定義該數據變量為DataFromCom。

DataFromCom = Arr(0) '接收的數據

'按單片機的信號進行處理得到對應的數據

......

實時曲線反映的就是該數據。 打開VB6.0中文版,新建壹個項目和窗體,修改窗體的屬性,將“Heigh”修改為:8000,“Width”修改為在窗體中放如壹個PictureBox控件。然後重新定義PictureBox控件的壹些基本屬性,在VB中選中PictureBox控件,直接在它的屬性框中,修改壹些屬性參數。“名稱”改為Pic。 “AutoRedraw”改為:True。“BackColor”改為:&H00004000&(墨綠色背景顏色)。”Heigh”改為:5000。“Width”改為:8000。

然後要重新定義PictureBox控件的坐標系。圖像框的默認坐標系,是從左上角開始的,不符合我們的畫線要求。修改坐標系的目的是讓曲線從圖像框的左邊正中間,開始畫線。修改圖像框的坐標系,這裏定義壹個過程PicScale(),代碼如下:

Private Sub PicScale(picX As PictureBox)

picX.Scale (0, PicX.ScaleHeight)-(picX.ScaleWidth, -PicX.ScaleHeight)

End Sub

壹般的實時曲線顯示的時候在屏幕的正中間有壹條基準線,這裏也要畫出這條基準線,用壹個過程PicMidleLine()來實現,代碼如下:

picX.Line (0, 0)-(picX.ScaleWidth, 0), vbGreen '畫出中線

End Sub

要畫壹條實時曲線,坐標軸的設定很重要,在這裏把X軸設定為時間軸,Y軸設定為數據軸。對應X軸我們定義壹個時間變量TimeCount,TimeCount會隨著時間逐漸遞增,每次遞增,對應著壹個從串口讀過來的數據DataFromCom,這樣圖像框中的(x,y)坐標點實際上就對應著(TimeCount,DataFromCom)如果只是當TimeCount發生變化時就在圖像框上畫壹個點,就只需調用VB中的畫像素的函數point(x,y),這裏x,y為所畫的點的坐標。單這樣畫出來的是壹個個不連續的點。我們想要的是實時的連續的曲線,所以要調用VB中的畫線的函數line(x1,y1)-(x2,y2),這裏(x1,y1)(x2,y2)為所要畫的線的起點和終點的坐標。只要把上次串口讀過來的數據(這裏把它定義為變量DataFromComLast)和現在串口讀過來的數據(DataFromCom)和TimeCount相對應,調用line(x1,y1)-(x2,y2)函數就可以在圖像框中畫出實時的曲線了。把它寫成壹個過程如下面的代碼:

Private Sub DrawRealLine(picX As PictureBox, TimeCountX As Integer, DataFromComX As Integer, DataFromComLastX As Integer)

If TimeCountX - 1 > 0 Then

picX.Line (TimeCountX - 1, DataFromComLastX)-(TimeCountX, DataFromComX), vbWhite

End If

End Sub

有了三個過程就可以在圖像框中畫出壹條實時的曲線了。

  • 上一篇:廣州數控的G指令和M指令誰知道。知道的 話給 我 發 過來謝謝
  • 下一篇:snkrs搶鞋機器人有用嗎 snkrs搶鞋流程
  • copyright 2024編程學習大全網