Solved

# Converting ASCII to Hex error

Posted on 2004-09-27
376 Views
Hi

My program opens up the comm port and receives data from another computer. The ascii text received i convert to hex by

strHex = Hex(Asc(character))

but it doesnt convert correctly.

If the other computer sent 01 in hex I will receive 01 in hex, if they send FF in hex I receive 7F in hex

If we take this down to binary
FF = 11111111
7F = 01111111

The conversion from ascii to a number seems to take away the first bit

this is the same with many other hex values with a beginning 1 at the front taken away

The error comes at the point of converting the character to an ascii number

82 hex = 130 dec

but i get 02 dec

again it removed the beginning bit.

my comm port settings are
baud = 19200 (yes the same as the other computer)
comm = 1
parity = none
databit = 8
stopbit = 1

i have tried most other values of my comm settings but only the ones listed above gives the closest hex values back

anyone have any ideas

I use the rs232 class (the one microsoft gives you) for serial port communication

thanks
0
[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
• 2

LVL 14

Accepted Solution

ptakja earned 500 total points
ID: 12165974
Try this routine:

It expects a long.  If you are receiving a string, you can convert it like this:

Dim long as Int64 = convert.ToInt64(YourDataAsString)

' Convert from decimal to hexadecimal
' if you pass the Digits argument, the result is truncated to that number of
' digits
'
' you should always specify Digits if passing negative values

Function Hex(ByVal value As Long, Optional ByVal digits As Short = -1) As String
' convert to base-16
Dim res As String = Convert.ToString(value, 16).ToUpper()

' truncate or extend the number
If digits > 0 Then
If digits < res.Length Then
' truncate the result
res = res.Substring(res.Length - digits)
ElseIf digits > res.Length Then
' we must extend the result to the left
If value >= 0 Then
' extend with zeroes if positive
Else
' extend with "F"s if negative
End If
End If
End If
Return res
End Function

Jeff
0

LVL 4

Author Comment

ID: 12166051
Sorry, nope didn't work

there is a possibility that the ascii characters coming into my program could be stripped of their beginning 1.
0

LVL 4

Author Comment

ID: 12166107
OK

I found a solution. Just another stupid microsoft stuff up once again. I found a serial port comm program built in vb .net that reads all the information back perfectly.

And when reading through the revisions of this class i found

'  Rev.4 (24/05/2002)
'  Fixed problem with ASCII Encoding truncating 8th bit

here are the details for the class
'===================================================
'
'      Module                        :      Rs232
'      Description            :      Class for handling RS232 comunication with VB.Net
'      Created                        :      10/08/2001 - 8:45:25
'      WebSite                        :      www.codeworks.it/net/index.htm
'===================================================

I have seen vb .net 2005 and they are creating a serial port namespace although in beta 1 its not complete yet, so hopefully next year, serial comms will be much better than now.

0

## Featured Post

Question has a verified solution.

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

### Suggested Solutions

Need help with a query 14 55
VB.net Excel VSTO Add-in version compatability 2 39
reading an excel file vb.net 2 47
Click print button programmatically on print showdialog 1 25
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 …
It’s quite interesting for me as I worked with Excel using vb.net for some time. Here are some topics which I know want to share with others whom this might help. First of all if you are working with Excel then you need to Download the Following …
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…
Progress
###### Suggested Courses
Course of the Month1 day, 19 hours left to enroll