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的通信的更多相关文章

  1. C#中使用SendMessage进行进程通信的实例

    原文:C#中使用SendMessage进行进程通信的实例 1 新建解决方案SendMessageSecondExample 在解决方案下面新建两个项目:Sender和Receiver,两者的输出类型均 ...

  2. vue2.0s中eventBus实现兄弟组件通信

    在vue1.0中,组件之间的通信主要通过vm.$dispatch沿着父链向上传播和用vm.$broadcast向下广播来实现.然而在vue2.0中,已经废除了这种用法. vuex加入后,对组件之间的通 ...

  3. React中父子组件间的通信问题

    1.https://blog.csdn.net/sinat_17775997/article/details/59103173 (React中父子组件间的通信问题)

  4. PIC18F45K80串口1和串口2异步收发通信实例

    PIC18F45K80串口1和串口2异步收发通信实例 一:配置串口1初始化函数 首先打开技术手册,查看异步串口的操作流程以及配置. 需要将串口对应引脚的方向寄存器设置为输入

  5. C# 中串口通信 serialport1.DataReceived 函数无法触发或者出发延时等等问题解决方法

    以前这个问题困扰我多天最后查资料一大堆,最后最终攻克了,看到非常多人做C#串口都遇到相同的问题,所以写一篇博文,以便学习交流. 一定要在com实例化的时候设置ReceivedBytesThreshol ...

  6. (转载)用vs2010开发基于VC++的MFC 串口通信一*****两台电脑同一个串口号之间的通信

    此文章以visual C++数据採集与串口通信測控应用实战为參考教程 此文章适合VC++串口通信入门 一.页面布局及加入控件 1, 安装好vs2010如图 2, 新建一个基于VC++的MFC项目com ...

  7. 网络中两台主机的通信过程(TCP)

    两台主机通信有两种情况:1.在同一网段中 2.不在同一网段中 (1.)在同一网段的通信过程 主机在应用层上的操作: TCP/IP协议上tcp的端口对应的各种应用程序,客户机要访问某个应用程序就会要求打 ...

  8. unity3d中串口的使用

    工作中遇到了串口的问题,通过查资料&实验写出了下面代码: 关于串口的代码我在网上看了好多,一种是用事件来做,另外一种使用线程来做:(经过试验,unity无法用串口自带的事件进行数据读取): 看 ...

  9. android中四大组件之间相互通信

    好久没有写有关android有关的博客了,今天主要来谈一谈android中四大组件.首先,接触android的人,都应该知道android中有四大组件,activity,service,broadca ...

随机推荐

  1. CLOUDSTACK HA功能,测试成功

    要注意VM HA和HOST HA两个级别的区别.并且要整合.

  2. h.264 fast,1/2,1/4像素运动估计与插值处理

    Hadamard Transform 在1/2,1/4像素运动估计这一阶段中,对于像素残差,可以选择采用哈达玛变换来代替离散余弦变换进行高低频的分离. 优点:哈达玛矩阵全是+1,-1,因此只需要进行加 ...

  3. EMV卡复位应答的时间特性 ---ISO7816协议

    1.冷复位的时间特性 图1 如图1所示: T0为200clk 从T0结束到RST变为高电平为40000-45000个clock 从RST变为高电平后,卡片必须在400-40000个clock之间应答, ...

  4. Spring Data Elasticsearch

    项目清单   elasticsearch服务下载包括其中插件和分词   http://download.csdn.net/detail/u014201191/8809619   项目源码   资源文件 ...

  5. 【转】Android的权限permission

    原文网址:http://blog.csdn.net/nei504293736/article/details/6974599 <uses-permission android:name=&quo ...

  6. EditText输入长度动态控制,最大长度为16位,小数点后面最大为2位,输入整数只能为13位

    首先在xml 中把inputType设置为numberDecimal (包含小数点)然后在把maxLeng设置为16 package com.example.numbertest; import an ...

  7. SQL 截图

  8. 【转载】B树、B-树、B+树、B*树都是什么

    1. B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如 ...

  9. java的内部类及匿名内部类

    在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类 内部类和外层封装它的类之间存在逻辑上的所属关系 Inner class一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称 ...

  10. Selenium 初见

    Selenium名字的来源 在这里,我还想说一下关于Selenium名字的来源,很有意思的: >:Selenium的中文名为“硒”,是一种化学元素的名字,它对汞 (Mercury)有天然的解毒作 ...