| |
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)
|
| |
| |
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)
|
| |
| |
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
|
| |
| |
& 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.
|
| |
Prikazujem 1 od skupno 1 strani |
|