views:

1046

answers:

2

I have a sensor that uses RS232 over USB to receive commands from a PC and send data to the PC.

The sensor needs to be reset (using the DTR line) before a command can be sent to it.

I tried to use the built-in .net serial port, but it does not seem to drive the DTR line as expected. I am beginning to wonder if the DTREnable property actually drives the DTR pin, or if it only enables it during handshaking.

Other SerialPort implementations that I could find on the web also uses the Win32 API, but I find it very difficult to close the port with these implementations. If I step through code I can see it gets stuck on a WaitOne command.

Anyone know how to drive DTR with System.IO.Ports.SerialPort? Or know of a good component out there?

+2  A: 

i wrote this to test DTR. it works as expected using my USB serialport adapter. i checked it by attaching the cable to my DataTracker (RS232 breakout box, with LED's). DTR does change.

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    SerialPort1.Close()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    SerialPort1.PortName = "COM5"
    SerialPort1.Open()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    SerialPort1.RtsEnable = True

    Debug.WriteLine("DTR +")
    System.Threading.Thread.Sleep(1000)

    SerialPort1.DtrEnable = True 'DTR -
    Debug.WriteLine("DTR -")
    System.Threading.Thread.Sleep(1000)

    SerialPort1.DtrEnable = False 'DTR +
    Debug.WriteLine("DTR +")
    System.Threading.Thread.Sleep(1000)

    SerialPort1.RtsEnable = False
End Sub
dbasnett
Thanks for the feedback. It must be something else that is keeping my sensor from responding then. I have to say the description attached to the DTREnabled property is not that clear. It says something to the effect of "Enables DTR during handshaking".
Ries
A: 

Check the pinout of the cable. It might be contributing to the problem.

Cable Pinouts

dbasnett
Also be aware that some cheaper serial cables do not contain wires connected to all pins - some are only 3 wire (Rx, Tx, Ground) so DTR/CTS/etc. don't work.
devstuff