read from serialport problem
-
in my C# program,i input "at" in a textBox,then the program send "at" to serialport,but when i click receive button,the message I receive from serial port is the same as what I input,namely "at",not "ok",why?who can answer my question?How I solve this problem and get the right response "ok" from serial port? next is my code: public partial class Form1 : Form { private SerialPort sp = null; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { try { sp = new SerialPort("COM1"); sp.ReadTimeout = 5000; sp.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void button2_Click(object sender, EventArgs e) { try { sp.Write(textBox1.Text); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void button3_Click(object sender, EventArgs e) { try { /*string text=null; char[] buffer = new char[10]; sp.Read(buffer,0,6); for (int i = 0; i < buffer.Length; i++) { text += buffer[i]; } textBox2.Text = text;*/ /*string text = null; char t = (char)sp.ReadChar(); text+=t.ToString(); while (true) { t = (char)sp.ReadChar(); if (t == '\0') break; else text += t.ToString(); } textBox2.Text = text;*/ string text = null; byte[] t = new byte[20]; char[] c = new char[20]; sp.Read(t, 0, t.Length); sp.Read(t, 0, t.Length); c = Encoding.ASCII.GetChars(t); int i; for (i = 0; i < c.Length; i++) { if (c[i] == 'O' || c[i] == 'K') text += c[i].ToString(); } textBox2.Text = text; } catch (Exception ex) { MessageBox.Show(ex.Message); } } }
-
in my C# program,i input "at" in a textBox,then the program send "at" to serialport,but when i click receive button,the message I receive from serial port is the same as what I input,namely "at",not "ok",why?who can answer my question?How I solve this problem and get the right response "ok" from serial port? next is my code: public partial class Form1 : Form { private SerialPort sp = null; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { try { sp = new SerialPort("COM1"); sp.ReadTimeout = 5000; sp.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void button2_Click(object sender, EventArgs e) { try { sp.Write(textBox1.Text); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void button3_Click(object sender, EventArgs e) { try { /*string text=null; char[] buffer = new char[10]; sp.Read(buffer,0,6); for (int i = 0; i < buffer.Length; i++) { text += buffer[i]; } textBox2.Text = text;*/ /*string text = null; char t = (char)sp.ReadChar(); text+=t.ToString(); while (true) { t = (char)sp.ReadChar(); if (t == '\0') break; else text += t.ToString(); } textBox2.Text = text;*/ string text = null; byte[] t = new byte[20]; char[] c = new char[20]; sp.Read(t, 0, t.Length); sp.Read(t, 0, t.Length); c = Encoding.ASCII.GetChars(t); int i; for (i = 0; i < c.Length; i++) { if (c[i] == 'O' || c[i] == 'K') text += c[i].ToString(); } textBox2.Text = text; } catch (Exception ex) { MessageBox.Show(ex.Message); } } }
-
in my C# program,i input "at" in a textBox,then the program send "at" to serialport,but when i click receive button,the message I receive from serial port is the same as what I input,namely "at",not "ok",why?who can answer my question?How I solve this problem and get the right response "ok" from serial port? next is my code: public partial class Form1 : Form { private SerialPort sp = null; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { try { sp = new SerialPort("COM1"); sp.ReadTimeout = 5000; sp.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void button2_Click(object sender, EventArgs e) { try { sp.Write(textBox1.Text); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void button3_Click(object sender, EventArgs e) { try { /*string text=null; char[] buffer = new char[10]; sp.Read(buffer,0,6); for (int i = 0; i < buffer.Length; i++) { text += buffer[i]; } textBox2.Text = text;*/ /*string text = null; char t = (char)sp.ReadChar(); text+=t.ToString(); while (true) { t = (char)sp.ReadChar(); if (t == '\0') break; else text += t.ToString(); } textBox2.Text = text;*/ string text = null; byte[] t = new byte[20]; char[] c = new char[20]; sp.Read(t, 0, t.Length); sp.Read(t, 0, t.Length); c = Encoding.ASCII.GetChars(t); int i; for (i = 0; i < c.Length; i++) { if (c[i] == 'O' || c[i] == 'K') text += c[i].ToString(); } textBox2.Text = text; } catch (Exception ex) { MessageBox.Show(ex.Message); } } }
if the end result is not what you want it is wise to look at the intermediate data, in your case log the bytes that the serial port returns to you (I would use HEX numbers). If they are exactly what you have sent, then either your target device is echoing them, or you have an unintended connection between TxD and RxD (transmit data and receive data) on your serial cable. :)
Luc Pattyn
try { [Search CP Articles] [Search CP Forums] [Forum Guidelines] [My Articles] } catch { [Google] }