[VB6 ] 經由RS232作即時畫圖
※ [本文轉錄自 Visual_Basic 看板 #1DMtbi90 ]
作者: paulgoodke (^^) 看板: Visual_Basic
標題: [VB6 ] 經由RS232作即時畫圖
時間: Wed Feb 16 15:14:49 2011
小弟目前想利用RS232作即時性的畫圖(將資料即時畫在VB介面中)
可是一直跑不出來想問問看大家程式上是否有問題
下面是我的完整程式:
Option Explicit
Dim ReceiveStr, ReceiveData!(21)
Dim TheFileName As String
Private Sub Command1_Click()
txtReceive.Text = ""
Graph1.Cls
End Sub
--------------------儲存程式-----------
Private Sub Command2_Click() '將接收的資料存檔
CommonDialog1.Filter = "Text File (*.txt)|*.txt" '設定存檔的類型
CommonDialog1.ShowSave '秀出另存檔案視窗.
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
TheFileName = CommonDialog1.FileName '記錄檔名
If TheFileName <> "" Then
Open TheFileName For Output As #1 '打開檔案來輸出資料
Print #1, txtReceive.Text '利用Print敘述把資料寫出去
Close #1
End If
TheFileName = ""
ErrHandler: ' 使用者按了「取消」按鈕
Exit Sub
End Sub
---------------------RS232------------------
Private Sub Command4_Click()
MSComm1.Output = Trim(txtSend.Text)
End Sub
Private Sub Timer1_Timer()
If MSComm1.InBufferCount > 0 Then
txtReceive.Text = txtReceive.Text + Trim(MSComm1.Input)
End If
End Sub
Private Sub CM_CONNECT_Click()
Timer1.Enabled = Not Timer1.Enabled
End Sub
--------------------畫圖--------------------
Private Sub Form_Load()
MSComm1.PortOpen = True
Graph1.Scale (10, 10)-(1000, -10)
Graph1.ForeColor = RGB(0, 0, 255)
End Sub
Private Sub MSComm1_OnComm()
Dim buf$, StrPos%, i%, j%, TempSng!
Dim X!(20), Y!(20)
Select Case MSComm1.CommEvent ' 藉著取代底下每一個 case 陳述式來處理每個事件與錯誤事件
Case comEvCD ' CD 線的狀態發生變化.
Case comEvCTS ' CTS 線的狀態發生變化.
Case comEvDSR ' DSR 線的狀態發生變化.
Case comEvRing ' Ring Indicator 變化.
Case comEvEOF
txtReceive.Text = txtReceive.Text + Trim(MSComm1.Input)
Case comEvReceive ' 收到 RThreshold # of
buf = Trim(MSComm1.Input)
ReceiveStr = ReceiveStr + buf
If InStr(1, ReceiveStr, "!") < 1 Then
Exit Sub
Else
i = 0
Graph1.Cls
Do
StrPos = InStr(1, ReceiveStr, ",")
If StrPos = 0 Then Exit Do
ReceiveData(i) = Val(Left(ReceiveStr, StrPos - 1))
ReceiveStr = Right(ReceiveStr, Len(ReceiveStr)-InStr(1, ReceiveStr,
","))
X(i) = i
Y(i) = ReceiveData(i)
If i = 0 Then
Graph1.PSet (X(i), Y(i))
Else
Graph1.Line -(X(i), Y(i))
End If
i = i + 1
Loop
ReceiveStr = ""
End If
Case comEvSend ' 傳輸暫存區有 Sthreshold 個字元 '
End Select
End Sub
------------------------------------------------------------------
我是利用PictureBox來畫!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.39.138
※ 編輯: paulgoodke 來自: 114.39.177.80 (02/17 00:01)
※ paulgoodke:轉錄至看板 ask 02/17 01:42
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.39.177.80
Programming 近期熱門文章
PTT數位生活區 即時熱門文章