Jump to content
Xtreme .Net Talk

Recommended Posts

Posted

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

Posted

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

  • 5 months later...
Guest
This topic is now closed to further replies.
×
×
  • Create New...