Stránka 2 z 4

Napsal: 25 kvě 2021, 08:06
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?

Napsal: 25 kvě 2021, 08:44
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.

Napsal: 25 kvě 2021, 21:26
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:

Napsal: 26 kvě 2021, 13:23
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?

Napsal: 26 kvě 2021, 15:57
od termit256
Ta ukazka kodu co jsem dal na predchozi stranku slouzi k prijmu dat pres com port.

Napsal: 26 kvě 2021, 16:42
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.

Napsal: 26 kvě 2021, 16:59
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.

Napsal: 26 kvě 2021, 17:08
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.

Napsal: 26 kvě 2021, 17:30
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.

Napsal: 26 kvě 2021, 17:45
od termit256
Kdyz to budes chtit cist po jednom znaku pouzij misto ReadByte ReadChar

Napsal: 26 kvě 2021, 18:37
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.

Napsal: 26 kvě 2021, 19:55
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:

Napsal: 26 kvě 2021, 21:41
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?

Napsal: 26 kvě 2021, 22:56
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

Napsal: 26 kvě 2021, 23:20
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.