实例介绍
【实例简介】
usb转串口,扫描枪串口分析工具
读取扫描枪扫描信息
【实例截图】
【核心代码】
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace 串口调试助手
{
public partial class Form1 : Form
{
long Rxd = 0, Txd = 0;
bool StopShowReceived = false;
bool ShowInHex = false;
bool ShowInChar = true;
bool ShowInBin = false;
bool SendHEX = false;
bool SendChar = true;
bool SendBin = false;
bool AutoClear = false;
long BufferSize = 102400;
StringBuilder ReceivePool;
StringBuilder SendPool;
/*
private StringBuilder Convert2ASCII(int BaseForm)
{
StringBuilder Result;
String[] Content;
if (ShowInHex)
Content = TXB_Send.Text.TrimEnd().Split(' ');
else
{
Content = TXB_Send.Text.TrimEnd().Replace(" ",",").Replace(" ","").Split(',');
}
Result = new StringBuilder(Content.Length);
if (Content.Length == 1 && Content[0]=="")
return Result;
for (Int64 Index = 0; Index < Content.Length;Index )
{
if(Content[Index]!=" ")
Result.Append(Convert.ToChar(Convert.ToByte(Content[Index], BaseForm)));
}
return Result;
}
private StringBuilder Convert2BIN(int BaseForm)
{
StringBuilder Result;
String[] Hex2BinTable = { "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" };
int High, Low;
if (TXB_Send.Text.TrimEnd() == "")
return new StringBuilder();
if (BaseForm==16)
{
String[] Content = TXB_Send.Text.TrimEnd().Split(' ');
String temp;
Result = new StringBuilder(Content.Length);
for (Int64 Index = 0; Index < Content.Length;Index )
{
if(Content[Index]!=" ")
{
High = Convert.ToByte(Content[Index], BaseForm) / 16;
Low = Convert.ToByte(Content[Index], BaseForm) % 16;
temp = String.Format("{0} {1} ", Hex2BinTable[High], Hex2BinTable[Low]);
Result.Append(temp);
}
}
}
else
{
char []TempCharArray=TXB_Send.Text.ToCharArray();
String temp;
Result = new StringBuilder(TempCharArray.Length);
foreach (char TempChar in TempCharArray)
{
High = Convert.ToInt16(TempChar) / 16;
Low = Convert.ToInt16(TempChar) % 16;
temp = String.Format("{0} {1} ", Hex2BinTable[High], Hex2BinTable[Low]);
Result.Append(temp);
}
}
return Result;
}
private StringBuilder Convert2HEX(Int16 BaseForm)
{
StringBuilder Result;
if(BaseForm==2)
{
String[] Content = TXB_Send.Text.TrimEnd().Replace(" ", ",").Replace(" ", "").Split(',');
if(Content.Length==1 && Content[0]=="")
return new StringBuilder();
Result = new StringBuilder(Content.Length);
foreach (String TempString in Content)
{
if(TempString!="")
{
Result.Append(String.Format("{0:X2} ", Convert.ToByte(TempString, 2)));
}
}
}
else
{
if (TXB_Send.Text.Length == 0)
return new StringBuilder();
char[] TempCharArray = TXB_Send.Text.ToCharArray();
Result=new StringBuilder(TempCharArray.Length);
foreach(char TempChar in TempCharArray)
{
Result.Append(string.Format("{0:X2} ", Convert.ToByte(TempChar)));
}
}
return Result;
}
*/
private StringBuilder ConvertReceiveTo(int BaseForm)
{
StringBuilder Result = new StringBuilder(ReceivePool.Length / 3);
String[] ContentString = ReceivePool.ToString().Split(' ');
foreach (String TempString in ContentString)
{
if(BaseForm==0)//要转换为字符串
{
if (TempString != " " && TempString != "")
{
Result.Append(Convert.ToChar(Convert.ToByte(TempString, 16)));
}
}
if(BaseForm==16)
{
Result = ReceivePool;
}
if(BaseForm==2)
{
String[] Hex2BinTable = { "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" };
int High, Low;
String temp;
if (TempString != " " && TempString != "")
{
High = Convert.ToByte(TempString, 16) / 16;
Low = Convert.ToByte(TempString, 16) % 16;
temp = String.Format("{0} {1} ", Hex2BinTable[High], Hex2BinTable[Low]);
Result.Append(temp);
}
}
}
return Result;
}
private StringBuilder ConvertSendTo(int BaseForm)
{
StringBuilder Result = new StringBuilder(ReceivePool.Length / 3);
String[] ContentString = ReceivePool.ToString().Split(' ');
foreach (String TempString in ContentString)
{
if (BaseForm == 0)//要转换为字符串
{
if (TempString != " " && TempString != "")
{
Result.Append(Convert.ToChar(Convert.ToByte(TempString, 16)));
}
}
if (BaseForm == 16)
{
Result = ReceivePool;
}
if (BaseForm == 2)
{
String[] Hex2BinTable = { "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" };
int High, Low;
String temp;
if (TempString != " " && TempString != "")
{
High = Convert.ToByte(TempString, 16) / 16;
Low = Convert.ToByte(TempString, 16) % 16;
temp = String.Format("{0} {1} ", Hex2BinTable[High], Hex2BinTable[Low]);
Result.Append(temp);
}
}
}
return Result;
}
public Form1()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls=false;
ReceivePool = new StringBuilder();
}
private void Form1_Load(object sender, EventArgs e)
{
CBB_BaudRate.SelectedIndex = 3;
CBB_DataBits.SelectedIndex = 0;
CBB_PARATY.SelectedIndex = 0;
CBB_StopBits.SelectedIndex = 0;
for (int i = 1; i <= 255;i )
{
CBB_Port.Items.Add("COM" i.ToString());
}
CBB_Port.SelectedIndex = 0;
this.Size = new Size(402, 467);
}
private void BRN_Open_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen==false)
{
try
{
serialPort1.BaudRate = Convert.ToInt32(CBB_BaudRate.Text);
serialPort1.PortName = CBB_Port.Text;
if (CBB_PARATY.SelectedIndex == 0)
serialPort1.Parity = System.IO.Ports.Parity.None;
else if (CBB_PARATY.SelectedIndex == 1)
serialPort1.Parity = System.IO.Ports.Parity.Odd;
else if (CBB_PARATY.SelectedIndex == 2)
serialPort1.Parity = System.IO.Ports.Parity.Even;
serialPort1.DataBits = Convert.ToInt16(CBB_DataBits.Text);
if (CBB_StopBits.SelectedIndex == 0)
serialPort1.StopBits = System.IO.Ports.StopBits.One;
else
serialPort1.StopBits = System.IO.Ports.StopBits.Two;
}
catch (System.Exception ex)
{
MessageBox.Show("打开端口出错,原因是" ex.Message.ToString());
return;
}
try
{
serialPort1.Open();
LBL_PortState.Text = CBB_Port.SelectedItem.ToString() "已打开";
PCB_PortState.BackColor = Color.Red;
BTN_Open.Text = "关闭";
CBB_BaudRate.Enabled = false;
CBB_Port.Enabled = false;
CBB_DataBits.Enabled = false;
CBB_PARATY.Enabled = false;
CBB_StopBits.Enabled = false;
}
catch (System.Exception ex)
{
LBL_PortState.Text = "端口关闭";
PCB_PortState.BackColor = Color.Gray;
CBB_BaudRate.Enabled = true;
CBB_Port.Enabled = true;
CBB_DataBits.Enabled = true;
CBB_PARATY.Enabled = true;
CBB_StopBits.Enabled = true;
MessageBox.Show("端口无法打开,可能是不存在或被占用。");
return;
}
}
else
{
serialPort1.DiscardInBuffer();
serialPort1.Close();
BTN_Open.Text = "打开";
LBL_PortState.Text = "端口关闭";
PCB_PortState.BackColor = Color.Gray;
CBB_BaudRate.Enabled = true;
CBB_Port.Enabled = true;
CBB_DataBits.Enabled = true;
CBB_PARATY.Enabled = true;
CBB_StopBits.Enabled = true;
}
}
private void BTN_Clear_Click(object sender, EventArgs e)
{
TXB_Receive.Clear();
ReceivePool.Remove(0, ReceivePool.Length);
}
private void CKB_Stop_CheckedChanged(object sender, EventArgs e)
{
StopShowReceived = CKB_Stop.Checked;
}
private void CKB_HEX_CheckedChanged(object sender, EventArgs e)
{
}
private void BTN_Send_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen == false)
{
MessageBox.Show("串口没有打开。");
return;
}
if (SendChar == true)
{
try
{
serialPort1.Write(TXB_Send.Text);
Txd = TXB_Send.Text.Length;
LBL_TXD.Text = "发送: " Txd.ToString() "字节";
}
catch (System.Exception ex)
{
MessageBox.Show("发送出现错误,请尝试重新发送。如果错误仍然存在,请关闭程序后重新启动串口调试助手。");
return;
}
}
else if(SendHEX==true)
{
String TempData = TXB_Send.Text;
bool IlligalChar = false;
while (TempData.IndexOf(" ") != -1)
TempData = TempData.Replace(" ", " ");
string[] SendBuffer = TempData.TrimStart().TrimEnd().Split(' ');
Byte[] B=new Byte[SendBuffer.Length];
int Count = 0;
try
{
foreach (string temp in SendBuffer)
{
if(temp!=" ")
{
if (temp.Length <= 2)
{
B[Count] = Convert.ToByte(temp, 16);
Count ;
}
else
IlligalChar = true;
}
}
serialPort1.Write(B, 0, Count);
Txd = Count;
LBL_TXD.Text = "发送: " Txd.ToString() "字节";
if (IlligalChar == true)
{
MessageBox.Show("输入中包含1字节数据无法表示的内容。\r\n错误数据已经被丢弃,但其它数据仍然被发送。", "包含错误数据", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (System.Exception ex)
{
MessageBox.Show("发送出现错误,请尝试重新发送。如果错误仍然存在,请关闭程序后重新启动串口调试助手。");
return;
}
}
else if(SendBin==true)
{
String TempData = TXB_Send.Text;
bool IlligalChar = false;
while (TempData.IndexOf(" ") != -1)
TempData = TempData.Replace(" ", " ");
string[] SendBuffer = TempData.TrimStart().TrimEnd().Split(' ');
Byte[] B = new Byte[SendBuffer.Length];
int Count = 0;
try
{
foreach (string temp in SendBuffer)
{
if (temp != " ")
{
if (temp.Length <= 8)
{
B[Count] = Convert.ToByte(temp, 2);
Count ;
}
else
IlligalChar = true;
}
}
serialPort1.Write(B, 0, Count);
Txd = Count;
LBL_TXD.Text = "发送: " Txd.ToString() "字节";
if(IlligalChar==true)
{
MessageBox.Show("输入中包含1字节数据无法表示的内容。\r\n错误数据已经被丢弃,但其它数据仍然被发送。", "包含错误数据", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (System.Exception ex)
{
MessageBox.Show("发送出现错误,请尝试重新发送。如果错误仍然存在,请关闭程序后重新启动串口调试助手。");
return;
}
}
}
long BufferCount = 0;
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
{
int Count=serialPort1.BytesToRead;
byte[] Buffer = new byte[Count];
StringBuilder SB = new StringBuilder();
BufferCount = Count;
Rxd = Count;
if(AutoClear==true)
{
if (BufferCount >= BufferSize || ReceivePool.Length >= 2147483647)
{
TXB_Receive.Clear();
ReceivePool.Remove(0, ReceivePool.Length);
BufferCount = 0;
}
}
try
{
serialPort1.Read(Buffer, 0, Count);
foreach(Byte TempByte in Buffer)
{
ReceivePool.Append(String.Format("{0:X2}", TempByte));
ReceivePool.Append(" ");
}
if (StopShowReceived == true)
{
LBL_RXD.Text = "接收: " Rxd.ToString() "字节";
return;
}
if (ShowInChar == true)//字符方式显示
{
foreach (Byte TempByte in Buffer)
{
//if (TempByte == 13)
// continue;
SB.Append(Convert.ToChar(TempByte));
}
TXB_Receive.AppendText(SB.ToString());
LBL_RXD.Text = "接收: " Rxd.ToString() "字节";
}
else if (ShowInHex == true)//十六进制显示
{
for (int i = 0; i < Count; i )
{
String temp = String.Format("{0:X2} ", Buffer[i]);
TXB_Receive.AppendText(temp);
}
LBL_RXD.Text = "接收: " Rxd.ToString() "字节";
}
else if (ShowInBin == true)//二进制显示
{
for (int i = 0; i < Count; i )
{
String[] Hex2BinTable = { "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" };
int High, Low;
String temp;
High = Buffer[i] / 16;
Low = Buffer[i] % 16;
temp = String.Format("{0} {1} ", Hex2BinTable[High], Hex2BinTable[Low]);
TXB_Receive.AppendText(temp);
}
LBL_RXD.Text = "接收: " Rxd.ToString() "字节";
}
//Application.DoEvents();
//TXB_Receive.ScrollToCaret();
}
catch (System.Exception ex)
{
MessageBox.Show("数据接收时发生错误,原因是" ex.Message.ToString());
return;
}
}
}
private void 发送区ToolStripMenuItem_Click(object sender, EventArgs e)
{
TXB_Send.Clear();
}
private void 接收区ToolStripMenuItem_Click(object sender, EventArgs e)
{
TXB_Receive.Clear();
}
private void CKB_Auto_CheckedChanged(object sender, EventArgs e)
{
if(CKB_Auto.Checked==true)
{
timer1.Interval = Convert.ToInt16(TXB_AutoFre.Text);
timer1.Start();
timer1.Enabled = true;
label3.Enabled = true;
label4.Enabled = true;
BTN_AutoSendFreOK.Enabled = true;
TXB_AutoFre.Enabled = true;
}
else
{
timer1.Stop();
timer1.Enabled = false;
label3.Enabled = false;
label4.Enabled = false;
BTN_AutoSendFreOK.Enabled = false;
TXB_AutoFre.Enabled = false;
}
}
private void BTN_AutoSendFreOK_Click(object sender, EventArgs e)
{
timer1.Stop();
timer1.Interval = Convert.ToInt16(TXB_AutoFre.Text);
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (serialPort1.IsOpen == false)
{
timer1.Enabled = false;
CKB_Auto.Checked = false;
MessageBox.Show("串口没有打开。");
return;
}
if (SendChar == true)
{
serialPort1.Write(TXB_Send.Text);
Txd = TXB_Send.Text.Length;
LBL_TXD.Text = "发送: " Txd.ToString() "字节";
}
else if (SendHEX == true)
{
string[] SendBuffer = TXB_Send.Text.Split(' ');
Byte[] B = new Byte[SendBuffer.Length];
int Count = 0;
try
{
foreach (string temp in SendBuffer)
{
B[Count] = Convert.ToByte(temp, 16);
Count ;
}
}
catch (System.Exception ex)
{
MessageBox.Show("输入中包含非法字符。" ex.Message);
return;
}
try
{
serialPort1.Write(B, 0, Count);
Txd = Count;
LBL_TXD.Text = "发送: " Txd.ToString() "字节";
}
catch (System.Exception ex)
{
MessageBox.Show("发送出现错误,请尝试重新发送。如果错误仍然存在,请关闭程序后重新启动串口调试助手。");
return;
}
}
else if (SendBin == true)
{
string[] SendBuffer = TXB_Send.Text.Split(' ');
Byte[] B = new Byte[SendBuffer.Length];
int Count = 0;
try
{
foreach (string temp in SendBuffer)
{
B[Count] = Convert.ToByte(temp, 2);
Count ;
}
}
catch (System.Exception ex)
{
MessageBox.Show("输入中包含非法字符。\r\n" ex.Message);
return;
}
try
{
serialPort1.Write(B, 0, Count);
Txd = Count;
LBL_TXD.Text = "发送: " Txd.ToString() "字节";
}
catch (System.Exception ex)
{
MessageBox.Show("发送出现错误,请尝试重新发送。如果错误仍然存在,请关闭程序后重新启动串口调试助手。");
return;
}
}
}
private void toolStripSplitButton1_ButtonClick(object sender, EventArgs e)
{
Rxd = 0;
Txd = 0;
LBL_TXD.Text = "发送: 0字节";
LBL_RXD.Text = "接收: 0字节";
}
private void 统计计数ToolStripMenuItem_Click(object sender, EventArgs e)
{
Rxd = 0;
Txd = 0;
LBL_TXD.Text = "发送: 0字节";
LBL_RXD.Text = "接收: 0字节";
}
private void CKB_HEX_CheckedChanged_1(object sender, EventArgs e)
{
if (RDB_HEX.Checked == false)
return;
StringBuilder SB = new StringBuilder();
/*
if (ShowInChar)
SB = ConvertReceiveTo(0);
else
SB = ConvertReceiveTo(2);
*/
SB = ConvertReceiveTo(16);
TXB_Receive.Clear();
TXB_Receive.Text = SB.ToString();
ShowInHex = RDB_HEX.Checked;
ShowInChar = !ShowInHex;
ShowInBin = !ShowInHex;
}
private void RDB_Char_CheckedChanged(object sender, EventArgs e)
{
if (RDB_Char.Checked == false)
return;
StringBuilder SB = new StringBuilder();
/*
if (ShowInHex)
SB = ConvertReceiveTo(16);
else
SB = ConvertReceiveTo(2);*/
SB = ConvertReceiveTo(0);
TXB_Receive.Clear();
TXB_Receive.Text = SB.ToString();
ShowInChar = RDB_Char.Checked;
ShowInHex = !ShowInChar;
ShowInBin = !ShowInChar;
}
private void RDB_Bin_CheckedChanged(object sender, EventArgs e)
{
if (RDB_Bin.Checked == false)
return;
StringBuilder SB = new StringBuilder();
/*
if (ShowInHex)
SB = Convert2BIN(16);
else
SB = Convert2BIN(0);
*/
SB = ConvertReceiveTo(2);
TXB_Receive.Clear();
TXB_Receive.Text = SB.ToString();
ShowInBin = RDB_Bin.Checked;
ShowInHex = !ShowInBin;
ShowInChar = !ShowInBin;
}
private void RDB_SendChar_CheckedChanged(object sender, EventArgs e)
{
SendChar = RDB_SendChar.Checked;
if (SendChar == true)
{
TXB_Send.Text = "By Walson, Sharp Arrow Studio";
}
}
private void Send_Bin_KeyPress(object sender, KeyPressEventArgs e)
{
if (!((e.KeyChar >= '0' && e.KeyChar <= '1') || e.KeyChar == (char)22 || e.KeyChar == (char)3 || e.KeyChar == ' '))
{
if (e.KeyChar != (char)Keys.Enter && e.KeyChar != (char)Keys.Back /*&& e.KeyChar != (char)Keys.Delete*/)
{
e.Handled = true;
MessageBox.Show("输入的字符包含非二进制数字。");
return;
}
}
}
private void RDB_SendBIN_CheckedChanged(object sender, EventArgs e)
{
SendBin = RDB_SendBIN.Checked;
if (SendBin == true)
{
this.TXB_Send.KeyPress = new System.Windows.Forms.KeyPressEventHandler(this.Send_Bin_KeyPress);
TXB_Send.Text = "00000000 00000001 00000010 00000011 00000100";
}
else
this.TXB_Send.KeyPress -= new System.Windows.Forms.KeyPressEventHandler(this.Send_Bin_KeyPress);
}
private void CKB_SendHEX_CheckedChanged(object sender, EventArgs e)
{
SendHEX = RDB_SendHEX.Checked;
if (SendHEX == true)
{
this.TXB_Send.KeyPress = new System.Windows.Forms.KeyPressEventHandler(this.Send_HEX_KeyPress);
TXB_Send.Text = "00 01 02 03 04 05 06 07 08 09 0A";
TXB_Send.CharacterCasing = CharacterCasing.Upper;
}
else
{
this.TXB_Send.KeyPress -= new System.Windows.Forms.KeyPressEventHandler(this.Send_HEX_KeyPress);
TXB_Send.CharacterCasing = CharacterCasing.Normal;
}
//TXB_Send.Clear();
}
private void Send_HEX_KeyPress(object sender, KeyPressEventArgs e)
{
//MessageBox.Show(e.KeyChar.ToString());
if (!((e.KeyChar >= '0' && e.KeyChar <= '9') || (e.KeyChar >= 'a' && e.KeyChar <= 'f') || (e.KeyChar >= 'A' && e.KeyChar <= 'F') || e.KeyChar == (char)22 || e.KeyChar == (char)3 || e.KeyChar == ' '))
{
if (e.KeyChar != (char)Keys.Enter && e.KeyChar != (char)Keys.Back /*&& e.KeyChar != (char)Keys.Delete*/)
{
e.Handled = true;
MessageBox.Show("输入的字符包含非十六进制数字。");
}
}
}
private void CKB_AutoClear_CheckedChanged(object sender, EventArgs e)
{
AutoClear = CKB_AutoClear.Checked;
if(AutoClear==true)
{
BufferSize = Convert.ToInt32(TXB_BufferSize.Text);
label5.Enabled = true;
label6.Enabled = true;
TXB_BufferSize.Enabled = true;
BTN_BufferSizeOK.Enabled = true;
}
else
{
label5.Enabled = false;
label6.Enabled = false;
TXB_BufferSize.Enabled = false;
BTN_BufferSizeOK.Enabled = false;
}
}
private void BTN_BufferSizeOK_Click(object sender, EventArgs e)
{
BufferSize = Convert.ToInt32(Convert.ToDouble(TXB_BufferSize.Text) * 1024);
if (BufferSize > 2147483647)
{
MessageBox.Show("缓冲区设置过大。缓冲区容量请不要超过2GB。");
BufferSize = 1024000;
TXB_BufferSize.Text = "100";
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
serialPort1.Close();
}
catch (System.Exception ex)
{
return;
}
}
String SaveType = "ASCII";
private void 十六进制ToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveType = "HEX";
SaveFile.Title = "保存为十六进制形式";
SaveFile.Filter = "文本文件|*.txt";
SaveFile.ShowDialog();
}
private void 二进制ToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveType = "BIN";
SaveFile.Title = "保存为二进制形式";
SaveFile.Filter = "文本文件|*.txt";
SaveFile.ShowDialog();
}
private void aSCIIToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveType = "ASCII";
SaveFile.Title = "保存为ASCII码形式";
SaveFile.Filter = "文本文件|*.txt";
SaveFile.ShowDialog();
}
private void SaveFile_FileOk(object sender, CancelEventArgs e)
{
StringBuilder SB = new StringBuilder();
FileStream FS = new FileStream(SaveFile.FileName, FileMode.Create);
StreamWriter SW = new StreamWriter(FS);
switch (SaveType)
{
case "ASCII":
{
SB = ConvertReceiveTo(0);
SW.Write(SB.ToString());
break;
}
case "BIN":
{
SB = ConvertReceiveTo(2);
SW.Write(SB.ToString());
break;
}
case "HEX":
{
SW.Write(ReceivePool.ToString());
break;
}
}
SW.Close();
FS.Close();
}
private void toolStripSplitButton2_ButtonClick(object sender, EventArgs e)
{
SaveType = "ASCII";
SaveFile.Title = "保存为ASCII码形式";
SaveFile.Filter = "文本文件|*.txt";
SaveFile.ShowDialog();
}
private void TXB_Receive_TextChanged(object sender, EventArgs e)
{
//TXB_Receive.Focus();
//Application.DoEvents();
TXB_Receive.ScrollToCaret();
}
private void BTN_AddMemo_Click(object sender, EventArgs e)
{
if (TXB_Memo.Text != "")
this.Text = "串口数据分析工具 By 飞无痕,PLAIEU --正与" TXB_Memo.Text "连接";
else
this.Text = "串口数据分析工具 By 飞无痕,PLAIEU";
}
private void TXB_Memo_KeyPress(object sender, KeyPressEventArgs e)
{
if(e.KeyChar=='\r')
{
if (TXB_Memo.Text != "")
this.Text = "串口数据分析工具 By 飞无痕,PLAIEU --正与" TXB_Memo.Text "连接";
else
this.Text = "串口数据分析工具 By 飞无痕,PLAIEU";
TXB_Send.Focus();
}
}
}
}
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论