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 ...
随机推荐
- ISO14443-4块传输协议的实现
ISO1444-3块传输协议主要用于应用数据的传输,其实现如下: unsigned char Apdu(unsigned char *comm,unsigned short len,unsigned ...
- js中数字计算精度
其实同样的问题在java中也有存在,同样是浮点数的问题 问题这样的: 37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一 ...
- activitie用户手册
最近公司开发流程,学习流程开发,不停看api学习.这是做软件的额...不停的学习学习!!!天天进步中! 用户手册地址:http://www.mossle.com/docs/activiti/#acti ...
- sql server 的ANSI_NULLS设置
当 SET ANSI_NULLS 为 ON 时,表示SQL语句遵循SQL-92标准.当 SET ANSI_NULLS 为 OFF 时,表示不遵从 SQL-92 标准. SQL-92 标准要求对空值(N ...
- 元素水平垂直居中(transform,margin,table-cell,jQuery)
1.水平居中 .div{ margin:0 auto; (或者 margin:auto;) width:500px; height:300px; } 2.使用margin水平垂直居中 方式一: .di ...
- Apache-Tika解析PDF文档
通常在使用爬虫时,爬取到网上的文章都是各式各样的格式处理起来比较麻烦,这里我们使用Apache-Tika来处理PDF格式的文章,如下: package com.mengyao.tika.app; im ...
- linux/hpux 添加用户
#添加用户组, 组名dev, 组id为1001groupadd -g 1001 dev #添加用户组dev,不指定组idgroupadd dev #添加用户user1, id为111, 属于dev组, ...
- 跨平台传输中使用base64来保证非ascii码字符串的完整性
首先,我们来看一个例子: byte[] b=new byte[]{2,9,43}; String ss=new String(b,"utf-8"); byte[] b1=ss.ge ...
- Sql 语句添加字段、修改字段类型、默认值语法
Sql 语句添加字段 ,) not null --修改类型 alter Table bbs ) Sql 语句修改默认值 alter table 表名 drop constraint 约束名字 --删除 ...
- Linux磁盘分区实战案例
一.查看新添加磁盘 [root@localhost /]# fdisk -l 磁盘 /dev/sda:53.7 GB, 53687091200 字节,104857600 个扇区 Units = ...