用C#一步步写串口通信WORD

上传人:W**** 文档编号:163385429 上传时间:2021-01-24 格式:DOC 页数:25 大小:237.50KB
返回 下载 相关 举报
用C#一步步写串口通信WORD_第1页
第1页 / 共25页
用C#一步步写串口通信WORD_第2页
第2页 / 共25页
用C#一步步写串口通信WORD_第3页
第3页 / 共25页
用C#一步步写串口通信WORD_第4页
第4页 / 共25页
用C#一步步写串口通信WORD_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《用C#一步步写串口通信WORD》由会员分享,可在线阅读,更多相关《用C#一步步写串口通信WORD(25页珍藏版)》请在金锄头文库上搜索。

1、 我们来看具体的实现步骤。 公司要求实现以下几个功能:1):实现两台计算机之前的串口通信,以16进制形式和字符串两种形式传送和接收。2):根据需要设置串口通信的必要参数。3):定时发送数据。4):保存串口设置。 看着好像挺复杂,其实都是纸老虎,一戳就破,前提是你敢去戳。我尽量讲的详细一些,争取说到每个知识点。 在编写程序前,需要将你要测试的COM口短接,就是收发信息都在本地计算机,短接的方式是将COM口的2、3号针接起来。COM口各针的具体作用,度娘是这么说的:COM口。记住2、3针连接一定要连接牢固,我就是因为接触不良,导致本身就不通,白白花掉了一大半天时间调试代码。下面给出主要的操作界面,

2、如下:顺便,我将所有控件对应的代码名字也附上了,相信对初学者来说,再看下面的代码会轻松很多。控件名字命名的方法是“控件名+作用”的形式,例如“打开串口”的开关按钮,其名字是btnSwitch (btn就是button的简写了)。我认为这种命名控件的方式比较好,建议大家使用,如果你有好的命名方式,希望你能告诉我!下面我们将各个功能按照从主到次的顺序逐个实现。(我分块给出代码实现,详细代码见链接:C#串口通信工具)一、获取计算机的COM口总个数,将它们列为控件cbSerial的候选项,并将第一个设为cbSerial的默认选项。这部分是在窗体加载时完成的。请看代码:(很多信息代码的注释里讲的很清楚,

3、我就不赘述了。)csharpview plaincopyprint?1. /检查是否含有串口2. stringstr=SerialPort.GetPortNames();3. if(str=null)4. 5. MessageBox.Show(本机没有串口!,Error);6. return;7. 8. 9. /添加串口项目10. foreach(stringsinSystem.IO.Ports.SerialPort.GetPortNames()11. /获取有多少个COM口12. cbSerial.Items.Add(s);13. 14. 15. /串口设置默认选择项16. cbSerial

4、.SelectedIndex=0;/设置cbSerial的默认选项二、“串口设置”这面我没代码编程,直接从窗体上按照串口信息设置就行。我们仅设置它们的默认选项,但这里我用到了ini文件,暂时不讲,我们先以下面形式设置默认。csharpview plaincopyprint?1. cbBaudRate.SelectedIndex=5;2. cbDataBits.SelectedIndex=3;3. cbStop.SelectedIndex=0;4. cbParity.SelectedIndex=0;5. radio1.Checked=true;/发送数据的“16进制”单选按钮(这里我忘了改名,现

5、在看着很不舒服!)6. rbRcvStr.Checked=true;三、打开串口在发送信息之前,我们需要根据选中的选项设置串口信息,并设置一些控件的属性,最后将串口打开。csharpview plaincopyprint?1. privatevoidbtnSwitch_Click(objectsender,EventArgse)2. 3. /sp1是全局变量。SerialPortsp1=newSerialPort();4. if(!sp1.IsOpen)5. 6. try7. 8. /设置串口号9. stringserialName=cbSerial.SelectedItem.ToString

6、();10. sp1.PortName=serialName;11. 12. /设置各“串口设置”13. stringstrBaudRate=cbBaudRate.Text;14. stringstrDateBits=cbDataBits.Text;15. stringstrStopBits=cbStop.Text;16. Int32iBaudRate=Convert.ToInt32(strBaudRate);17. Int32iDateBits=Convert.ToInt32(strDateBits);18. 19. sp1.BaudRate=iBaudRate;/波特率20. sp1.Da

7、taBits=iDateBits;/数据位21. switch(cbStop.Text)/停止位22. 23. case1:24. sp1.StopBits=StopBits.One;25. break;26. case1.5:27. sp1.StopBits=StopBits.OnePointFive;28. break;29. case2:30. sp1.StopBits=StopBits.Two;31. break;32. default:33. MessageBox.Show(Error:参数不正确!,Error);34. break;35. 36. switch(cbParity.T

8、ext)/校验位37. 38. case无:39. sp1.Parity=Parity.None;40. break;41. case奇校验:42. sp1.Parity=Parity.Odd;43. break;44. case偶校验:45. sp1.Parity=Parity.Even;46. break;47. default:48. MessageBox.Show(Error:参数不正确!,Error);49. break;50. 51. 52. if(sp1.IsOpen=true)/如果打开状态,则先关闭一下53. 54. sp1.Close();55. 56. /状态栏设置57. tsSpNum.Text=串口号:+sp1.PortName+|;58. tsBaudRate.Text=波特率:+sp1.BaudRate+|;59. tsDataBits.Text=数据位:+sp1.DataBits+|;60. tsStopBits.Text=停止位:+sp1.StopBits+|;61. tsParity.Text=校验位:+sp1.Parity+|;62. 63. /设置必要控件不可用64. cbSerial.Enabled=false;65. cbBaudRate.Enabled=false;66. cbDataBits.Enabled=false;67.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号