用C#一步步写串口通信

用C#一步步写串口通信

ID:37777997

大小:393.50 KB

页数:10页

时间:2019-05-31

用C#一步步写串口通信_第1页
用C#一步步写串口通信_第2页
用C#一步步写串口通信_第3页
用C#一步步写串口通信_第4页
用C#一步步写串口通信_第5页
资源描述:

《用C#一步步写串口通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、用C#一步步写串口通信  (转载) bill   收藏于:2014-10-2921:47    完全公开    被转藏:1       原文来源  PostIP:112.87.98.*     转藏到我的文章库举报  附言:1. 有网友反应我写的这篇文章还不错,索性就将它置顶了,希望对大家串口编程的学习有所帮助。2.在此吐槽一下东家CSDN的编辑框,非常难用,刚才排版还好好的,现在打开又是一团糟,对你造成的阅读不便我带csdn向您道歉!以下是正文:==========================================================

2、=====================================================================      最近在公司让用C#写一个串口调试的工具,要求向串口中输入16进制数据或字符串。下面我将这次遇到的问题和解决方法奉献出来,希望对工作中需要的朋友有所帮助!    我们来看具体的实现步骤。  公司要求实现以下几个功能:1):实现两台计算机之前的串口通信,以16进制形式和字符串两种形式传送和接收。2):根据需要设置串口通信的必要参数。3):定时发送数据。4):保存串口设置。    看着好像挺复杂,其实都是纸老虎,一戳就破

3、,前提是你敢去戳。我尽量讲的详细一些,争取说到每个知识点。   在编写程序前,需要将你要测试的COM口短接,就是收发信息都在本地计算机,短接的方式是将COM口的2、3号针接起来。COM口各针的具体作用,度娘是这么说的:COM口。记住2、3针连接一定要连接牢固,我就是因为接触不良,导致本身就不通,白白花掉了一大半天时间调试代码。下面给出主要的操作界面,如下:顺便,我将所有控件对应的代码名字也附上了,相信对初学者来说,再看下面的代码会轻松很多。控件名字命名的方法是“控件名+作用”的形式,例如“打开串口”的开关按钮,其名字是btnSwitch (btn就是button

4、的简写了)。我认为这种命名控件的方式比较好,建议大家使用,如果你有好的命名方式,希望你能告诉我!下面我们将各个功能按照从主到次的顺序逐个实现。(我分块给出代码实现,代码下载见文章最后。)一、获取计算机的COM口总个数,将它们列为控件cbSerial的候选项,并将第一个设为cbSerial的默认选项。这部分是在窗体加载时完成的。请看代码:(很多信息代码的注释里讲的很清楚,我就不赘述了。)//检查是否含有串口string[]str=SerialPort.GetPortNames();if(str==null){MessageBox.Show("本机没有串口!","E

5、rror");return;}//添加串口项目foreach(stringsinSystem.IO.Ports.SerialPort.GetPortNames()){//获取有多少个COM口cbSerial.Items.Add(s);}//串口设置默认选择项cbSerial.SelectedIndex=0;//设置cbSerial的默认选项二、“串口设置”这面我没代码编程,直接从窗体上按照串口信息设置就行。我们仅设置它们的默认选项,但这里我用到了ini文件,暂时不讲,我们先以下面形式设置默认。cbBaudRate.SelectedIndex=5;cbDataBi

6、ts.SelectedIndex=3;cbStop.SelectedIndex=0;cbParity.SelectedIndex=0;radio1.Checked=true;//发送数据的“16进制”单选按钮(这里我忘了改名,现在看着很不舒服!)rbRcvStr.Checked=true;三、打开串口在发送信息之前,我们需要根据选中的选项设置串口信息,并设置一些控件的属性,最后将串口打开。 privatevoidbtnSwitch_Click(objectsender,EventArgse)    {//sp1是全局变量。 SerialPort>privatev

7、oidbtnSwitch_Click(objectsender,EventArgse){//sp1是全局变量。SerialPort>四、发送信息因为这里涉及到字符的转换,难点在于,在发送16进制数据时,如何将文本框中的字符数据在内存中以同样的形式表现出来,例如我们输入16进制的“eb90”显示到内存中,也就是如下形式:      或输入我们想要的任何字节,如上面的“1234567890”.内存中的数据时16进制显示的,而我们输入的数据时字符串,我们需要将字符串转换为对应的16进制数据,然后将这个16进制数据转换为字节数据,用到的主要方法是:Convert.ToI

8、nt32(String,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。