hola a todos, estoy trabajando en una aplicacion(en visual 6.0) que me permita visualizar los datos de un ECG en tiempo real, los datos para esta aplicacion se alimentan desde un microcontrolador que realiza la conversion analogica-digital y que a la vez permite enviar los datos por el puerto serie, la aplicacion la realice modificando partes de otros codigos relacionados a la adquisicion de datos (codigo visual basic 6.0) y en primer instancia logre que se graficaran hasta llegar al extremo derecho de un picturebox que es donde visualizo la señal del ECG con el inconveniente de que no podia visualizar los trazos continuamente, ahora con un poco mas de tiempo me dedique a revisar el codigo y buscando en la web encontre informacion con lo cual me dispuse a realizar que la aplicacion graficara la señal de forma continua, pero me presenta un problema, la grafica una vez que alcanza el limite del picturebox definido por el scalewidth sigue su curso graficando los datos reemplazandolos de derecha a izquierda pero con un efecto de intermitencia que es algo molesto porque no permite examinar los trazos, he tratado de resolver modificando el codigo varias veces pero sin mejores resultados, la ayuda que les pido es para que me guien un poco en la forma que se puede resolver este problema
o si tienen algun tipo de informacion que me puedan proporcionar para examinarla y ver que cambios debo realizarle al codigo
de antemano agradezco la colaboracion que me puedan brindar.
aqui les dejo el codigo con el que actualmente estoy realizando pruebas
Option Explicit
Dim cadena As String, valor As String
Dim x As Integer, y As Integer, z As Integer
Dim i As Integer, j As Integer
Dim cx As Integer, cy As Integer
Dim c As Integer, k As Integer
Dim buffer(1000) As Long
Private Sub Command1_Click()
PB1.Cls
On_Off
TM1.Enabled = True
TM1.Interval = 1
x = -1: y = 0: i = 0: j = -1
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
SP1.CommPort = 3
SP1.PortOpen = True
SP1.Settings = "9600,n,8,1"
SP1.InputLen = 0
SP1.RThreshold = 1
With PB1
.Height = 3000
.Width = 8000
.ScaleHeight = 60
.ScaleWidth = 100
.BackColor = vbBlack
End With
PB1.Scale (0, 30)-(100, -30)
TM1.Enabled = False
TM2.Enabled = False
TM2.Interval = 1
cx = PB1.ScaleWidth
cy = PB1.ScaleHeight
End Sub
Function On_Off()
If Command1.Caption = "&Iniciar ECG" Then
If SP1.PortOpen = True Then
Command1.Caption = "&Detener ECG"
Else
SP1.PortOpen = True
Command1.Caption = "&Detener ECG"
End If
Else
If Command1.Caption = "&Detener ECG" Then
SP1.PortOpen = False
Command1.Caption = "&Iniciar ECG"
End If
End If
End Function
Private Sub TM1_Timer()
If Not j > (cx - 1) Then
If SP1.PortOpen = True Then
valor = SP1.Input
c = InStr(valor, Chr(13))
If c = 0 Then
cadena = cadena & valor
Else
cadena = cadena & Left(valor, c - 1)
z = Val(cadena)
cadena = ""
buffer(i + 1) = z
PB1.Line (x, buffer(i))-(j, buffer(i + 1)), vbGreen
x = j
i = i + 1
j = j + 1
End If
Else
i = 0
PB1.Line (x, buffer(i))-(j, buffer(i + 1)), vbGreen
x = j
i = i + 1
j = j + 1
End If
Else
TM1.Enabled = False
TM2.Enabled = True
End If
End Sub
Private Sub TM2_Timer()
PB1.Cls
x = -1
j = -1
If SP1.PortOpen = True Then
valor = SP1.Input
c = InStr(valor, Chr(13))
If c = 0 Then
cadena = cadena & valor
Else
cadena = cadena & Left(valor, c - 1)
z = Val(cadena)
buffer(cx + 1) = z
cadena = ""
'For k = 0 To 1000
'DoEvents
'Next k
For i = 0 To cx
PB1.Line (x, buffer(i))-(j, buffer(i + 1)), vbGreen
x = j
j = j + 1
buffer(i) = buffer(i + 1)
DoEvents
Next i
End If
Else
End If
End Sub
saludes cordiales