Seriak ve VB 2017

Pavel Hudecek edizon na seznam.cz
Pátek Červen 9 00:11:36 CEST 2017


Zajímavé. Dnes to writeln funguje:-)

Ale mám jiný problém:
Přidal jsem tam timer, který každých 300 ms vypíše porty do listboxu seznam 
portů s poznámkou, zda jsou otevřené:

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles 
Timer1.Tick
    Dim port As String
    Dim ports As String() = SerialPort.GetPortNames()
    Dim sp3 As New SerialPort

    lb1.Items.Clear()
    For Each port In ports
        sp3.PortName = port
        If sp3.IsOpen Then
            port = port + " op"
        Else
            port = port + " cl"
        End If
        lb1.Items.Add(port)
    Next port
    sp3.Dispose()
End Sub

Výsledek je, že to u všech píše cl, i když COM5 je od spuštění programu 
otevřen. Stejně tak když COM4 otevřu terminálem, taky je stále cl.

Z MSDN jsem pochopil, že otevření cizím programem to neindikuje, takže druhý 
problém je vlastně v pořádku. Ale proč to nehlásí otevření COM5, když ho má 
otevřen on sám?

(tedy ne že by na tom záleželo, když to oficiálně neumí poznat otevření 
jiným programem, tak je to na houby a lepší bude try-open (což už jsem 
vyzkoušel a funguje dle očekávání), ale i tak by mě zajímalo, co je špatně s 
tím isopen)

PH

-----Původní zpráva----- 
From: Pavel Hudecek
Nepomohlo. Žádná změna.

Samozřejmě že binární čtení pak udělám jinak, ale zatím mi na hraní stačí
tohle.

-----Původní zpráva----- 
From: Ladislav Vaiz

Dne 7.6.2017 v 12:15 Pavel Hudecek napsal(a):
> Ale zajímavé je, že ve výstupu není na konci žádné crlf nezávisle na tom, 
> zda použiju write, nebo writeline. Když do odesílaného textboxu udělám 
> enter, tak se na výstupu projeví.
>

Nepomohlo by sp1.NewLine = vbCr & vbLf ?
Jestli chcete komunikovat binárně, tak ReadExisting nebude nejlepší
volba, protože vrací string a ne pole bytů. 



Další informace o konferenci Hw-list