作者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
※ paulgoodke:转录至看板 Programming 02/17 01:44