用C# 实现 wince 串口操作的方法
说一下用system.io.ports和API这两种方法要求详细点用具体程序例子说明要多少分给多少分大侠们帮忙啊!!!...
说一下 用system.io.ports
和API
这两种方法
要求详细点
用具体程序例子说明
要多少分给多少分
大侠们帮忙啊!!! 展开
和API
这两种方法
要求详细点
用具体程序例子说明
要多少分给多少分
大侠们帮忙啊!!! 展开
2个回答
展开全部
初始化代码:
sp = new SerialPort();
sp.PortName = config.COMPort;
sp.BaudRate = 9600;
sp.DataBits = 8;
sp.StopBits = StopBits.One;
sp.Parity = Parity.None;
sp.DataReceived += sp_dataReceive;
sp.ReadTimeout = 500;
try
{
sp.Open();
}
catch (Exception e1)
{
if (MessageBox.Show("打开串口时失败, 工作站将不能正常读码, 是否继续?", "警告", MessageBoxButtons.YesNo)
!= DialogResult.Yes)
{
Close();
}
}
数据接收事件:
public void sp_dataReceive(object sender, SerialDataReceivedEventArgs e)
{
int i = 0;
byte[] data = new byte[20];
try
{
while (i < 20) data[i++] = (byte)sp.ReadByte();
}
catch (Exception e1) { }
if (tbBSM.Enabled)
{
strBsm = Encoding.ASCII.GetString(data, 0, i);
if (strBsm.Length >= 10)
{
strBsm = strBsm.Substring(0, 10);
}
MethodInvoker mi = new MethodInvoker(updateBSM);
this.BeginInvoke(mi);
this.Invalidate();
}
}
sp = new SerialPort();
sp.PortName = config.COMPort;
sp.BaudRate = 9600;
sp.DataBits = 8;
sp.StopBits = StopBits.One;
sp.Parity = Parity.None;
sp.DataReceived += sp_dataReceive;
sp.ReadTimeout = 500;
try
{
sp.Open();
}
catch (Exception e1)
{
if (MessageBox.Show("打开串口时失败, 工作站将不能正常读码, 是否继续?", "警告", MessageBoxButtons.YesNo)
!= DialogResult.Yes)
{
Close();
}
}
数据接收事件:
public void sp_dataReceive(object sender, SerialDataReceivedEventArgs e)
{
int i = 0;
byte[] data = new byte[20];
try
{
while (i < 20) data[i++] = (byte)sp.ReadByte();
}
catch (Exception e1) { }
if (tbBSM.Enabled)
{
strBsm = Encoding.ASCII.GetString(data, 0, i);
if (strBsm.Length >= 10)
{
strBsm = strBsm.Substring(0, 10);
}
MethodInvoker mi = new MethodInvoker(updateBSM);
this.BeginInvoke(mi);
this.Invalidate();
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询