您的位置:首页 > 其它

.NET WinForm读取扫描枪从COM口传过来的数据,显示在TextBox中,并做其他操作。

2013-08-06 15:49 393 查看
  

private string portName = "";   //串口
private int baudRate = 0;         //速率
private int dataBits = 0;         //数据位
int scanNum = 0;
int noRead = 0;
string strReceive = "";
string serialNumber = "";
string url = "";
int SocketPort = 0;
bool isDispose = false;//是否在处理COM数据,true为正在处理,false空闲
private void DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
strReceive = ReadCOM.serialport.ReadExisting();
if (string.IsNullOrEmpty(strReceive))
{
return;
}
else
{
if (!isDispose)
{
BackgroundWorker bgWorker = new BackgroundWorker();
bgWorker.DoWork += new DoWorkEventHandler(bgWorker_DoWork);
bgWorker.RunWorkerAsync(strReceive);
return;
}
}
}
catch (System.Exception ex)
{
throw new Exception(ex.Message);
}

}
private void bgWorker_DoWork(object sender, DoWorkEventArgs e)
{
isDispose = true;
this.Invoke((EventHandler)(delegate
{
this.txtGlassID.Text = strReceive;
this.txtGlassID.Refresh();
KeyEventArgs ev = new KeyEventArgs(Keys.Enter);
txtGlassID_KeyDown(sender, ev);
isDispose = false;

}));
}
private void OpenPort()
{
if (ReadCOM.serialport.IsOpen)
{
ReadCOM.serialport.Close();
}
ReadCOM.serialport.PortName = portName;
ReadCOM.serialport.BaudRate = baudRate;
ReadCOM.serialport.Parity = Parity.None;
ReadCOM.serialport.DataBits = dataBits;
ReadCOM.serialport.StopBits = StopBits.One;
//打开串口
ReadCOM.serialport.Open();

}
try
{
// serialport.DataReceived = null;
//if (serialport != null )
//{
//    serialport.Clofse();
//}
//serialport = new SerialPort();
ReadCOM.serialport.DataReceived += DataReceived;
portName = ConfigurationManager.AppSettings["PortName"].ToString();
baudRate = int.Parse(ConfigurationManager.AppSettings["BaudRate"]);
dataBits = int.Parse(ConfigurationManager.AppSettings["DataBits"]);
serialNumber = ConfigurationManager.AppSettings["SerialNumber"].ToString();
SocketPort = int.Parse(ConfigurationManager.AppSettings["SocketPort"]);
this.OpenPort();
//this.GetReaderStatu();
}
catch (System.Exception ex)
{
// MessageBox.Show("程序已启动或串口已被占用!");
MessageBox.Show(ex.Message);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐