?
Solved

Ascii to string conversion vb.net?

Posted on 2006-06-16
7
Medium Priority
?
677 Views
Last Modified: 2012-05-05
Hello experts I am having an issue with some converting from a byte to a string.  I am receiving a value from comport in bytes and I convert it to  a string.  The problem is the string is suppose to be 16 characters long  but when I read it in only 8 characters can be read at one time it breaks it up into two 8 character strings and I am not sure why.  I am trying to convert it to characters and see if that works.  If someone could explain in a little more detail what is going on with these lines of code that might help.

  Dim oEncoder As New System.Text.ASCIIEncoding
            Dim oEnc As Encoding = oEncoder.GetEncoding(1252)
            '-------------------------------------------------------------
            If Not Me.InputStream Is Nothing Then Return oEnc.Getstring(Me.InputStream)


'here is the entire property
 Overridable ReadOnly Property InputStreamString() As string
              Get
            Dim oEncoder As New System.Text.ASCIIEncoding
            Dim oEnc As Encoding = oEncoder.GetEncoding(1252)
            '-------------------------------------------------------------
            If Not Me.InputStream Is Nothing Then Return oEnc.Getstring(Me.InputStream)
        End Get
    End Property

I tried converting it to characters  
Overridable ReadOnly Property InputStreamString() As char()
              Get
            Dim oEncoder As New System.Text.ASCIIEncoding
            Dim oEnc As Encoding = oEncoder.GetEncoding(1252)
            '-------------------------------------------------------------
            If Not Me.InputStream Is Nothing Then Return oEnc.GetChars(Me.InputStream)
        End Get
    End Property

The value gets read into my program using an event like so:

  Public Sub comhold_CommEvent(ByVal source As Rs232, ByVal Mask As Rs232.EventMasks) Handles comhold.CommEvent
     
        Dim sread As string
        sread = comhold.InputStreamString
End sub
0
Comment
Question by:tentavarious
  • 4
  • 3
7 Comments
 
LVL 48

Expert Comment

by:AlexFM
ID: 16922614
ASCIIEncoding class works with Unicode characters. Every Unicode character is two bytes.
0
 

Author Comment

by:tentavarious
ID: 16922638
ok, so how could I convert the bytes into chars then convert the chars into a string?
0
 
LVL 48

Accepted Solution

by:
AlexFM earned 1400 total points
ID: 16922679
Well, the simplest way that I see is to read bytes from the stream and add every byte to string casting it to Char type.
0
[Webinar] Kill tickets & tabs using PowerShell

Are you tired of cycling through the same browser tabs everyday to close the same repetitive tickets? In this webinar JumpCloud will show how you can leverage RESTful APIs to build your own PowerShell modules to kill tickets & tabs using the PowerShell command Invoke-RestMethod.

 

Author Comment

by:tentavarious
ID: 16922722
Ok, so back to the top, how come the sread value in my code only gets 8 characters.  The comhold event has to fire twice to read in the entire string.
0
 
LVL 48

Expert Comment

by:AlexFM
ID: 16922759
Because every character in the sread value contains two bytes from input stream. Instead of packing two butes to one character, you need to convert every byte to character.
0
 

Author Comment

by:tentavarious
ID: 16922824
ok so how would I go about doing that changing the input stream to this:
Overridable ReadOnly Property InputStreamString() As char()
              Get
            Dim oEncoder As New System.Text.ASCIIEncoding
            Dim oEnc As Encoding = oEncoder.GetEncoding(1252)
            '-------------------------------------------------------------
            If Not Me.InputStream Is Nothing Then Return oEnc.GetChars(Me.InputStream)
        End Get
    End Property

Then chaning sread to this:
  Dim sread() As char
 
I am not sure on how to convert the characters back into a string.
0
 

Author Comment

by:tentavarious
ID: 16922953
I was just missing around with conversions this seems to work so basically since it is being read in as bytes alls i would need to do is convert it to characters then use a ctype(char variable, string) to get it back to a string correct?

 Dim sval As String = "1234567890123456"
        Dim oEncoder As New System.Text.ASCIIEncoding
        Dim byteval As Byte() = oEncoder.GetBytes(sval)
        Dim newstring As Char() = oEncoder.GetChars(byteval)
        Dim stringfinal As String = CType(newstring, String)
    End Sub
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I think the Typed DataTable and Typed DataSet are very good options when working with data, but I don't like auto-generated code. First, I create an Abstract Class for my DataTables Common Code.  This class Inherits from DataTable. Also, it can …
If you're writing a .NET application to connect to an Access .mdb database and use pre-existing queries that require parameters, you've come to the right place! Let's say the pre-existing query(qryCust) in Access takes a Date as a parameter and l…
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…
If you are looking for an automated solution for backup single or multiple Office 365 user mailboxes to Outlook data file, then you can use Kernel Office 365 Backup & Restore tool. Go through the video to check out the steps to backup single or mult…
Suggested Courses

588 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question