C#串口编程书
麻烦懂的朋友给推荐本C#串口编程的书籍。我是C#新手。看了几本书。发现都不怎么好。
很多东西还是不懂。
有懂的哥哥姐姐们。推荐几本好书。
希望能看完书籍后 能自己写点东西。 --------------------编程问答-------------------- 网上有个C#串口的类,好好琢磨下,这点东西,就不必看书了。 --------------------编程问答-------------------- goole一下C# 串口,什么都有了,串口操作也不是很难,多试几下就行了 --------------------编程问答-------------------- 学习中 --------------------编程问答--------------------
--------------------编程问答-------------------- 楼主比较年轻,还没有到了可以举一反三的时候,
using System.IO.Ports;
public System.IO.Ports.SerialPort spComPort;
是麻烦点了。
--------------------编程问答-------------------- .NET 2.0之后的SerialPort组件来开发串口通讯其实已经很简单了,只要合理使用其事件驱动的机制,各种复杂的通讯需求基本上都可以很好解决。
下面是.NET2.0后SerialPort组件通信收到的技术要点,你可以修改成你所需要的代码。
1).首先,SerialPort的ReceivedBytesThreshold先设置成1,表示只要有1个字符送达端口时便触发DataReceived事件
(2).当DataReceived触发时,先把ReceivedBytesThreshold设置成一个比较大的值,达到读取本次端口数据时,不再触发DataReceived.
(3).循环读取端口中的数据,直至读完。
(4).移除读取数据中的非法字符。
(5).触发一个后台线程处理收到的数据。
(6).在finally中把ReceivedBytesThreshold重置回1
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
if (sender.GetType() != typeof(System.IO.Ports.SerialPort))
{
return;
}
string strReceive = string.Empty;
string strCollect = string.Empty;
System.IO.Ports.SerialPort comPort = (System.IO.Ports.SerialPort)sender;
try
{
comPort.ReceivedBytesThreshold = comPort.ReadBufferSize;
while (true)
{
strReceive = comPort.ReadExisting();
if (string.Equals(strReceive, string.Empty))
{
break;
}
else
{
strCollect += strReceive;
Application.DoEvents();
Thread.Sleep(100);
}
}
strCollect = strCollect.Replace("\0", string.Empty);
strCollect = strCollect.Replace("\r\n", string.Empty);
strCollect = strCollect.Replace("\r", string.Empty);
strCollect = strCollect.Replace("\n", string.Empty);
if (!this.bIsHandleCom)
{
this.bIsHandleCom = true;
mReceiveData = strCollect;
if (ThreadReceiveParser != null && !ThreadReceiveParser.IsAlive) //处理收到数据的线程
{
ThreadReceiveParser.Start();
}
}
}
catch (Exception ex)
{
MessageBox.Show(this, ex.ToString(), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
comPort.ReceivedBytesThreshold = 1;
}
} --------------------编程问答-------------------- 哇 串口 第一次听说 又学习了 我也找资料去 --------------------编程问答--------------------
这个串口 真的到不用看书的地步了? --------------------编程问答--------------------
有效。。 谢谢 --------------------编程问答-------------------- 不管是RS232还是RS485
新手的话serialPort这个控件可以基本帮你解决问题,如果想了解深层次的话这个可以看下C++/C#封装的类,第三方控件MSCOMM也不错。
网上有最简单的例子:
(1)新建一个项目,命名为Ex13_01,默认窗体为Form1。
(2)在Form1窗体中,主要添加两个Button控件,分别用于执行发送数据和接受数据,添加两个TextBox控件,用于输入发送数据和显示接收数据。
(3)主要程序代码。
private void button1_Click(object sender, EventArgs e)
{
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.Open();
byte[] data = Encoding.Unicode.GetBytes(textBox1.Text);
string str = Convert.ToBase64String(data);
serialPort1.WriteLine(str);
MessageBox.Show("数据发送成功!","系统提示");
}
private void button2_Click(object sender, EventArgs e)
{
byte[] data = Convert.FromBase64String(serialPort1.ReadLine());
textBox2.Text = Encoding.Unicode.GetString(data);
serialPort1.Close();
MessageBox.Show("数据接收成功!","系统提示");
}
//*********************************************************************
以后精通后了解串口通讯就了解主要有分为应答模式,响应模式。
应带模式:就是发送后等待一定时间后接收,根据需要判断接收数据是否有效。(上下位机控制使用比较多)
响应模式:就是缓冲区内有数据就响应datarecivice事件,接收处理。
另外建议连接下硬件上串口的分布,基本就三根线有用,2-3短接就是自收自发......
--------------------编程问答-------------------- 研究下,可以的 --------------------编程问答-------------------- 关于串口通信的VB的比较多,找找VB的了解了一点原理在用C#做,我就是这么搞滴。 --------------------编程问答-------------------- --------------------编程问答-------------------- 不用买书看,MSDN就够你的了。SerialPort完全够你的了。 --------------------编程问答-------------------- 恼火恼火。在网上不停的看吧 --------------------编程问答--------------------
补充:.NET技术 , C#