Potřebuji po RS232 komunikovat s multimetrem. Nejdřív jsem si komunikaci vyzkoušel pomocí programu Terminal. Už tady jsem zjistil dost nepochopitelnou věc. Bez problémů multimetr nakonfiguruji, ale když dám :READ? (příkaz pro čtení z multimetru) nic se neděje. Když zavřu COM a znovu jej otevřu, dostanu první znak (znaménko +). Znovu zavřu a otevřu a dostanu druhý znak. A tak pořád dokola, až mám celý výsledek. Samozřejmě potřebuji ten výsledek dostat do programu k dalšímu zpracování. Ten program by měl být ve VisualBasicu 2005 Expres Edition. Směrem do multimetru je všechno bez problémů, ale to čtení dat se mi nedaří. Poslední kód mám takto
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Port1 As New System.IO.Ports.SerialPort()
Port1.PortName = "COM1"
Port1.BaudRate = 9600
Port1.DataBits = 8
Port1.StopBits = IO.Ports.StopBits.Two
Port1.Parity = IO.Ports.Parity.None
Port1.Handshake = IO.Ports.Handshake.None
Port1.ReadTimeout = 10000
Port1.DtrEnable = False
Port1.Open()
Port1.WriteLine(":READ?")
Port1.Close()
Port1.Open()
TextBox1.Text = Port1.ReadChar()
Port1.Close()
Port1.Dispose()
End Sub
Z reakce multimetru je jasné, že příkaz čtení do něj příjde. Jenže v požadovaném čase nepříjde žádná odpověď. Zkoušel jsem ten čas prodloužit, taky jsem to zkoušel bez toho opětovného zavření a otevření a místo ReadChar dát ReadByte a ReadLine. No a vrcholem je, že data v multimetru čekají. Pokud se připojím přes zmiňovaný Terminál, uvedeným postupem všechno přečtu. Napadá někoho jak z toho ven?
|