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

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

Ještě mě napadlo, (zatím vše zkouším přes terminál Hercules 3-2-8 ) nemůže tu diakritiku ořezávat ten teminál?

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

#17 Příspěvek od termit256 »

Terminal by mel prijmout co posilas, dej si zobrazeni v hexu a uvidis. Ale pokud jsou tam jen ty otazniky, tak to dela spis VB. Misto znaku s bajtovou hodnotou nad 127 posila otazniky. Tim prekodovanim pred vysilanim bys to mel odstranit a mel by to posilat v kodove strance napsane v tom prikazu (cestina je 1250). Az ti bude terminal zobrazovat misto diakritiky nejake nesmysly, pak bude treba nastavit v nem jen prislusne kodovani ve kterem to posilas, ale pokud jsou tam jen otazniky, tak to nejspis vubec neodchazi.

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

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

Tak dík, měl jsi pravdu. chtělo to překodovat ve VB. nějak se mi to nedařilo, ale zašel jsem na 3 na zahrádku a už to běhá :lol:
Teď mě čeká opačný postup, příjem na com port. Tam mi to zatím nedělá vůbec nic :roll:

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

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

Tak díky uživateli termit256 mi odesílání funguje i s diakritikou:
tady je kód:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim DATA As String = "zkušební data"
Dim com As IO.Ports.SerialPort =
My.Computer.Ports.OpenSerialPort("com4")
com.Encoding = System.Text.Encoding.GetEncoding(1250)
com.WriteLine(DATA)
com.Close()
End Sub


ale už druhý den se potím nad příjmem a zatím stále nic :evil:
mám tento kód :

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim DATA As String
Dim com As IO.Ports.SerialPort =
My.Computer.Ports.OpenSerialPort("com4")
com.ReadTimeout = 3000
DATA = com.ReadLine()
TextBox1.Text = (DATA)
End Sub

Poradí někdo, kde dělám chybu?

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

#20 Příspěvek od termit256 »

Ta ukazka kodu co jsem dal na predchozi stranku slouzi k prijmu dat pres com 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

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

K čemu prosím slouží tato instrukce z toho tebou udaného příkladu?
returnStr &= Incoming & vbCrLf

Jinak ani takto mi to nechodí.
Prostě do TextBoxu se nic nevypíše.

Problém bude asi v com.ReadLine , protože, když použiju com.ReadByte tak to nějaký nesmysl aspoň do textboxu vypíše.
Naposledy upravil(a) scorpions-cz dne 26 kvě 2021, 17:00, celkem upraveno 1 x.

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

#22 Příspěvek od termit256 »

Tohle jen pripoji prijaty text (Incoming) k vystupu (returnStr) a odradkuje.
Po hw strance to mas v poradku? (v nejakem terminalu se data prijimaji?)
Ten kod jsem nepsal ja, je to nejaka ukazka cteni z portu od microsoftu, tak by to snad melo fungovat.

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#23 Příspěvek od FHonza »

Abys mohl číst data pomocí metody ReadLine, tak musí být data ukončena řetězcem, který je nastaven v NewLine. Standardně je to "Line Feed", ASCII hodnota 0x0A.

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

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

Asi máš pravdu, protože když dám ReadByte a zruším odřádkování, tak se mi to vypíše v DEC tvaru Odešlu AHOJ PANE a textboxu mám 657279743280657869
můžeš mi prosím poradit jak to nastavit, Teprve se s VB učím a moje anglina není nejlepší Já maturoval ještě z ruštiny :evil:

tady je kód:

Dim returnStr As String = ""
Dim com1 As IO.Ports.SerialPort = Nothing
Try
com1 = My.Computer.Ports.OpenSerialPort("COM4", 9600)
com1.ReadTimeout = 10000
Do
Dim Incoming As String = com1.ReadByte()
If Incoming Is Nothing Then
Exit Do
Else
returnStr &= Incoming
TextBox1.Text = (returnStr)

End If
Loop
Catch ex As TimeoutException
returnStr = "KONEC."

Finally
If com1 IsNot Nothing Then com1.Close()
End Try


Jako terminál používám Hercules 3.2.8 Mám dva převodníky USB/UART propojený křížem a mám je zasunutý ve dvou USB na PC.

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

#25 Příspěvek od termit256 »

Kdyz to budes chtit cist po jednom znaku pouzij misto ReadByte ReadChar

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#26 Příspěvek od FHonza »

scorpions-cz píše: můžeš mi prosím poradit jak to nastavit
Teď nevím co chceš nastavit. Jako znak to čti metodou ReadChar jak píše termit256.
Jestli chceš nastavit ukončovací znak přenosu, tak

Kód: Vybrat vše

...
com1.ReadTimeout = 10000
com1.NewLIne = "!"
...
Místo toho vykřičníku dej Tvůj ukončovací znak.

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

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

No já to potřebuju přečíst jako text. Odešlu AHOJ PANE a do text boxu se mi vypíše AHOJ PANE. S tím bojuju :oops:

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

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

Tak s tím com1.NewLIne = "!" to funguje. Pro pokusy dobrý, tam ten ukončovací znak můžu dát, ale jak to udělám např. při komunikaci s GSM modulem, který na různé dotazy odpovídá bez toho konkrétního ukončovacího znaku?

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

#29 Příspěvek od termit256 »

Nevim co mas za gsm modul, ale co si matne vzpominam, odpovedi v prikazovem rezimu byly ukoncovany CR LF (odentrovanim) coz si nastavis misto toho vykricniku nebo co tam mas ted.
com1.NewLine = vbCrLf
Naposledy upravil(a) termit256 dne 26 kvě 2021, 23:22, celkem upraveno 1 x.

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

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

Dík. Na GSM teprve čekám, neb ten co mi přišel minule byl KO. Dočetl jsem se, že příkazy do modulu musí být ukončeny tím CR LF, ale že tím jsou ukončeny i odpovědi jsem netušil. Až modul přijde budu zkoušet.

Odpovědět

Zpět na „Software“