Kliknite tukaj, da si ogledate profil, kot ga vidijo drugi
 
Domov > Forum > Računalništvo

Visual Basic in SerialPort

 
 
29.2.2012, 16:31
Hello vsem! Spisal sem program, ki sorejema in pošilja podatk epreko rs232 (com) porta. Vse deluje lepo kot je treba. Težava se pojavi, ko želim preveriti ali je podatek, ki je prišel na com port npr. 12. Spremenljivka Rtext je tipa string. Program pred debuggingom ne javlja napak. Pri stavku " If Rtex = 12 .... " pa javi : Conversion from string "" to type 'Double' is not valid. Kakšna ideja?

Koda :
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
ReceivedText(SerialPort1.ReadExisting())
End Sub

Private Sub ReceivedText(ByVal [text] As String)
If Me.rtbReceived.InvokeRequired Then
Dim x As New SetTextCallback(AddressOf ReceivedText)
Me.Invoke(x, New Object() {(text)})
Else
Me.rtbReceived.Text &= [text]
End If
RText = (SerialPort1.ReadExisting())

If RText = 12 Then MsgBox("Test ... deluje!")

End Sub


spremenil: Matej V. (29.2.2012 ob 20.11.36)
 
 
 
29.2.2012, 17:20
Poizkusi narediti tako:

Private Sub ReceivedText(ByVal [text] As Double)
If Me.rtbReceived.InvokeRequired Then
Dim x As New SetTextCallback(AddressOf ReceivedText)
Me.Invoke(x, New Object() {(text)})
Else
Me.rtbReceived.Text &= [text]
End If
RText = (SerialPort1.ReadExisting())
If RText = 12 Then MsgBox("Test ... deluje!"
End Sub


Mislim, da bi moralo delovati.


spremenil: PowerZan (29.2.2012 ob 17.21.09)
 
 
 
29.2.2012, 17:56
Hvala za odgovor. Še vedno ne deluje. Napaka : Object of type 'System.Double' cannot be converted to type 'System.String'.

Pri vrstici : Me.Invoke(x, New Object() {(text)})

če popravim vrstico kode :
Me.rtbReceived.Text &= [text]

v

Me.rtbReceived.Text &= [text]

mi izpiše napako še preden poženem debugging.

Error 4 'amp' is not declared. It may be inaccessible due to its protection level. D:\VB test\Project1\WindowsApplication1\WindowsApplication1\Form1.vb 93 34 WindowsApplication1
 
 
 
1.3.2012, 0:08
& kar pusti pri miru. To je operator za združevanje stringov.

Praviš, da je problem v pogoju:
If RText = 12

V tem pogoju primerjaš Rtext, ki je tipa String in število. V tem primeru verjetno poskuša VB avtomatsko narediti konverzijo Rtext v številko, da bo potem lahko opravil primerjavo.

Vendar pa zgleda, da pri tebi Rtext ne vsebuje nobene vrednosti in je zato ne more pretvoriti v številko.
 
 
Prijava in registracija
 
 
 
Zmaga.com ponuja brezplačno in razumljivo učenje računalniških programov, vas na enkraten način spozna z različnimi svetovnimi jeziki, s podrobno obrazloženimi recepti prikaže čare kulinarike in vam prežene strahove pred domačimi opravili.
 
 
Poleg tega lahko prebirate poučne članke, ki so namenjene širjenju naše splošne razgledanosti ter preverite svoje znanje z priljubljenim in enostavnim sistemom za preverjanje znanja. Če med vsebinami, ki se dodajajo vsak dan, ne najdete želenega znanja, je za vaša vprašanja na voljo dobro obiskan forum, kjer lahko tudi aktivno sodelujete. V primeru, da bi radi svoje praktično znanje delili z ostalimi, pa to lahko storite preko preprostega vmesnika za dodajanje vsebin. Zmagajte z znanjem z Zmaga.com!