通过vb6.0绘制串口过来的数据的实时曲线,下边是一个例子
OptionExplicitDimDataFromComAsInteger'从串口读过来的实时值DimDataFromComLastAsInteger'上次的串口值Dim...
Option Explicit
Dim DataFromCom As Integer '从串口读过来的实时值
Dim DataFromComLast As Integer '上次的串口值
Dim TimeCount As Integer
Private Sub Form_Load()
PicScale Pic '调整图像框的坐标系
PicMidleLine Pic '在图像框中画一条中线
End Sub
Private Sub PicScale(picX As PictureBox) '调整图像框的坐标系
picX.Scale (0, picX.ScaleHeight)-(picX.ScaleWidth, -picX.ScaleHeight)
End Sub
Private Sub PicMidleLine(picX As PictureBox) '在图像框中画一条中线
picX.Line (0, 0)-(picX.ScaleWidth, 0), vbGreen '画出中线
End Sub
Private Sub DrawRealLine(picX As PictureBox, TimeCountX As Integer, DataFromComX As Integer, DataFromComLastX As Integer)
If TimeCountX - 1 > 0 Then
picX.Line ((TimeCountX - 1) * 10, DataFromComLastX)-(TimeCountX * 10, DataFromComX), vbWhite
End If
End Sub
Private Sub Timer1_Timer()
DataFromComLast = DataFromCom
Randomize
DataFromCom = 3000 * Rnd
TimeCount = TimeCount + 1
DrawRealLine Pic, TimeCount, DataFromCom, DataFromComLast '画出实时的曲线
End Sub
它是用3000 * Rnd模拟串口过来的数据,不知道怎么令MSComm的数据替换这个3000*Rnd,我把MSComm.Input给一个数组,然后数组再给 DataFromCom也不行。要么不出线,要不就是直线,修改proteus的数据也不行。
希望帮忙解答下,谢谢。 展开
Dim DataFromCom As Integer '从串口读过来的实时值
Dim DataFromComLast As Integer '上次的串口值
Dim TimeCount As Integer
Private Sub Form_Load()
PicScale Pic '调整图像框的坐标系
PicMidleLine Pic '在图像框中画一条中线
End Sub
Private Sub PicScale(picX As PictureBox) '调整图像框的坐标系
picX.Scale (0, picX.ScaleHeight)-(picX.ScaleWidth, -picX.ScaleHeight)
End Sub
Private Sub PicMidleLine(picX As PictureBox) '在图像框中画一条中线
picX.Line (0, 0)-(picX.ScaleWidth, 0), vbGreen '画出中线
End Sub
Private Sub DrawRealLine(picX As PictureBox, TimeCountX As Integer, DataFromComX As Integer, DataFromComLastX As Integer)
If TimeCountX - 1 > 0 Then
picX.Line ((TimeCountX - 1) * 10, DataFromComLastX)-(TimeCountX * 10, DataFromComX), vbWhite
End If
End Sub
Private Sub Timer1_Timer()
DataFromComLast = DataFromCom
Randomize
DataFromCom = 3000 * Rnd
TimeCount = TimeCount + 1
DrawRealLine Pic, TimeCount, DataFromCom, DataFromComLast '画出实时的曲线
End Sub
它是用3000 * Rnd模拟串口过来的数据,不知道怎么令MSComm的数据替换这个3000*Rnd,我把MSComm.Input给一个数组,然后数组再给 DataFromCom也不行。要么不出线,要不就是直线,修改proteus的数据也不行。
希望帮忙解答下,谢谢。 展开
3个回答
展开全部
1)删除定时器事件部分的所有程序。
2)如果使用mscomm一次接收一组数据(即用数组),那么要用循环按数组元素来画线。
3)如果使用mscomm一次接收一个数据,那么每次触发oncomm就调用画线过程来画线。
4)查检你oncomm事件里MSComm.Input返回的数据是否正确,使用二进制接收时,每个数据都是字节数据,因此每个数组元素值不会大于255,利用mscomm发送大于255的数需要组织协议,收到数据后进行数据解析,再用解析的数据画线。
2)如果使用mscomm一次接收一组数据(即用数组),那么要用循环按数组元素来画线。
3)如果使用mscomm一次接收一个数据,那么每次触发oncomm就调用画线过程来画线。
4)查检你oncomm事件里MSComm.Input返回的数据是否正确,使用二进制接收时,每个数据都是字节数据,因此每个数组元素值不会大于255,利用mscomm发送大于255的数需要组织协议,收到数据后进行数据解析,再用解析的数据画线。
追问
谢谢
那么如何将串口过来的实时数据通过vb6.0存入access呢?希望能够解答
追答
ADODC控件连接并操作ACCESS数据库就可以。
VB6 的ADODC连接并操作ACCESS数据库去网上搜一下有很多,我就不写了;也可以有用ADODB连接并操作ACCESS数据库,新手建议使用ADODC控件。
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询