Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations strongm on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

C# Serial Communication RS232

Status
Not open for further replies.

Aerodesliza

Programmer
Apr 10, 2008
282
DO
I have to use the windows´s Hyperterminal to programmer some device,I have created a Hyperterminal version using this configuration:

BaudRate = 9600;
DataBits = 8;
StopBits = One;
Parity = None;
Handshake = RequestToSend <-- RTS: Hardware

I made several test with my hyperterminal and windows's hyperterminal using both like receiver and emitter and there's no diferent between them, they both send and received data equal.
The problem is that when I want to send some command with my hyperterminal the device even notice, but I can received information wonderful from the device. Maybe I doing something wrong??

Program and code below:

PS:Change the extension to .RAR

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace SimpleSerial
{
public partial class Form1 : Form
{
// Add this variable
string RxString;

public Form1()
{
InitializeComponent();
}

private void buttonStart_Click(object sender, EventArgs e)
{
serialPort1.PortName = "COM3";
serialPort1.BaudRate = 9600;
serialPort1.DataBits = 8;
serialPort1.StopBits = System.IO.Ports.StopBits.One;
serialPort1.Parity = System.IO.Ports.Parity.None;
serialPort1.Handshake = System.IO.Ports.Handshake.RequestToSend;
serialPort1.Open();


if (serialPort1.IsOpen)
{
buttonStart.Enabled = false;
buttonStop.Enabled = true;
textBox1.ReadOnly = false;
}
}

private void buttonStop_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
buttonStart.Enabled = true;
buttonStop.Enabled = false;
textBox1.ReadOnly = true;
}

}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort1.IsOpen) serialPort1.Close();
}

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// If the port is closed, don't try to send a character.
if (!serialPort1.IsOpen) return;

// If the port is Open, declare a char[] array with one element.
char[] buff = new char[1];

// Load element 0 with the key character.
buff[0] = e.KeyChar;

// Send the one character buffer.
serialPort1.Write(buff, 0, 1);

// Set the KeyPress event as handled so the character won't
// display locally. If you want it to display, omit the next line.
e.Handled = true;
}

private void DisplayText(object sender, EventArgs e)
{
textBox1.AppendText(RxString);
}

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
RxString = serialPort1.ReadExisting();
this.Invoke(new EventHandler(DisplayText));
}
}
}
 
Some devices expect DTR signal line to be on. Try enabling DTR at opening port...
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top