Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 4 odgovora
  • 3.000 pregleda

Najnovija ↓

Visual Basic serijska komunikacija/ Pomoc 30.04.2008. u 14:53 · pre 225 meseci
izmenjeno 1 put, poslednji put Aleksandar Ružičić 30.04.2008. u 15:30
  1. Aleksandar Ružičić30.04.2008. u 15:30zapis iz teksta poruke
#1
Code:

Private Sub Form_Load()

MSComm1.CommPort = 1
MSComm1.Settings = "1200,N,8,1"
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeBinary
MSComm1.PortOpen = True
MSComm1.RThreshold = 1

End Sub

Private Sub MSComm1_OnComm()
Dim Temperature As Variant

If MSComm1.CommEvent = comEvReceive Then
Temperature = MSComm1.Input
Text1.Text = Text1.Text + CStr(Temperature)
Text2.Text = Text2.Text + Format$(Now, "hh:mm:ss dd/mm/yy")
End If

End Sub


Kada stavim RTreshold 2 tada mi ispisuje neke karaktere u text1 (? itd) ali tada
mi se CommEvent desava svakih 10 s sto mi ne odgovara posto mi se podatak salje svakih 5 s
Kada stavim da mi je RTreshold 1 kao sto bi trebao jer saljem jednobajtni podatak
tada mi se ne pojavljuje nista u text1
Re: Visual Basic serijska komunikacija/ Pomoc 06.05.2008. u 00:49 · pre 225 meseci
izmenjeno 1 put, poslednji put stefanpn 06.05.2008. u 13:02
  1. stefanpn06.05.2008. u 13:02zapis iz teksta poruke
#3
Dobijas neke sljg!#@@ karaktere zato sto port otvaras binarno, pa ti verovatno i salje ASCII vrednosti a ne binarne vrednosti.
Promeni:

Text1.Text = Text1.Text + CStr(Temperature)

U:

Text1.Text = Text1.Text + Chr$(Temperature)
Re: Visual Basic serijska komunikacija/ Pomoc 15.05.2008. u 21:11 · pre 224 meseca #4
Nisam baš najbolje razumeo. Jer ti i šalješ i primaš nešto sa serijskog porta?

RTreshold mislim da utiče samo kada šalješ podatak na serijski port, da bi ti uvek poslao sve a ne da šalje po 1 ili 2 bajta možeš njegovu vrednost postaviti na:
MSComm1.RThreshold = len(text3.text)
stim što ti je text3 tekst boks iz koga šalješ podatke

Code:

Private Sub Form_Load()

MSComm1.CommPort = 1
MSComm1.Settings = "1200,N,8,1"
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeBinary
MSComm1.PortOpen = True
MSComm1.RThreshold = 1

End Sub

Private Sub MSComm1_OnComm()
Dim Temperature As Variant

If MSComm1.CommEvent = comEvReceive Then
Temperature = MSComm1.Input
Text1.Text = Text1.Text + CStr(Temperature)
Text2.Text = Text2.Text + Format$(Now, "hh:mm:ss dd/mm/yy")
End If

End Sub


Ovo bi trebalo da ti je sve OK, stim što ne znam zašta će ti:
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeBinary

Ja bih ovo tvoje napisao na sledeći način:

Code:

Private Sub Form_Load()

MSComm1.CommPort = 1
MSComm1.Settings = "1200,N,8,1"
MSComm1.PortOpen = True

End Sub

Private Sub MSComm1_OnComm()
Dim Temperature As Variant

Select Case MSCOmm1.CommEvent
Case comEvReceive
          Temperature = MSComm1.Input
          Text1.Text = Text1.Text + CStr(Temperature)
          Text2.Text = Text2.Text + Format$(Now, "hh:mm:ss dd/mm/yy")
end Select
End If

End Sub
Potpis
--
http://www.linkedin.com/in/maxogm
Re: Visual Basic serijska komunikacija/ Pomoc 16.05.2008. u 10:33 · pre 224 meseca #5
Ono shto Stefan reche je tachno, otvarash port u binarnom modu, i dobijash ASCII vrednosti... RThreshold vrednost govori portu da okine Comm event na svaki broj primljenih karaktera... Ako je RThreshold = 2, Comm event tje biti pozivan svaki put kad input buffer na portu ima 2 karaktera... Ako tjesh da primash svaki bajt, stavi ovu vrednost na 1... Mozhesh i da pokushash sa InputLen = 1... Tako tjesh dobijati samo 1 bajt, koliko i treba... Stavi i SThreshold = 1, tako tje da shalje za svaki bajt koji se nadje u output buffer-u...
Potpis
- SKRati link - JaZaKraljevo.rs -

"I have never let my schooling interfere with my education." - Mark Twain
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme