1,105,340 Community Members

help : temp data and mscomm.input

Member Avatar
sarman.boyslo
Light Poster
28 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

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
Member Avatar
tinstaafl
Postaholic
2,009 posts since Jun 2010
Reputation Points: 559 [?]
Q&As Helped to Solve: 400 [?]
Skill Endorsements: 35 [?]
 
0
 

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

Member Avatar
sarman.boyslo
Light Poster
28 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

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...

Member Avatar
tinstaafl
Postaholic
2,009 posts since Jun 2010
Reputation Points: 559 [?]
Q&As Helped to Solve: 400 [?]
Skill Endorsements: 35 [?]
 
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

Member Avatar
sarman.boyslo
Light Poster
28 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

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?

Member Avatar
AndreRet
Industrious Poster
4,492 posts since Jan 2008
Reputation Points: 362 [?]
Q&As Helped to Solve: 499 [?]
Skill Endorsements: 24 [?]
 
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?

Member Avatar
tinstaafl
Postaholic
2,009 posts since Jun 2010
Reputation Points: 559 [?]
Q&As Helped to Solve: 400 [?]
Skill Endorsements: 35 [?]
 
0
 

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

Member Avatar
sarman.boyslo
Light Poster
28 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

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.

Member Avatar
AndreRet
Industrious Poster
4,492 posts since Jan 2008
Reputation Points: 362 [?]
Q&As Helped to Solve: 499 [?]
Skill Endorsements: 24 [?]
 
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.

Member Avatar
AndreRet
Industrious Poster
4,492 posts since Jan 2008
Reputation Points: 362 [?]
Q&As Helped to Solve: 499 [?]
Skill Endorsements: 24 [?]
 
0
 

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

Member Avatar
sarman.boyslo
Light Poster
28 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

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

Member Avatar
tinstaafl
Postaholic
2,009 posts since Jun 2010
Reputation Points: 559 [?]
Q&As Helped to Solve: 400 [?]
Skill Endorsements: 35 [?]
 
0
 

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

Member Avatar
AndreRet
Industrious Poster
4,492 posts since Jan 2008
Reputation Points: 362 [?]
Q&As Helped to Solve: 499 [?]
Skill Endorsements: 24 [?]
 
0
 

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.

Member Avatar
tinstaafl
Postaholic
2,009 posts since Jun 2010
Reputation Points: 559 [?]
Q&As Helped to Solve: 400 [?]
Skill Endorsements: 35 [?]
 
0
 

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

Member Avatar
sarman.boyslo
Light Poster
28 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

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...

Member Avatar
tinstaafl
Postaholic
2,009 posts since Jun 2010
Reputation Points: 559 [?]
Q&As Helped to Solve: 400 [?]
Skill Endorsements: 35 [?]
 
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.

Member Avatar
AndreRet
Industrious Poster
4,492 posts since Jan 2008
Reputation Points: 362 [?]
Q&As Helped to Solve: 499 [?]
Skill Endorsements: 24 [?]
 
0
 

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.

Member Avatar
sarman.boyslo
Light Poster
28 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

@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?

Member Avatar
tinstaafl
Postaholic
2,009 posts since Jun 2010
Reputation Points: 559 [?]
Q&As Helped to Solve: 400 [?]
Skill Endorsements: 35 [?]
 
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.

Member Avatar
sarman.boyslo
Light Poster
28 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

@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.

You
This question has already been solved: Start a new discussion instead
Post:
Start New Discussion
View similar articles that have also been tagged: