社区
C#
帖子详情
SerialPort与三菱PLC通讯的问题(c# )
kltyp00
2008-12-20 12:30:58
本人正在用c#做一个与三菱PLC通讯的程序,用SerialPort类的DataReceived的事件接收的数据都分成几段。请问如何一次接收所有的数据。
...全文
608
10
打赏
收藏
SerialPort与三菱PLC通讯的问题(c# )
本人正在用c#做一个与三菱PLC通讯的程序,用SerialPort类的DataReceived的事件接收的数据都分成几段。请问如何一次接收所有的数据。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sky3010
2012-02-22
打赏
举报
回复
正准备做同样的事情,密切关注中
fsdyc
2009-10-08
打赏
举报
回复
密切关注。。。
kltyp00
2008-12-26
打赏
举报
回复
代码大致如下,希望大家有更好的建议
private StringBuilder sb_Receive = new StringBuilder();
//定时发送数据 每1500ms发送一次。dsSendPool是dataset,储存发送数据。用LoadDefaut()从XML读取数据到DATASET
private void timersend_Tick(object sender, EventArgs e)
{
dsSendPool.Tables[0].Clear();
//LoadDefaut()从XML读取数据到DATASET
LoadDefaut();
int PoolRows;
PoolRows = dsSendPool.Tables[0].Rows.Count;
//SendData()为发送数据
SendData(dsSendPool.Tables[0].Rows[i_rows]["SendData"].ToString());
i_rows++;
if (i_rows == PoolRows)
{
i_rows = 0;
}
//延迟150毫秒
timer_Receive.Interval = 150;
timer_Receive.Enabled = true;
}
//发送后0.15秒接收
private void timer_Receive_Tick(object sender, EventArgs e)
{
//处理sb_Receive.ToString()数据
//清空sb_Receive
timer_Receive.Enabled = false;
int length = sb_Receive.Length;
sb_Receive.Remove(0, length);
}
/// <summary>
/// 发送数据到串口
/// </summary>
private void SendData(string SendText)
{
if (ComPort.IsOpen)
{
try
{
// 转换用户十六进制数据到字节数组
byte[] data = HexStringToByteArray(SendText);
// 发送数据到串口
ComPort.Write(data, 0, data.Length);
}
catch (FormatException)
{
//错误处理
}
}
}
//接收数据
/// <summary>
/// 接收数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
// 获取字节长度
int bytes = ComPort.BytesToRead;
// 创建字节数组
byte[] buffer = new byte[bytes];
// 读取缓冲区的数据到数组
ComPort.Read(buffer, 0, bytes);
//整理接收数据
sb_Receive.Append(ByteArrayToHexString(buffer));
}
//十六进制转换字节数组
/// <summary>
/// 十六进制转换字节数组
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
private byte[] HexStringToByteArray(string s)
{
s = s.Replace(" ", "");
byte[] buffer = new byte[s.Length / 2];
for (int i = 0; i < s.Length; i += 2)
buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
return buffer;
}
kltyp00
2008-12-26
打赏
举报
回复
我现在使用的是6楼withcsharp的方法,时间设定在0.15秒,但始终让人不放心。
我用的是FX3U,接收的数据中,倒数第三位是03,最后两位是和校验代码。
JustLovePro
2008-12-25
打赏
举报
回复
http://blog.csdn.net/JustLovePro/archive/2008/12/15/3523348.aspx
我不懂电脑
2008-12-25
打赏
举报
回复
因为串口是流式通信,所以需要自己定义应用协议处理封包问题。收到数据大小是不一定的。
uglywolf
2008-12-25
打赏
举报
回复
这个与你设置的接收长度有关吧
你可以判断一下子,如果收到了PLC的结束字符,你就处理一下,没有到就继续往里面加.
我是先把PLC发送给上位机的东西保存到一个bit数组中,然后赋给stringbuilder
withcsharp
2008-12-25
打赏
举报
回复
1。
在事件 中 累加
用时钟 判断
如果 0。1秒 内 没有新的数据 就 当作 一个完整包
2。
根据数据协议判断组合包
kltyp00
2008-12-24
打赏
举报
回复
用用SerialPort类的DataReceived的事件,请看清楚。
happychou
2008-12-20
打赏
举报
回复
关注。。。。
楼主的通信是怎么写的啊?是用Modbus吗?
学习。。
C#
与
三菱
PLC
串口通信
C#
与
三菱
PLC
串口通信,
Se
ria
l
Port
控件实现。
C#
Se
ria
l
Port
读写
三菱
FX系列
PLC
C#
用
Se
ria
l
Port
控件读写
三菱
FX
PLC
程序。
C#
FX
PLC
Se
ria
l
Port
控件
C#
用
Se
ria
l
Port
控件 与
三菱
PLC
通讯
源码
Visual
C#
.NET串口通信及测控应用典型实例.(电子工业.李江全.邓红涛.刘巧.李伟).part3
书名:《Visual
C#
.NET串口通信及测控应用典型实例》(电子工业出版社.李江全.邓红涛.刘巧.李伟) PDF格式扫描版,全书分为8章,共369页。2012年5月出版。 全书压缩打包成3部分,这是第3部分 内容简介 本书从工程应用的角度出发,通过8个典型应用实例,包括PC与PC、PC与单片机、PC与
PLC
、PC与远程I/O模块、PC与智能仪器、PC与无线数传模块、Pc与USB数据采集模块等组成的测控系统,利用
Se
ria
l
Port
控件和MSComm控件编写
C#
.NET串口通信程序,并对计算机测控系统中的4类典型应用((模拟量输入(AI)、模拟量输出(AO)、数字量输入(DI)和数字量输出(DO)的程序设计方法进行了详细的讲解。 目 录 第1章 PC与PC串口通信 1.1 串口通信概述 1.1.1 串口通信的基本概念 1.1.2 RS-232C接口标准 1.1.3 RS-422/485接口标准 1.1.4 串口通信线路连接 1.1.5 PC中的串行端口 1.1.6 虚拟串口的使用 1.2 VC++.NET串行通信控件与API函数 1.2.1 MSComm控件的使用 1.2.2
Se
ria
l
Port
控件的使用 1.2.3 串行通信API函数 1.3 PC与PC串口通信实例 1.3.1 两台PC串口通信 1.3.2 一台PC双串口互通信 第2章 PC与单片机串口通信 2.1 典型单片机开发板简介 2.1.1 单片机测控系统的组成 2.1.2 单片机开发板B的功能 2.1.3 单片机开发板B的主要电路 2.2 PC与单片机串口通信实例 2.2.1 PC与单个单片机串口通信 2.2.2 PC与多个单片机串口通信 2.3 PC与单片机串口通信测控应用实例 2.3.1 模拟量输入 2.3.2 模拟量输出 2.3.3 开关量输入 2.3.4 开关量输出 第3章 PC与西门子
PLC
串口通信 3.1 西门子
PLC
模拟量扩展模块与通信协议 3.1.1 西门子
PLC
模拟量输入模块 3.1.2 西门子
PLC
PPI通信协议 3.2 PC与西门子
PLC
串口通信测控应用实例 3.2.1 模拟量输入 3.2.2 模拟量输出 3.2.3 开关量输入 3.2.4 开关量输出 第4章 PC与
三菱
PLC
串口通信 4.1
三菱
PLC
特殊功能模块与通信协议 4.1.1 FX2N系列
PLC
的特殊功能模块 4.1.2
三菱
PLC
编程口通信协议 4.2 PC与
三菱
PLC
串口通信测控应用实例 4.2.1 模拟量输入 4.2.2 模拟量输出 4.2.3 开关量输入 4.2.4 开关量输出 第5章 PC与分布式I/O模块串口通信 5.1 典型分布式I/O模块简介 5.1.1 集散控制系统的结构与特点 5.1.2 ADAM4000远程数据采集控制系统 5.1.3 ADAM4000系列模块简介 5.1.4 ADAM4000系列模块的软件安装 5.2 PC与分布式I/O模块串口通信测控应用实例 5.2.1 模拟量输入 5.2.2 模拟量输出 5.2.3 数字量输入 5.2.4 数字量输出 第6章 PC与智能仪器串口通信 6.1 典型智能仪器简介 6.1.1 智能仪器的结构与特点 6.1.2 XMT-3000A型智能仪器的通信协议 6.2 PC与智能仪器串口通信测控应用实例 6.2.1 PC与单台智能仪器温度测控 6.2.2 PC与多台智能仪器温度测控 第7章 PC与无线数据传输模块串口通信 7.1 典型无线数传模块简介 7.1.1 无线数传技术概述 7.1.2 DTD46X系列无线数传模块 7.2 PC与无线数传模块串口通信测控应用实例 7.2.1 设计任务 7.2.2 线路连接 7.2.3 利用C51语言实现基于DS18B20的单片机温度测控 7.2.4 利用汇编语言实现基于DS18B20的单片机温度测控 7.2.5 利用VC++.NET实现PC与无线数传模块温度测控 第8章 USB串行总线模块测控应用 8.1 USB总线在数据采集系统中的应用 8.1.1 USB总线及其数据采集系统的特点 8.1.2 采用USB传输的数据采集系统 8.1.3 典型USB数据采集模块及应用 8.1.4 VC++.NET数据采集与控制的方式 8.2 PC与USB数据采集模块测控应用实例 8.2.1 模拟量输入 8.2.2 模拟量输出 8.2.3 数字量输入 8.2.4 数字量输出 参考文献
Visual
C#
.NET串口通信及测控应用典型实例.(电子工业.李江全.邓红涛.刘巧.李伟).part1
书名:《Visual
C#
.NET串口通信及测控应用典型实例》(电子工业出版社.李江全.邓红涛.刘巧.李伟) PDF格式扫描版,全书分为8章,共369页。2012年5月出版。 全书压缩打包成3部分,这是第1部分 内容简介 本书从工程应用的角度出发,通过8个典型应用实例,包括PC与PC、PC与单片机、PC与
PLC
、PC与远程I/O模块、PC与智能仪器、PC与无线数传模块、Pc与USB数据采集模块等组成的测控系统,利用
Se
ria
l
Port
控件和MSComm控件编写
C#
.NET串口通信程序,并对计算机测控系统中的4类典型应用((模拟量输入(AI)、模拟量输出(AO)、数字量输入(DI)和数字量输出(DO)的程序设计方法进行了详细的讲解。 目 录 第1章 PC与PC串口通信 1.1 串口通信概述 1.1.1 串口通信的基本概念 1.1.2 RS-232C接口标准 1.1.3 RS-422/485接口标准 1.1.4 串口通信线路连接 1.1.5 PC中的串行端口 1.1.6 虚拟串口的使用 1.2 VC++.NET串行通信控件与API函数 1.2.1 MSComm控件的使用 1.2.2
Se
ria
l
Port
控件的使用 1.2.3 串行通信API函数 1.3 PC与PC串口通信实例 1.3.1 两台PC串口通信 1.3.2 一台PC双串口互通信 第2章 PC与单片机串口通信 2.1 典型单片机开发板简介 2.1.1 单片机测控系统的组成 2.1.2 单片机开发板B的功能 2.1.3 单片机开发板B的主要电路 2.2 PC与单片机串口通信实例 2.2.1 PC与单个单片机串口通信 2.2.2 PC与多个单片机串口通信 2.3 PC与单片机串口通信测控应用实例 2.3.1 模拟量输入 2.3.2 模拟量输出 2.3.3 开关量输入 2.3.4 开关量输出 第3章 PC与西门子
PLC
串口通信 3.1 西门子
PLC
模拟量扩展模块与通信协议 3.1.1 西门子
PLC
模拟量输入模块 3.1.2 西门子
PLC
PPI通信协议 3.2 PC与西门子
PLC
串口通信测控应用实例 3.2.1 模拟量输入 3.2.2 模拟量输出 3.2.3 开关量输入 3.2.4 开关量输出 第4章 PC与
三菱
PLC
串口通信 4.1
三菱
PLC
特殊功能模块与通信协议 4.1.1 FX2N系列
PLC
的特殊功能模块 4.1.2
三菱
PLC
编程口通信协议 4.2 PC与
三菱
PLC
串口通信测控应用实例 4.2.1 模拟量输入 4.2.2 模拟量输出 4.2.3 开关量输入 4.2.4 开关量输出 第5章 PC与分布式I/O模块串口通信 5.1 典型分布式I/O模块简介 5.1.1 集散控制系统的结构与特点 5.1.2 ADAM4000远程数据采集控制系统 5.1.3 ADAM4000系列模块简介 5.1.4 ADAM4000系列模块的软件安装 5.2 PC与分布式I/O模块串口通信测控应用实例 5.2.1 模拟量输入 5.2.2 模拟量输出 5.2.3 数字量输入 5.2.4 数字量输出 第6章 PC与智能仪器串口通信 6.1 典型智能仪器简介 6.1.1 智能仪器的结构与特点 6.1.2 XMT-3000A型智能仪器的通信协议 6.2 PC与智能仪器串口通信测控应用实例 6.2.1 PC与单台智能仪器温度测控 6.2.2 PC与多台智能仪器温度测控 第7章 PC与无线数据传输模块串口通信 7.1 典型无线数传模块简介 7.1.1 无线数传技术概述 7.1.2 DTD46X系列无线数传模块 7.2 PC与无线数传模块串口通信测控应用实例 7.2.1 设计任务 7.2.2 线路连接 7.2.3 利用C51语言实现基于DS18B20的单片机温度测控 7.2.4 利用汇编语言实现基于DS18B20的单片机温度测控 7.2.5 利用VC++.NET实现PC与无线数传模块温度测控 第8章 USB串行总线模块测控应用 8.1 USB总线在数据采集系统中的应用 8.1.1 USB总线及其数据采集系统的特点 8.1.2 采用USB传输的数据采集系统 8.1.3 典型USB数据采集模块及应用 8.1.4 VC++.NET数据采集与控制的方式 8.2 PC与USB数据采集模块测控应用实例 8.2.1 模拟量输入 8.2.2 模拟量输出 8.2.3 数字量输入 8.2.4 数字量输出 参考文献
C#
110,590
社区成员
642,563
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章