Visual basic 2010- com port

Software potřebné k práci s elektronikou

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

Visual basic 2010- com port

#1 Příspěvek od scorpions-cz »

Zdravím.
Začínám se trochu učit s VB. Nevím jak nastavit v programu com port pro odesílání a příjem dat.
Mám tento kód:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim data As String = TextBox1.Text
Using com11 As IO.Ports.SerialPort =
My.Computer.Ports.OpenSerialPort("com11")
com11.WriteLine(data)

End Using

End Sub

text z textového pole se mi po stisku tlačítka odešle na port 11.To funguje dobře. Zde je však COM11 pevně nastaven v kódu. Já bych však potřeboval ho umět měnit. tak abych si ho zvolil v jiné části programu a on se mi promítl do tohoto kódu.
Něco jako COM X a X bych přiřazoval různá čísla dle potřeby.
Poradí Někdo? :roll:

termit256
Příspěvky: 10071
Registrován: 06 pro 2007, 01:00

#2 Příspěvek od termit256 »

Kdyz si ten port nekde nadefinujes jako globalni promennou ti nefunguje?

Uživatelský avatar
mihal
Příspěvky: 1812
Registrován: 06 dub 2005, 02:00
Bydliště: Zilina

#3 Příspěvek od mihal »

Matne si spominam že musíš port aj otvoriť. A ten obsah "xxx" daj value toho kde to nastavuješ.

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#4 Příspěvek od scorpions-cz »

Právě s tou proměnnou mi to nejde, nebo dělám někde chybu.
mihal můžeš nastínit jak s tím value? Jinak v tom kódu se port otevře.
A ještě jedna věc, jde "nějak udělat" aby to odesílalo i znaky s diakritikou?

petrfilipi
Příspěvky: 2551
Registrován: 13 zář 2005, 02:00

#5 Příspěvek od petrfilipi »

Doporučuji ti prostudocat knihu Bergharda Kainky Využití rozhraní PC pod Windows.
Kniha je na ulozto.cz. Já používat to druhou polovinu knihy pro Delphi a vše funguje k mé naprosté spokojenosti.
PF

termit256
Příspěvky: 10071
Registrován: 06 pro 2007, 01:00

#6 Příspěvek od termit256 »

scorpions-cz píše:Právě s tou proměnnou mi to nejde, nebo dělám někde chybu.
Problem mas s globalni promennou obecne, nebo v tom ze ti to nefunguje s tim portem? Na prvni pohled nevidim nejaky zrejmy duvod proc by to nemelo fungovat, ale ve VB delam jen dost okrajove, takze ruku do ohne bych za to nedal :-) A nemam jak to ted vyzkouset.

Mrkni treba tady, resi neco podobneho. https://www.vbforums.com/showthread.php ... erial-port

Uživatelský avatar
rnbw
Příspěvky: 32312
Registrován: 21 bře 2006, 01:00
Bydliště: Bratislava

#7 Příspěvek od rnbw »

Vo Visual Basicu som v zivote nerobil, ale povedal by som podla syntaxe, ze miesas dokopy dve veci - nazov premennej/objektu:
scorpions-cz píše:Using com11 As IO.Ports.SerialPort =
a nazov portu:
My.Computer.Ports.OpenSerialPort("com11")
Takze namiesto nazvu premennej/objektu com11 daj len napr. com (ak to nie je nejake rezervovane slovo). Ten bude vzdy rovnaky.
A nazov portu "com11" je obycajny retazec. Namiesto neho tam mozes dat nazov tej globalnej premennej alebo niecoho ineho, do coho nastavis spravny port.

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#8 Příspěvek od scorpions-cz »

rnbw
To možná jo, ale pokud se neshoduje název portu s názvem objektu tak to nefunguje :roll:
oprava :lol: tak to by asi šlo, zkusím to.
Naposledy upravil(a) scorpions-cz dne 24 kvě 2021, 21:53, celkem upraveno 2 x.

Uživatelský avatar
mihal
Příspěvky: 1812
Registrován: 06 dub 2005, 02:00
Bydliště: Zilina

#9 Příspěvek od mihal »

No ja som používal tak 15rokov dozadu MSCOMM32.OCX a port sa nastavoval nejak MSComm1.CommPort = Combo1.Text kde bolo na výber číslo portu ale presný syntax už odvial čas. Matne si spomínam že som s tým tiež zápasil, mal som to dlho cez sériu If ale potom som niekde našiel správny syntax, no, bolo to dávno.

termit256
Příspěvky: 10071
Registrován: 06 pro 2007, 01:00

#10 Příspěvek od termit256 »

scorpions-cz píše:To možná jo, ale pokud se neshoduje název portu s názvem objektu tak to nefunguje :roll:
V teto ukazce kodu primo od M$ s tim zadny problem nemaji.

Public Function ReceiveSerialDataPort8() As String
' Receive strings from a serial port.
Dim returnStr As String = ""

Dim com1 As IO.Ports.SerialPort = Nothing
Try
com1 = My.Computer.Ports.OpenSerialPort("COM8", 9600, Parity.None, 8, StopBits.One)
com1.ReadTimeout = 10000
Do
Dim Incoming As String = com1.ReadLine()
If Incoming Is Nothing Then
Exit Do
Else
returnStr &= Incoming & vbCrLf
End If
Loop
Catch ex As TimeoutException
returnStr = "Error: Serial Port read timed out."
Finally
If com1 IsNot Nothing Then com1.Close()
End Try

Return returnStr
End Function

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#11 Příspěvek od scorpions-cz »

Dík.
Teď jsem to zkoušel podle rnbw a začalo to fungovat.

Dim X As String
X = "com6"
Dim data As String = TextBox1.Text
Using com As IO.Ports.SerialPort =
My.Computer.Ports.OpenSerialPort(X)
com.WriteLine(data)

Ještě jde nějak vyřešit ta diakritika? :lol:

termit256
Příspěvky: 10071
Registrován: 06 pro 2007, 01:00

#12 Příspěvek od termit256 »

Co ti to vlastne posila v hexu kdyz pouzijes diakritiku?
Sedi to podle tohoto?
Nebo tam mas nad 127 jen otazniky nebo nebo podobneho?
https://cs.wikipedia.org/wiki/Windows-1250

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#13 Příspěvek od scorpions-cz »

když použiju písmeno s diakritikou, tak je tam ?

termit256
Příspěvky: 10071
Registrován: 06 pro 2007, 01:00

#14 Příspěvek od termit256 »

Musis to prekodovat.
Zkus to treba pomoci muj_port.Encoding = System.Text.Encoding.GetEncoding(1250)

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#15 Příspěvek od scorpions-cz »

Dík. dneska už do toho čučet nebudu, zítra to zkusím a dám vědět.

Odpovědět

Zpět na „Software“