Kadangi mano HP loginis analizatorius neturi “pastovios” atminties, kiek užknisa kiekvieną kartą perkonfiguruoti visus nustatymus. Vienintelis būdas automatizuoti konfiguravimą- naudoti GPIB jungtį ir viską pumpuoti per ją. Pradžiai galvojau pasidaryti tą adapterį savo rankelėmis, bet ten reikia dviejų specialių mikroschemų, kurios kažkaip nepopuliarios. Konstruoti kažką diskretiško patingėjau. Nors ir pradėjau teorinį projektą ir susiradau visą softą jam (STM32F mikrokontroleriui). Ir dar softą perrašiau iš “arduino” į generic C. Tačiau galu gale nusprendžiau nusipirkti pramoninį variantą- National Instruments adapterį.

Atvykęs iš kinijos adapteris pareikalavo registracijos NI puslapiuose. Tačiau, kaip ne keista, NI pripažino jį originaliu ir visas softas pasileido. Tačiau softas visiškai netinkamas HP 1630A analizatoriui. Seniau, kai dar nebuvo visokių windows, ir net nebuvo DOS operacinės sistemos, tokie prietaisai valdydavosi iš BASIC programos. Todėl nutariau kiek pažaisti programuotojais. NI duoda draiverius ir biblioteką prietaiso valdymui (jis nepasimato kaip koks nors “generic” USB prietaisas). Todėl čia bus trumpa instrukcija man, kol neužmiršau kaip pradėti dirbti su National Instruments GPIB-USB-HS adapteriu.
Pirmiausia reikia prijungti bibliotekas prie projekto- references:

Ar reikia abiejų “reference” aš nežinau. Bet sudėjus abi, tikrai veikia.
Toliau reikia kogero “importuoti”:
Imports NationalInstruments.NI4882
Įrenginį “atidaryti”:
Private Sub OpenGPIB()
Dim board As Integer
Dim primary As Byte
Dim secondary As Byte
board = My.Settings.Board
primary = My.Settings.pAdr
secondary = My.Settings.sAdr
Try
dev = New Device(board, primary, secondary, My.Settings.TimeOut)
dev.DefaultBufferSize = 14000
dev.Reset()
status("GPIB Open")
Catch ex As Exception
status(ex.Message)
End Try
End Sub
Čia iš komentarų – buferis pagal nutylėjimą yra vienas kilobaitas. Jei prietaisas išspjauna daugiau informacijos nei telpą į buferį gali kilti problemos ir vargai. Dabar kai turim daug atminties, rekomenduoju buferį padaryti didesnį nei maksimalus galimas atsakymas iš prietaiso ir nereikės sukti kiaušų. Todėl buferį darom gal 10K ar daugiau. O štai timeout rašomas ne mikrosekundėmis, o kvailu kodavimu:
disabled
10 µs
30 µs
100 µs
300 µs
1 ms
3 ms
10 ms
30 ms
100 ms
300 ms
1 s
3 s
10 s
30 s
100 s
300 s
1000 s
čia tipo enum ar panašiai- 0 tai disabled, o 13 tai dešimt sekundžių.
Skaitymas ir rašymas:
Public Function QueryHP1630A(command As String) As String
Dim response As String
If dev Is Nothing Then
OpenGPIB()
End If
Try
dev.Write(command)
' Read response (this will block until termination or driver-defined timeout)
response = dev.ReadString()
status("OK")
Catch ex As Exception
response = ""
status(ex.Message)
End Try
Return response
End Function
Private Sub nuskaityti()
Dim a(3000) As Byte
If dev Is Nothing Then
OpenGPIB()
End If
Try
gpibstatus = dev.LastStatus
dev.Write(txtResource.Text + vbCr) 'komanda
a = dev.ReadByteArray 'baitų masyvo nuskaitymas
status("OK")
Catch ex As Exception
gpibstatus = dev.LastStatus
End Try
End Sub
Seniau kompiuteriai neskirdavo baitų nuo teksto. O dabar tai jau kiek kita kalba. Todėl, paprastas tekstines eilutes nuskaitom su “readstring”, o jei tame tekste paklius koks nors “netekstinis” baitas, tai skaitymas nutraukiamas. Todėl gal geriau skaityti kaip “readbytearray”. Ir tik vėliau konvertuoti baitus į raides.
Per porą vakarų gavosi tokie griaučiai:

O toliau bėda- HP1630A nepasako, kurioje vietoje stovi kursorius. Todėl valdymas per nuotolį netenka prasmės. Dar blogiau- kai žiūrim į nuskaitytus duomenis, kur gražūs grafikėliai- niekas nepersikelia į tekstinį buferį- waveform paišomos grafiniu režimu. Todėl reikia parašyti pačių duomenų perkėlimą ir analizę. O čia jau prasideda nesąmonės- kažkaip instrukcijos pradeda kiek nesutapti su realia geležimi. Gal galima paeksperimentuoti su “grafinio printerio” emuliacija? Tokia opcija numatyta. Kaip ir kasetinio magnetofono ir diskasukio pajungimas. Pasirodo galima įkelti disasemblerį į šitą loginį analizatorių.
Todėl pasilikau dvi užduotis- konfiguracijos saugojimas ir duomenų eksportas. Gal gausis, o gal ir ne. Viskas priklauso nuo pavasario greičio. Šiandien mačiau kaip špokai (varnėnai) vaikščiojo po kiemą. Iš kitos pusės aš turiu HP ploterį su šiuo interfeisu, kurio galimybės didesnės nei Rotringo. Žymiau įdomiau paišyti kringelius su ploteriu nei gilintis į loginio analizatoriaus vidurius.
































































