首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于C#串口编程有关问题

2012-12-25 
关于C#串口编程问题?以前没有接触过这个串口问题,目前公司开发的客房控制系统需要用到串口。请教大家怎么去

关于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);
                }




然后要发送时,serialPort1.Write("123");这样就行了.
接收的话,serialPort1的属性窗口,事件表里,响应DataReceived事件就行了.
至于 DataReceived 函数要怎么写,其实1楼的高手,早就把串口的使用发了网址给你.
你看他的代码就行了.不要等高手来了,他的网址就可以解决你的问题.
我的代码只是比1楼的多了个catch(UnauthorizedAccessException ex)而已.
他网址里关于串口的代码都很全,你去参考一下吧.

热点排行