Solved

Ascii to string conversion vb.net?

Posted on 2006-06-16
7
627 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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 350 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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

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

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

This tutorial demonstrates one way to create an application that runs without any Forms but still has a GUI presence via an Icon in the System Tray. The magic lies in Inheriting from the ApplicationContext Class and passing that to Application.Ru…
Article by: Kraeven
Introduction Remote Share is a simple remote sharing tool, enabling you to see, add and remove remote or local shares. The application is written in VB.NET targeting the .NET framework 2.0. The source code and the compiled programs have been in…
Monitoring a network: why having a policy is the best policy? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the enormous benefits of having a policy-based approach when monitoring medium and large networks. Software utilized in this v…
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …

691 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