Hola:
Sr. JC40: Saludos.
Si hay un poco de decepción, frustración y más. Acostarme a las 1:00 Am levantarme a las 4:00 Am por casi un més. Para darme cuenta que estoy
en el principio de todo y el avance fué poco. Es de lo peor. Bueno si me viera como estoy desbaratado con ojeras y sin dinero por dedicarme tanto a
algo que es solo para aprender y enseñar a otros, no tiene ningun otro fin.
Pero que más da. Debo hacer otras cosas, soy cabezadura. Si continuo sé que lo terminaré, pero al paso que voy quedaré como un cadaver. Que lo aproveche otro,
de verdad, tengo hasta taquicardia por la desesperación de terminarlo. Quiero estar en PAZ conmigo mismo es lo más sano.

;_____________________________________________________________________________________________________________
Ok. Por otra parte les dejo aquí el código en FreeBasic de un programa que envía un array(arreglo) a la HP50g via serial y los 3 programas de
la HP50g que: Solicita los Datos, los Recibe, y los Grafica o Plotea como ustedes lo vean mejor.
Se que el gráfico generado en la HP50g es un tanto diferente al que se envió del programa , pero sirve para demostrar la idea principal que era:
generar con un programa la forma de una onda, transmitirla por rs232 y graficarla.
Aquí le coloco un par fotos:
http://bp1.blogger.com/_MjmgxJ7iCEk/Rq9OBt_iuqI/AAAAAAAAACQ/6ivmosygeGI/s1600-h/IMAG0001.JPGhttp://bp3.blogger.com/_MjmgxJ7iCEk/Rq9kDN_iurI/AAAAAAAAACc/j1maGVoAeHU/s1600-h/IMAG0003.JPGAquí les coloco el código del programa en FreeBasic, me imagino que alguien más experimentado podrá pasarlo a VB.
Para VB creo que solo le haría falta hacer el FORM un par de botones y alguna otra cosilla más.
'============================================================
Dim ampl As Single 'Vpeak
Dim sample_rate As Integer 'samples/sec
Dim samples As Integer 'samples for entire waveform
Dim f_start As Integer 'start frequency in Hertz
Dim f_stop As Integer 'stop frequency in Hertz
Dim f1 As Single 'normalized f_start
Dim f2 As Single 'normalized f_stop
Dim pi As Double
Dim sweeptime As Single 'sweep time in seconds (Recorrido)
Dim a As Double 'intermediate calculation
Dim b As Double 'intermediate calculation
Dim index As Integer 'sample counter
Dim signal(index) As Double 'voltage for output to DAC driver
Dim key1 As String
'''-Set variables
pi = 3.1415927
f_start = 1000
f_stop = 5000
ampl = 1 '1 'for simplicity
sweeptime = 3 '0 '60 '3 'seconds
'''-Need enough samples at high end to get a reasonable sine wave
' assume 10 samples/cycle at f_stop
sample_rate = 1000 'f_stop * 10
'''-Multiply sample rate by sweep time to get total number of samples
samples = sample_rate * sweeptime
'''-Normalize start and stop frequencies
f1 = f_start / sample_rate
f2 = f_stop / sample_rate
'''-Calculate intermediate variables
a = 2 * pi * (f2 - f1) / samples
b = 2 * pi * f1
'''-Opens the Port COM1. Waits number 1 from HP50g.
'''-The parentheses are necessary.
Open Com ("COM1:9600,N,8,1,CD0,CS0,DS0,OP0") For Random As #1
Color 12
Print "Wait number '1' to begin"
key1 = Input$(1,#1)
If key1 = "1" Then
'''-Generate array of voltages that form a swept sine wave
For index = 0 To 10 '128 'samples - 1 '
signal(index) = ampl * Sin(a * index ^ 2 / 2 + b * index)
Print #1,signal(index), '<<-Print all array
Next index
Close #1
Else
End If
'''-To see the mathematical formula. (In graphics mode).
'''-They don't work together.
'screen 12
'xmax = 600 : ymax = 200
'For index = 1 To 128 'samples - 1 '
'signall = ymax/2- ampl * Sin(a * index ^ 2 / 2 + b * index /ymax)_
' *ymax/4 :color 10 'green color
'PSET (index,ymax+signall)
'Next index
'''-Add your code to send array signal(index) to your driver
'Print signal(index), '<<-Print all array here not worked
'PSET (index,ymax+signall)
Color 15
Print : Print : Print
Print "End of Program"
Close #1
Sleep
End
Aquí tienes el codigo para la HP50g creo que funciona con una HP48g y con la HP49g. Respeta el nombre de los programas.
Al ejecutar el programa PING el ejecuta los otros programas por sus nombres. (Solo escribo para el que no sepa mucho.)
@PING <-----Nombre del primer programa
« Erase DRAX 9600
BAUD 0 PARITY 5 @ serial port initialization
STIME "1" XMIT @ send an "1" To start sample
If
Then RCV @
Else ERRM @ Error
End
»
»
@=============================
@RCV <-----Nombre del Segundo programa
« BUFLEN DROP 1 256
For A 1 SRECV @ For Loop To receive 256 bytes of Data
If
Then NUM @ convert String To Int
Else ERRM @ Error
End
Next DEPTH LIST
DUP SIZE DRW @ process into list To Input To DRW
CLOSEIO @ Close serial port And clean Input buffer
»
@=============================
@DRW <-----Nombre del Tercer programa
« 4 - buf buflen
« 1 buflen
For I I 2 / RB @ process verticle coordinate
63 buf I Get
If
Then 128 @ If top half add 128
Else 0
End buf I 1 +
Get + 4 / - RB 2 @ fit To LCD Screen Field
LIST PIXON { # 0d # 0d }
PVIEW 2 @ turn on corresponding pixel
Step 7 FREEZE @ freeze display
»
»
Espero lo disfruten, si supieran lo amargo que ha sido todo esto. Parece sencillo, pero llegar hasta aquí uno solo, sin compañeros de estudio
sin un profesor, solo buscando y preguntando en los foros, es candela pura.
Se les aprecia mucho. Si hay otras cosas más, se las haré llegar.
Bye('_').
.