C#2005 程序 用serialPort1控件
条码扫描仪扫描下条形码,读出条形码信息(唯一商品编号,例如* kele-001 *),并更改该商品在数据库中的库存。
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
我查到有这样个方法,但不知道具体怎么用。谁能给出段具体代码,要代码。
代码关键:我声明个string strNO = ""; ,如何获取strNO = "* kele-001 *" 这个过程。
另外,还有没有串口通信该注意的事项。例如一旦com1口接收到数据,程序会不会死掉,如何避免等。
条码扫描仪扫描下条形码,读出条形码信息(唯一商品编号,例如* kele-001 *),并更改该商品在数据库中的库存。
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
我查到有这样个方法,但不知道具体怎么用。谁能给出段具体代码,要代码。
代码关键:我声明个string strNO = ""; ,如何获取strNO = "* kele-001 *" 这个过程。
另外,还有没有串口通信该注意的事项。例如一旦com1口接收到数据,程序会不会死掉,如何避免等。
解决方案 »
- .net(C#)winform窗体打印
- 关于C#程序优化的问题
- 一个搜索的问题!
- 请问关于switch语句的用法
- 请问高手:如何获取文件路径??
- 新手问题:请教大家 在C#中用 word 类的中的 InsertSymbol 函数,怎么使用呀??
- 【请教】我的组件能从数据库中取数据,但不能修改,为何?
- datagridvie当选中行时总是在行头现实一个箭头,怎么去掉箭头啊?
- 请教一下大家有没有用C#开发过ActiveX控件?
- C#中有没有类似C++Builder中的TStringList类
- 写一个WPF项目,出现:System.StackOverflowException,不知道怎么解决
- oracle插入数据怎么避免插入重复值
網路有很多串口的教學,供你參考。
using System;
using System.Collections.Generic;
using System.Text;
using System.IO.Ports;
using System.Threading;
using System.Windows.Forms;namespace BHTC_Packing
{
public class Scanner
{
public SerialPort s_Serial;
public bool scanCOMIsOK = true;
public string s_buffer = string.Empty;
public bool readCode = false; public delegate void OnSerialNumberReceivedHandle(string sn);
public event OnSerialNumberReceivedHandle OnSerialNumberRecieved; private string data = string.Empty;
public string Data
{
get
{
return data;
}
} public bool Init()
{
try
{
if (!s_Serial.IsOpen)
{
s_Serial.Open();
scanCOMIsOK = true;
}
}
catch
{
scanCOMIsOK = false;
} return scanCOMIsOK;
} public Scanner()
{
string scanComPort = BHTC_Packing.Properties.Settings.Default.Scanner_Port;
int scanBaudRate = BHTC_Packing.Properties.Settings.Default.Scanner_BaudRate; s_Serial = new SerialPort();
s_Serial.PortName = scanComPort;
s_Serial.BaudRate = scanBaudRate;
s_Serial.DataBits = 7;
s_Serial.StopBits = StopBits.One;
s_Serial.Parity = Parity.Even;
s_Serial.Handshake = Handshake.None; s_Serial.DataReceived += new SerialDataReceivedEventHandler(s_Serial_DataReceived);
} void s_Serial_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//Thread.Sleep(500);
string temp = s_Serial.ReadExisting();
Thread.Sleep(200);
s_buffer += temp; if (s_buffer.IndexOf("\r") >= 0)
{
readCode = true;
data=s_buffer; if (OnSerialNumberRecieved != null)
{
OnSerialNumberRecieved(s_buffer.Replace("\r", string.Empty));
}
}
}
public void openScaner()
{
readCode = false;
s_buffer = string.Empty; byte[] openOrder ={ 0x16, 0x54, 0xD };
if (!s_Serial.IsOpen)
{
s_Serial.Open();
}
s_Serial.Write(openOrder, 0, 3);
//Thread.Sleep(100); }
public void closeScaner()
{
byte[] closeOrder ={ 0x16, 0x55, 0xD };
if (!s_Serial.IsOpen)
{
s_Serial.Open();
}
s_Serial.Write(closeOrder, 0, 3);
//Thread.Sleep(100);
} public bool CodeReceived
{
get
{
return readCode;
}
}
}
}