c# 串口通信, c# 串口通信,打开串口报错:不支持请求 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public event EventHandler<CardEventArgs> VipCardSlide; private string _cardCache; private bool _enableReadCard; private readonly System.Timers.Timer _tmrVerifyCard; readonly System.IO.Ports.SerialPort _serialCardReader; private readonly string _cardReaderPortName; public SerialCardReader() { //读卡参数 _cardCache = string.Empty; _enableReadCard = true; _tmrVerifyCard = new System.Timers.Timer(); _tmrVerifyCard.Elapsed += TmrVerifyCardElapsed; _tmrVerifyCard.Interval = 1500; _tmrVerifyCard.Enabled = false; _cardReaderPortName ="COM3"; _serialCardReader = new System.IO.Ports.SerialPort(); _serialCardReader.DataReceived += SerialCardReaderDataReceived; } public bool Open() { try { InitCardReaderPort(); return true; } catch { return false; } } public bool Reset() { try { return CloseCardReaderPort(); } catch { return false; } } public bool Close() { try { CloseCardReaderPort(); return true; } catch { return false; } } //启动一个延时事件 //定时检查,异步 private void TmrVerifyCardElapsed(object source, ElapsedEventArgs e) { _tmrVerifyCard.Enabled = false; _enableReadCard = false; //string CardNumber = ReadCard.GetCardNumberFromCardCache(CardCache); //showInfo(CardCache); //TxtLogExecute.AddTxtLog(CardCache); int splitor = _cardCache.IndexOf("="); if (splitor > -1) { string originalCache = _cardCache; _cardCache = _cardCache.Substring(0, splitor); string remainCache = originalCache.Substring(splitor + 1); if(_cardCache.StartsWith("0")) { splitor = remainCache.IndexOf("="); if (splitor > -1)// _cardCache = remainCache.Substring(0, splitor); else _cardCache = _cardCache.Substring(9, 18); } } _cardCache = _cardCache.Trim('?'); if (_cardCache.Trim().Length > 0) { var handler = this.VipCardSlide; if (handler != null) { //GoProgress(); //ShowTouchScreenEx("01"); //GoPageCall("01", ""); var ee = new CardEventArgs(NumberGenerationType.BankCard, _cardCache); handler(this, ee); } } _cardCache = string.Empty; } #region 串口操作 //初始化串口 private bool InitCardReaderPort() { _serialCardReader.PortName = _cardReaderPortName; _serialCardReader.BaudRate =2400; _serialCardReader.Parity = System.IO.Ports.Parity.None; _serialCardReader.StopBits = System.IO.Ports.StopBits.One; _serialCardReader.Handshake = System.IO.Ports.Handshake.RequestToSend; _serialCardReader.DataBits = 8; // _serialCardReader.ReadTimeout = 1000; // _serialCardReader.WriteBufferSize = 2048; try { if (_serialCardReader.IsOpen) { _serialCardReader.Close(); _serialCardReader.Open(); } else { _serialCardReader.Open(); } return true; } catch { return false; } } c# 如何实现串口通信读取数据 关于winForm 控件间的消息传递 C#测试软件TestDriven.NET monthcalendar,如何不显示星期, 各位路过走光的大侠们,有没有人做过字符模糊匹配算法的,请进来指点一下小弟~~,不胜感激... 请教:消息队列跨机器发消息 或者 如何创建“公共队列” 注册表的问题 .net转 SAP开发,大家觉得如何 为什么我的c#程序运行这么慢呢? DataGrid,DataView的两个问题. COM操作Excel,提示不能操作只读文件“temp.xlsx” 怎么样才可以在vs2010 中看msdn
private bool _enableReadCard;
private readonly System.Timers.Timer _tmrVerifyCard;
readonly System.IO.Ports.SerialPort _serialCardReader;
private readonly string _cardReaderPortName;
public SerialCardReader()
{
//读卡参数
_cardCache = string.Empty;
_enableReadCard = true; _tmrVerifyCard = new System.Timers.Timer(); _tmrVerifyCard.Elapsed += TmrVerifyCardElapsed; _tmrVerifyCard.Interval = 1500; _tmrVerifyCard.Enabled = false; _cardReaderPortName ="COM3";
_serialCardReader = new System.IO.Ports.SerialPort();
_serialCardReader.DataReceived += SerialCardReaderDataReceived;
} public bool Open()
{
try
{
InitCardReaderPort();
return true;
}
catch
{
return false;
}
} public bool Reset()
{
try
{
return CloseCardReaderPort();
}
catch
{
return false;
}
} public bool Close()
{
try
{
CloseCardReaderPort();
return true;
}
catch
{
return false;
} } //启动一个延时事件
//定时检查,异步
private void TmrVerifyCardElapsed(object source, ElapsedEventArgs e)
{
_tmrVerifyCard.Enabled = false; _enableReadCard = false;
//string CardNumber = ReadCard.GetCardNumberFromCardCache(CardCache);
//showInfo(CardCache);
//TxtLogExecute.AddTxtLog(CardCache); int splitor = _cardCache.IndexOf("=");
if (splitor > -1)
{
string originalCache = _cardCache;
_cardCache = _cardCache.Substring(0, splitor);
string remainCache = originalCache.Substring(splitor + 1); if(_cardCache.StartsWith("0")) {
splitor = remainCache.IndexOf("=");
if (splitor > -1)//
_cardCache = remainCache.Substring(0, splitor);
else _cardCache = _cardCache.Substring(9, 18);
}
}
_cardCache = _cardCache.Trim('?'); if (_cardCache.Trim().Length > 0)
{
var handler = this.VipCardSlide;
if (handler != null)
{
//GoProgress();
//ShowTouchScreenEx("01");
//GoPageCall("01", "");
var ee = new CardEventArgs(NumberGenerationType.BankCard, _cardCache);
handler(this, ee);
}
} _cardCache = string.Empty;
} #region 串口操作
//初始化串口
private bool InitCardReaderPort()
{
_serialCardReader.PortName = _cardReaderPortName;
_serialCardReader.BaudRate =2400;
_serialCardReader.Parity = System.IO.Ports.Parity.None;
_serialCardReader.StopBits = System.IO.Ports.StopBits.One;
_serialCardReader.Handshake = System.IO.Ports.Handshake.RequestToSend;
_serialCardReader.DataBits = 8;
// _serialCardReader.ReadTimeout = 1000;
// _serialCardReader.WriteBufferSize = 2048;
try
{
if (_serialCardReader.IsOpen)
{
_serialCardReader.Close();
_serialCardReader.Open();
}
else
{
_serialCardReader.Open();
}
return true;
}
catch
{
return false;
}
}