.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); }
相关文章推荐
- .NET WinForm读取扫描枪从COM口传过来的数据,显示在TextBox中,并做其他操作。
- ASP.NET中Gridview读取数据表列表页面常用操作-序号,编辑,删除,删除确认
- asp.net中Repeater中嵌套Repeater来显示跟外层Repeater数据相关的其他信息
- ASP.NET中Gridview读取数据表列表页面常用操作-序号,编辑,删除,删除确认
- table 中 点击某行,获取这一行的数据弹框显示,或进行其他的操作
- 在ASP.NET 2.0中操作数据之十五:在GridView的页脚中显示统计信息
- vs.net 2005 C# WinForm GroupBOX 的BUG?尝试读取或写入受保护的内存。这通常指示其他内存已损坏
- dataset 操作数据库 读取数据并列表显示
- 在ASP.NET 2.0中操作数据之二十九:用DataList和Repeater来显示数据
- ADO.NET中的多数据表操作浅析—读取(收藏)
- ASP.NET中Gridview读取数据表列表页面常用操作-序号,编辑,删除,删除确认
- Asp.Net 2.0 操作mysql 数据基类(读取,删除,插入,更新)
- 在ASP.NET 2.0中操作数据之五十三:在Data Web控件显示二进制数据
- C# winForm 窗体:TextBox中显示文件的绝对路径,按钮背景颜色,richTextBox读取文本文件...
- .NET 使用GridView控件绑定数据源其他操作(查询相关数据,而不是显示全数据)
- ASP.net 从数据库中读取html格式的数据并显示在页面中
- SerialPort如何读取串口数据并显示在TextBox上,多线程委托
- ADO.NET中的多数据表操作浅析—读取
- WinForm 读取Excel 数据显示到窗体中
- NET下基于OO4O,FME,ODP.NET的Oracle Spatial空间数据读取操作