日期:2014-05-17  浏览次数:20844 次

关于C#串口编程问题?
以前没有接触过这个串口问题,目前公司开发的客房控制系统需要用到串口。请教大家怎么去编写串口通信的代码
<我用的是Winform开发的,界面都弄好了,关键是怎么和硬件进行数据的接受和发送>


通信格式: 9600 N 0 1  
功能: 高三位类型低五位具体功能<例如:001(客房卡)+00001(服务请求)>


越详细约好,有代码的话,希望各位个注释协商。  
小弟先谢过,能得到大侠们帮助,用点小分来答谢各位。
------解决方案--------------------
C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。 
C# 串口操作系列(2) -- 入门篇,为什么我的串口程序在关闭串口时候会死锁 ? 
C# 串口操作系列(3) -- 协议篇,二进制协议数据解析 
------解决方案--------------------
自己收集的一些资料,希望对你有帮助!
1、在C#中使用SerialPort类实现串口通信 遇到多线程问题 
http://blog.21ic.com/user1/1949/archives/2010/66360.html
2、C#基于事件驱动的多串口多线程串口通讯软件架构设计
http://hi.baidu.com/rambochow/blog/item/b662cfc417887da58326ac31.html
3、c#编写串口通讯代码 多线程实现
http://download.chinaprj.cn/detail/iDbsTbrr
4、[转载]C#中串口通信编程
http://blog.pfan.cn/sword2008/38218.html

------解决方案--------------------
不是高手,只是刚好用过C#WinForm的串口.
首先,找找ToolBox处,有个叫SerialPort的控件,拖到窗里,加入后就行.

在Form1处应该会加入了一个叫 serialPort1 的变量,对于楼主说的 9600 N 8 1,可以在serialPort1处的属性里设好就行,很简单的,也可以在代码里设,我自己是这样写的,打开串口的代码.

                try
                {
                    serialPort1.PortName = "COM1";
                    serialPort1.BaudRate = 115200;
                    serialPort1.Parity = System.IO.Ports.Parity.None;
                    serialPort1.DataBits = 8;
                    serialPort1.StopBits = System.IO.Ports.StopBits.One;
                    serialPort1.Open();
                }
                catch(UnauthorizedAccessException ex)//被别的程序打开了串口
                {
                    MessageBox.Show(ex.Message + " Maybe another application is using this COM", "COM open failed!",
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                catch (Exception ex)//找不到串口或其他问题
                {
                    MessageBox.Show(ex.Message);
      &