c# 串口的读写
来源:互联网 发布:python 程序 编辑:程序博客网 时间:2024/05/01 05:44
做项目正好做到了这部分,查了很多相关的资料,终于成功了,这次利用到串口主要是因为gprs模块,发现串口也分2线和四线的2线的不支持全双工,四线的才支持,所以做之前要先把硬件是否支持弄清楚。
串口的读写分为两种形式:多线程,和单线程。
多线程需要自己起一个线程运行监听串口的功能,单线程可以使用c#自带的DataReceived。
首先,c#中有using System.IO.Ports;库里面有个专门提供给串口的类SerialPort,这个类介绍:
代码使用实例;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace chuankou
{
public partial class Form1 : Form
{
SerialPort _serialPort = null;
SerialPort spSend = null;
public Form1()
{
InitializeComponent();
_serialPort = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
}
void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
this.Invoke(new EventHandler(DoUpdate));
}
private void DoUpdate(object s, EventArgs e)
{
this.textBox2.Text += _serialPort.ReadExisting();
}
private void DoUpdate1(object s, EventArgs e)
{
this.textBox4.Text += spSend.ReadExisting();
}
private void btnStart_Click(object sender, EventArgs e)
{
//_serialPort = new SerialPort();com1
//_serialPort.Handshake = Handshake.RequestToSendXOnXOff;
_serialPort.DataReceived += new SerialDataReceivedEventHandler(_serialPort_DataReceived);
_serialPort.Open();
//this.btnStart.Enabled = false;
}
private void button1_Click(object sender, EventArgs e)
{
//spSend = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
//spSend.Open();
byte[] f = new byte[200];
byte[] bytes = Encoding.UTF8.GetBytes(textBox1.Text);
//_serialPort.Write(bytes,0,textBox1.Text.Length);
_serialPort.Write(textBox1.Text);
//spSend.Close();
int i = 0;
}
private void button3_Click(object sender, EventArgs e)
{
//spSend = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
//spSend.Open();
spSend.Write(textBox3.Text);
//spSend.Close();
}
private void button4_Click(object sender, EventArgs e)
{
spSend = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
//spSend.Open();
spSend.DataReceived += new SerialDataReceivedEventHandler(spSend_DataReceived);
spSend.Open();
}
void spSend_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
this.Invoke(new EventHandler(DoUpdate1));
}
}
}
界面:
左边两个是发送,右边两个是接收,使用了串口模拟工具进行了模拟:Configure Virtual Serial Port Driver(虚拟串口驱动)
结果成功完成了全双工的串口通讯。
源代码下载http://download.csdn.net/detail/bjut_yue/5347388
- c# 串口的读写
- C# SerialPort 串口读写
- C#中的串口读写
- C# API方式串口读写
- C# API方式串口读写
- 串口读写器C#源码
- 串口的读写,文件读写
- C#读写串口类,频繁读写串口不会报错.
- 串口读写的例子
- 串口的读写
- 串口阻塞读写的局限性
- 串口的配置以及读写
- 串口的设置与读写
- mfc读写串口的数据
- C# 使用serialport 控件读写串口的大数据量解决方案 -- 以及与串口操作中常见的错误
- 串口读写
- 读写串口
- 异步读写的简单串口类
- 门内门外看招聘
- 使用HttpClient发送http请求,并解析从服务器端返回的数据
- Android提高第二十一篇之MediaPlayer播放网络视频
- c++奇怪的搞法汇总
- 如何申请Appkey
- c# 串口的读写
- 使用Vitamio打造自己的Android万能播放器(4)——本地播放(快捷搜索、数据存储)
- PHP导出excel
- 什么是ORM及ORM的详解
- 使用Vitamio打造自己的Android万能播放器(5)——在线播放(播放优酷视频)
- 使用Vitamio打造自己的Android万能播放器(7)——在线播放(下载视频)
- zoj 1409 Communication System
- 基于工作流的煤矿企业综合信息管理系统
- httpClient中文乱码问题解决(wap提交)