We're a community of 1076K IT Pros here for help, advice, solutions, professional growth and fun. Join us!
1,075,985 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Start New Discussion Reply to this Discussion

help : temp data and mscomm.input

hi all,

i'm very - very newbie here, i need a help, i try to connect arduino with vb6, i want to display data from arduino to vb6, lets say the data is : "the distance : XX m", the problem is when i want to put data via mscomm.input to temp, the value of temp isn't equal with mscomm.input (the script is : temp = mscomm.input), i know this when i try to debugging, like in this pic...why is this happen and...any solution, please?

thanx

vb-facebook

Attachments vb-facebook.jpg 70.88KB
3
Contributors
23
Replies
1 Week
Discussion Span
4 Months Ago
Last Updated
25
Views
Question
Answered
sarman.boyslo
Light Poster
28 posts since Nov 2012
Reputation Points: 0
Solved Threads: 0
Skill Endorsements: 0

Those pics don't show enough. Copy and paste your code in here, and we'll have a better idea.

tinstaafl
Nearly a Posting Virtuoso
1,321 posts since Jun 2010
Reputation Points: 355
Solved Threads: 228
Skill Endorsements: 14

thanx for the reply,

like i wrote in post before, when i try to run (F5) there's an error 13, data missmatch, then i'm trying to debug, the error occurs on the " jarak = Mid(strFilter(I), 6, 3) ", when i move my mouse over ".Input" the data was similar with the data from arduino, but when i move to "strInput", the data isn't complete...
this is my code :

With MSComm1
    Select Case .CommEvent
    Case comEvReceive
        strInput = .Input
        temp = temp + strInput
    End Select
        Text1.Text = Text1.Text & temp
        Text1.SelStart = Len(Text1.Text)
        jarak = Mid((Text1.Text), 6, 3)

        strHsl = Split((Text1.Text), vbCrLf)
           For I = 0 To UBound(strHsl)
              hsl = strHsl(I)
         Next

        strFilter = Filter(strHsl, "cm", True, vbTextCompare)
          For I = 0 To UBound(strFilter)
              angka = Now & " - " & strFilter(I) & vbCrLf
             jarak = Mid(strFilter(I), 6, 3)
        Next


        txtView = txtView & angka
        nilai.Caption = ((jarak / 13) * 100)
        ProgressBar1.Value = ((jarak / 13) * 100)

End With
End Sub

thanx before and sorry for my bad english...

sarman.boyslo
Light Poster
28 posts since Nov 2012
Reputation Points: 0
Solved Threads: 0
Skill Endorsements: 0

The only thing I can think of is, if jakar is a number, it will automatically cast a string if the string is numbers only. anything else except for a period and it will thorw an exception

tinstaafl
Nearly a Posting Virtuoso
1,321 posts since Jun 2010
Reputation Points: 355
Solved Threads: 228
Skill Endorsements: 14

sorry for my noob...

actually, i just want to take the number from arduino's data trough serial port, arduino sent like this : "Tinggi : xx cm", it sends every 0,5 second, my code just like this :

strInput = .Input

when i debug and move my cursor the data in strInput doesn't same with .Input, so, for the next code it cause error like i said, .Input contain data "Tinggi : xx cm Tinggi : xx cm Tinggi : xx cm... ", but strInputonly contain "Ting", not completely, any suggestion please?

sarman.boyslo
Light Poster
28 posts since Nov 2012
Reputation Points: 0
Solved Threads: 0
Skill Endorsements: 0

Data mismatch error refers to a mismatch of a value returned i.e. if you told the code to return an integer (numbers) but the data returned is a string (letters etc.), the error will be fired.

What did you declare "jarak" as, an integer or a string?

AndreRet
Industrious Poster
4,706 posts since Jan 2008
Reputation Points: 391
Solved Threads: 481
Skill Endorsements: 20

It looks to me that strInput should be concatenated not just assigned. Try this : strInput = strInput & .Input. See if that helps.

tinstaafl
Nearly a Posting Virtuoso
1,321 posts since Jun 2010
Reputation Points: 355
Solved Threads: 228
Skill Endorsements: 14

thanx for reply...

@AndreRet : i declared "jarak" as integer, .Input and strInput as string, is it true? i don't know exactly, i'm very very noob here, i think it caused by mismatch given-received data in strInput = .Input (please see my pic in 1st post), may be you have suggestion for me then...

@tinstaafl : i've tried your suggestion, but still not working, strInput = strInput & .Input, strInput has different contain data with strInput & .Input, just like before.

sarman.boyslo
Light Poster
28 posts since Nov 2012
Reputation Points: 0
Solved Threads: 0
Skill Endorsements: 0

What is the value of the string to be returned - "the distance : 35 m"?

This will raise an error because jarak should be a number. Remove the "Dim jarak As Integer" and just do "Dim jarak" for testing purposes. If this works, we know where your error is raised.

AndreRet
Industrious Poster
4,706 posts since Jan 2008
Reputation Points: 391
Solved Threads: 481
Skill Endorsements: 20

Also, make sure that you have the Mid sections correctly, including spaces to return just the distance number... "jarak = Mid((Text1.Text), 6, 3)"

AndreRet
Industrious Poster
4,706 posts since Jan 2008
Reputation Points: 391
Solved Threads: 481
Skill Endorsements: 20

thanx for reply...

@AndreRet : i've just tried your suggestion, remove the "Dim jarak As Integer" and just do "Dim jarak", and my unlucky may be, it still don't work.
for the mid function, i'm sure it's correct, it just little bit modified in arduino data that want to sent to vb, if you've seen the pict, the data in the code strInput = .Input is different,

.Input ---> "Tinggi : xx cm Tinggi : xx cm Tinggi : xx cm..."
strInput---> "Ting"

why it can happen even there is "=" sign

sarman.boyslo
Light Poster
28 posts since Nov 2012
Reputation Points: 0
Solved Threads: 0
Skill Endorsements: 0

One thing to remember with the Mid method the index is 1 based.

tinstaafl
Nearly a Posting Virtuoso
1,321 posts since Jun 2010
Reputation Points: 355
Solved Threads: 228
Skill Endorsements: 14

I think I caught your problem. If I look at your photo, you are setting mid correctly to return from 6. You do however ask to read 3 spaces and not 2 to cover for the 14 of 14 cm. When returning 3 spaces, it returns 14 AND an empty space which will result in an empty data returned value, hence the error. change the 3 to 2 and let me know if that solved the error.

AndreRet
Industrious Poster
4,706 posts since Jan 2008
Reputation Points: 391
Solved Threads: 481
Skill Endorsements: 20

Looking at that string it looks to me that the index for the mid function should be 10 and the length 2

tinstaafl
Nearly a Posting Virtuoso
1,321 posts since Jun 2010
Reputation Points: 355
Solved Threads: 228
Skill Endorsements: 14

thanx for reply,

@AndreRet and @tinstaafl : i have a little bit enlightment, i remove Text1.SelStart = Len(Text1.Text) and jarak = Mid((Text1.Text), 6, 3) in row 8 and 9.

if i follow your suggestion to change in the mid function, replace the length, how if i want to take data if the data in hundred, lets say the data is 1-150, it cause a badly reading right? may be both of you have a good methode to read data correctly...

sarman.boyslo
Light Poster
28 posts since Nov 2012
Reputation Points: 0
Solved Threads: 0
Skill Endorsements: 0

If your string follows this format,

    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12| 13| 14|
    | T | i | n | g | g | i |   | : |   | x | x |   | c | m |

, then you could try this,jarak = Val(Mid(Text1.Text,10,3)). The Val function is a little more forgiving in that it will ignore leading and trailing spaces(i.e. it will process 2 or 3 digit numbers without a problem). Also if it can't parse a number from the string it will return 0 instead of throwing an exception.

tinstaafl
Nearly a Posting Virtuoso
1,321 posts since Jun 2010
Reputation Points: 355
Solved Threads: 228
Skill Endorsements: 14

You can use the Replace function...

jarak = Mid((Text1.Text), 6, 3)
jarak = Replace$(jarak, " ", "")

This will replace all empty spaces IF they exist, else it will remain the same.

AndreRet
Industrious Poster
4,706 posts since Jan 2008
Reputation Points: 391
Solved Threads: 481
Skill Endorsements: 20

@AndreRet and @tinstaafl :sorry for long time to tell you the result and thanx for reply.... :)

i've tried both of your methode script, tinstaafl's code is perfect for me, the result is correct when data is 1 digit till 3 digit (eg 1-123) but with replace 10 with 9 , for AndreRet's code, when data only 1 digit, it's cause error 13, mismatch data type (maybe "cm" in to the mid function, CMIIW), or may be i was wrong to copy your code, is it replace/completing the jarak = Mid(strFilter(I), 6, 3)? so the code become on your post?

sarman.boyslo
Light Poster
28 posts since Nov 2012
Reputation Points: 0
Solved Threads: 0
Skill Endorsements: 0

Does strFilter(I) follow the same pattern as Text1.Text? If so the Val function will work for it too. If not it's just a matter of adjusting the parameters of the mid function inside the vall function.

tinstaafl
Nearly a Posting Virtuoso
1,321 posts since Jun 2010
Reputation Points: 355
Solved Threads: 228
Skill Endorsements: 14

@tinstaafl : strFilter (I) follow the same pattern as Text1.Text? dunno what you mean, the complete code just like my earlier post, with a little bit modification, removing one line code... but as i wrote before, your code works for me, just need to replace 10 with 9 in mid function.

sarman.boyslo
Light Poster
28 posts since Nov 2012
Reputation Points: 0
Solved Threads: 0
Skill Endorsements: 0

This question has already been solved: Start a new discussion instead

Post: Markdown Syntax: Formatting Help
 
You
View similar articles that have also been tagged:
 
© 2013 DaniWeb® LLC
Page rendered in 0.3425 seconds using 2.7MB