Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

SerialDataReceived not working.

$
0
0
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!

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


Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>