C#中串口与Modem的通信
2007-08-20 09:52643人阅读评论(8)收藏举报
最近一段时间,试验了串口的数据传输.在C#中,其实有一个很好的类SerialPort使串口间的通信变得简单而且好控制.
一.下面给出SerialPort的基本属性:
serialPort1.PortName = "COM1"; //打开指定串口的端口,也可以是COM2.
serialPort1.BaudRate =
9600; //波特率,这是通信中的一术语,可以查相关资料,一般都是9600.
serialPort1.DataBits =
8; //传输数据位,一次传几位二进制数据.
serialPort1.Parity =
Parity.None; //校验,它分为三种,一种奇校验,一种偶校验,还有一种是无校验.
serialPort1.StopBits =
StopBits.One; //停止位.
serialPort1.DtrEnable = true; //是在开始时,启用数据终端.它与Modem上的TR信号灯对应,如果开始此灯不亮,则无法传输数据,所以在Modem的通信中,应该加上这句.让终端设备准备好.
serialPort1.RtsEnable = true; //这个是请求发送.
serialPort1.Encoding =
Encoding.ASCII; //因为数据发送时,是以字节数组形式发送所以可以定义好编码.
编码有:ASCII(只能传输英文),Unicode(可以传输中英文), UT8(中英文).根据自己的情况而定.
但要说明一点,要是你用write(byte[],int
start,int length)的话,最好自己确定编码,而不用serialPort1.Encoding
= Encoding.ASCII进行设置.如:
当你要传输
string strSend="hackenliu";
则先将strSend转为byte[]形式.如下:
byte
[]data= Encoding.ASCII.GetBytes(strSend);
serialport1.write(data,0,data.length); //发送数据了.
在Encoding下,可以选用上面的ASCII,也可以是Uicode,或是UT8.不过,一定要注意,接收双方的编码应该一样.
二.打开串口:
if (serialPort1.IsOpen)
{
serialPort1.Close();
serialPort1.Open();
}
else
serialPort1.Open();
lblShow.Text = "串口已打开";
三.发送数据:
serialPort类提供了很多的发送数据函数.有write(param),还有writeLine();
四.接收数据:
添加serialport类的事件
private
void serialPort1_DataReceived(object sender,
System.IO.Ports.SerialDataReceivedEventArgs e)
当有数据时,它会自动接收的.
C#中串口与Modem的通信的更多相关文章
- C#中使用SendMessage进行进程通信的实例
原文:C#中使用SendMessage进行进程通信的实例 1 新建解决方案SendMessageSecondExample 在解决方案下面新建两个项目:Sender和Receiver,两者的输出类型均 ...
- vue2.0s中eventBus实现兄弟组件通信
在vue1.0中,组件之间的通信主要通过vm.$dispatch沿着父链向上传播和用vm.$broadcast向下广播来实现.然而在vue2.0中,已经废除了这种用法. vuex加入后,对组件之间的通 ...
- React中父子组件间的通信问题
1.https://blog.csdn.net/sinat_17775997/article/details/59103173 (React中父子组件间的通信问题)
- PIC18F45K80串口1和串口2异步收发通信实例
PIC18F45K80串口1和串口2异步收发通信实例 一:配置串口1初始化函数 首先打开技术手册,查看异步串口的操作流程以及配置. 需要将串口对应引脚的方向寄存器设置为输入
- C# 中串口通信 serialport1.DataReceived 函数无法触发或者出发延时等等问题解决方法
以前这个问题困扰我多天最后查资料一大堆,最后最终攻克了,看到非常多人做C#串口都遇到相同的问题,所以写一篇博文,以便学习交流. 一定要在com实例化的时候设置ReceivedBytesThreshol ...
- (转载)用vs2010开发基于VC++的MFC 串口通信一*****两台电脑同一个串口号之间的通信
此文章以visual C++数据採集与串口通信測控应用实战为參考教程 此文章适合VC++串口通信入门 一.页面布局及加入控件 1, 安装好vs2010如图 2, 新建一个基于VC++的MFC项目com ...
- 网络中两台主机的通信过程(TCP)
两台主机通信有两种情况:1.在同一网段中 2.不在同一网段中 (1.)在同一网段的通信过程 主机在应用层上的操作: TCP/IP协议上tcp的端口对应的各种应用程序,客户机要访问某个应用程序就会要求打 ...
- unity3d中串口的使用
工作中遇到了串口的问题,通过查资料&实验写出了下面代码: 关于串口的代码我在网上看了好多,一种是用事件来做,另外一种使用线程来做:(经过试验,unity无法用串口自带的事件进行数据读取): 看 ...
- android中四大组件之间相互通信
好久没有写有关android有关的博客了,今天主要来谈一谈android中四大组件.首先,接触android的人,都应该知道android中有四大组件,activity,service,broadca ...
随机推荐
- CENTOS纯手工安装LAMP+PHPMYADMIN
现在,安装这些确实越来越方便了. Installing Apache2 With PHP5 And MySQL Support On CentOS 6.4 (LAMP) 参考URL: http://w ...
- [项目构建 十三]babasport Nginx负载均衡的详细配置及使用案例详解.
在这里再次说明下, 这个项目是从网上 找到的一套学习资料, 自己在 空闲时间学习了这些东西. 这里面的code当然会有很多不完善的地方, 但是确实也能学到很多新东西.感谢看过这一些列博文和评论的小伙伴 ...
- cursor pin S wait on X
cursor pin S wait on X: 这是10.2版本提出的mutex(互斥)机制用来解决library cache bin latch争夺问题引入的新事件,是否使用这种机制受到隐含参数_k ...
- 【转】Linux I2C设备驱动编写(一)
原文网址:http://www.cnblogs.com/biglucky/p/4059576.html 在Linux驱动中I2C系统中主要包含以下几个成员: I2C adapter 即I2C适配器 I ...
- CentOS安装搜狗词库
中文输入使用ibus-pinyin. 在ibus-pinyin里使用搜狗词库 # wget http://hslinuxextra.googlecode.com/files/sougou-phrase ...
- Android之路-------Activity的详解
前言 由于接近放假,公司在赶项目所以前段LP比较忙,没什么时间总结和写博客,只是准备睡觉的时候看看书,每天看的不算多,大概10多页左右吧,不过每天坚持如此的话那也是一个庞大的数字. 今天LP的任务完成 ...
- String源码
/* * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETA ...
- PHPExcell单元格中某些时间格式的内容不能正确获得的处理办法
今天在写导入功能的时候某个时间格式的单元格内容不能正确获得,得出的是一串非时间戳的数字. 此时可以使用PHPExcell中自带的方法进行处理:PHPExcel_Shared_Date::ExcelTo ...
- powershell利用winform批量执行tsql语句
#加载.net的winform模块 [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") $app= ...
- iOS键盘覆盖输入框的处理.doc
在一个多项输入界面上,会有多个UITextfield类型的输入框.为了滚动方面,我们会将他们一一添加到UITableView的cell中,从而组成一个可以上下滑动的数据输入界面. 但是字符输入是通过系 ...