Hi! I'm having trouble getting my code to receive serial data in and displaying it. I know that the port is open and works because I can send data out/in using another program. I have a USB to Serial device and its connected to a micro-controller sending data out that I can view in other programs like hyper=term.
Any help is appreciated. Thanks!
Any help is appreciated. Thanks!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace serial_port_test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//Scans computer for Com ports and loads names into list box
foreach (string item in System.IO.Ports.SerialPort.GetPortNames())
{
ComportBox.Items.Add(item);
}
}
private string rxString;
private void MySerial_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
rxString = MySerial.ReadExisting();
rxString = MySerial.ReadLine();
this.Invoke(new EventHandler(displayText));
}
private void displayText(object o, EventArgs e)
{
rtbRX.AppendText(rxString); //append adds to the prev.
}
private void bSend_Click(object sender, EventArgs e)
{
MySerial.Write(rtbTX.Text); //reads string and sends to rtbTX
}
private void bClear_Click(object sender, EventArgs e)
{
rtbTX.Clear();
rtbRX.Clear();
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
MySerial.Close();
}
// Auto-send
private void rtbTX_KeyPress(object sender, KeyPressEventArgs e)
{
if (MySerial.IsOpen && tbIM.Checked)
{
char[] ch = new char[1];
ch[0] = e.KeyChar;
MySerial.Write(ch, 0, 1);
}
}
private void tbIM_CheckedChanged(object sender, EventArgs e)
{
}
//second loop gets the item selected then sets that as the port name
private void ComportBox_SelectedIndexChanged(object sender, EventArgs e)
{
int i;
string s;
for (i = 0; i <= (ComportBox.Items.Count - 1); i++)
{
if (ComportBox.GetItemChecked(i))
{
s = ComportBox.Items[i].ToString();
MySerial.Close();
MySerial = new SerialPort(s, 9600, Parity.None, 8, StopBits.One);
MySerial.Open();
MySerial.DtrEnable = true;
rtbRX.Text = "Port " + s + " is open" + "\n";
}
}
}
private void bRXclear_Click(object sender, EventArgs e)
{
rtbRX.Clear();
}
private void AutoRx_Checked(object sender, EventArgs e)
{
//not being used yet
}
}
}