-
February 2nd, 2011, 11:54 PM
#1
VB6 and VB.NET Serial (COM1) data error
Hello,
I'm new to .NET. I have an application that is running in VB6. It sends text through COM1 port to another device.
When I converted the VB6 code to .NET the string it sends out is different! I have tried so many things and don't know what to do. I used a serial data analyzer and found the two strings are different even the the source code is the same.
VB6 source code:
MSComm1.CommPort = 1
MSComm1.Settings = "9600,O,8,1"
MSComm1.PortOpen = True
MSComm1.Output = Chr(&H2B) & _
Chr(&H4) & _
Chr(&H3) & _
Chr(&HE8) & _
Chr(&H0) & _
Chr(&H2) & _
Chr(&HF6) & _
Chr(&H71)
MSComm1.PortOpen = False
The analyzer gets the following string in hex: 2B 04 03 E8 00 02 F6 71
VB.NET source code:
Dim Port As SerialPort = New SerialPort("COM1", 9600, Parity.Odd, 8, StopBits.One)
Port.Open()
Port.Write(System.Convert.ToChar(&H2B) & _
System.Convert.ToChar(&H4) & _
System.Convert.ToChar(&H3) & _
System.Convert.ToChar(&HE8) & _
System.Convert.ToChar(&H0) & _
System.Convert.ToChar(&H2) & _
System.Convert.ToChar(&HF6) & _
System.Convert.ToChar(&H71))
Port.Close()
The analyzer gets the following string in hex: 2B 04 03 0F 00 02 3F 71
Why is there a difference in the string?
Please help me correct it...
Thanks
-
February 3rd, 2011, 12:15 AM
#2
Re: VB6 and VB.NET Serial (COM1) data error
-
February 3rd, 2011, 12:44 AM
#3
Re: VB6 and VB.NET Serial (COM1) data error
What do you mean by create hex?
is it like this?
Port.Write(System.Convert.ToChar(Hex(42)) & _
System.Convert.ToChar(Hex(4)) & _
System.Convert.ToChar(Hex(3)) & _
System.Convert.ToChar(Hex(232)) & _
System.Convert.ToChar(Hex(0)) & _
System.Convert.ToChar(Hex(2)) & _
System.Convert.ToChar(Hex(246)) & _
System.Convert.ToChar(Hex(113)))
-
February 3rd, 2011, 01:20 AM
#4
Re: VB6 and VB.NET Serial (COM1) data error
I would create a string of characters, then convert THAT to Hex
-
February 3rd, 2011, 03:50 AM
#5
Re: VB6 and VB.NET Serial (COM1) data error
I don't think I can do that.
I think there is a difference in the new .NET control itself
-
February 3rd, 2011, 04:54 AM
#6
Re: VB6 and VB.NET Serial (COM1) data error
I found something interesting.
when I convert a number using System.Convert.ToChar(X) and sends it through serial the X can only be hex: 0 to hex:3F if I want to get the correct value from the other side. Any value greater than hex:3F will not be hex:3F.
for example if I send
hex:64 you will get hex:3F
send hex:E8 you will get hex:3F
It seems like it max out with a 6 bit register value,
Please help me correct this mess ...
-
February 3rd, 2011, 12:49 PM
#7
Re: VB6 and VB.NET Serial (COM1) data error
Hmm... I have did a bit of serial in both. I found I needed to use a bytearray to send in several cases. If you send the binary values you should get the results that would would have gotten in VB6
Always use [code][/code] tags when posting code.
-
February 4th, 2011, 08:05 AM
#8
Re: VB6 and VB.NET Serial (COM1) data error
TCP Sockets do the same thing.
If you read the data from a file using Binaryreader and send it to the port as binary no encoding takes place.
I struggled with this for a while before I found the binary method. I have not tryed the convert to byte method, Instead I had used read bytes and sent the bytes to the port. I was able to get an exact file copy through the port using that method whereas in VB6 there was no need to read the file as binary.
Always use [code][/code] tags when posting code.
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|