C#.NET串口发数据问题

m0_48163597 2021-03-24 02:44:22
1.发送数据:byte[] arrSendData = new byte[]
{0x10,0x02,0x12,0x00,0xF8,0x00,0x00,0xFF,0xFF,0x03,0x00,0x00,0x01,0x04,0x00,0x00,0x40,0x1F,0x00,0xA8,0x02,0x00,0x10,0x03,0x31,0x39};
2.用串口调试接收到的数据

所以两者的数据完全不一致,请问这是什么原因导致的??????????

3.我用串口调试发送数据:byte[] arrSendData = new byte[]
{0x10,0x02,0x12,0x00,0xF8,0x00,0x00,0xFF,0xFF,0x03,0x00,0x00,0x01,0x04,0x00,0x00,0x40,0x1F,0x00,0xA8,0x02,0x00,0x10,0x03,0x31,0x39};
4.用串口调试接收到的数据与发送相同。
所以麻烦大神支招
...全文
361 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghui0380 2021-03-25
  • 打赏
  • 举报
回复
引用 5 楼 m0_48163597 的回复:
[quote=引用 1 楼 wanghui0380 的回复:]1.请确认你的参数配置一致(波特率,校验位,数据位,停止位) 2.请把你发送代码贴出来
再请教一个问题,怎么判断数据发送完,以及接受完。不然后接收时就回出错,延时的话至少要1秒以上,有快点的方式吗?[/quote] 无法确定,实际上对于串口这种东西,如果你们自己双方没有协议保证的话,谁也保证不了。如果你有一个真实的串口你可以试试看,串口上什么都不连,你一样可以打开这个串口,以及对该串口写数据 也就是说,哪怕没有接收方其实他也一样运作。 ps:串口也好,tcp也罢,蓝牙也罢,都是这类东西,底层只是负责字节传输以及数据传输正确性,但不保证你们双方到底传滴的是什么。所以这类东西你都会看到“通讯协议包,通讯协议解析,粘包,分包”这类讨论。你现在可以找个modbus从端模拟器,模拟一下真实工业协议的设计。 你就知道我们怎么根据通信协议去(功能码,数据长度,校验码)去验证我收到的数据是完整的,无误的
wanghui0380 2021-03-25
  • 打赏
  • 举报
回复
这里在顺带提一下未来的方向 IDuplexPipe 接口 早年间各种轮子虽然出的很多,但是各不兼容,比如modubsnet,dotnetty,sunpersocket。他们各自实现了各自的传输控制和编解码层。 但是你从我6楼的回复其实就可以看出,其实有个问题,虽然底层传输控制可以接串口,接蓝牙,接tcp --接各种的client,但实际编协议解码其实原本可以互通 比如你的对接方,非要用串口传递http协议,可以不。当然可以。问题来了dotnetty有http协议解析解码器,但是他自己给tcp设计的,你复用不了解码器(你要看dotnetty的源码发现,他整个基础设计用的是ipaddress,所以Java的人就有人自己继承IPAddress但实现波特率等东西,偷偷绕过去) 同样加入你的对接方,非要让你用蓝牙对接modbus rtu,你又头痛。modubsnet对接串口(也兼容tcp)但是蓝牙他没有 --------------------------- 其实,协议编码解析是通用设计,可以复用,他不应该专属某个传输client。 所以这里的建议,那些喜欢造轮子的人们,以后在造轮子的时候请用IDuplexPipe 做核心,这样俺们可以任意更换 传输层client和编解码器
ba_wang_mao 2021-03-25
  • 打赏
  • 举报
回复
一、关于发送完成 如果是单片机的话,有发送完成中断,你可以知道这帧报文已经发送完成。 如果是PC机的话,如果你可以直接控制硬件(假如:MSDOS操作系统),就可以通过读取中断控制寄存器知道。 如果是WINDOWS操作系统的话,如果系统不提供相应的API的话,就没有办法知道是否已经发送完成。 二、关于接收完成 一般工业协议采用如下【超时定时器】的方法判断是否接收完成 第一步:当接收到一个字节后,开启定时器(例如:定时器的时长=3毫秒), 定时器计数器初始值为0,定时器开始计时(总之,只要收到字节,就将计数器初始化为0) 第二步:继续接收 下一个字节 , 开启定时器(例如:定时器的时长=3毫秒), 定时器计数器初始值为0,定时器开始计时(总之,只要收到字节,就将计数器初始化为0) 第三步:当没有收到字节时,定时器计数器自动开始增加,当计数器加到超过3毫秒计数值时,定时器溢出 第四步:当定时器溢出,则表示接收报文完成
m0_48163597 2021-03-24
  • 打赏
  • 举报
回复
引用 1 楼 wanghui0380 的回复:
1.请确认你的参数配置一致(波特率,校验位,数据位,停止位) 2.请把你发送代码贴出来
再请教一个问题,怎么判断数据发送完,以及接受完。不然后接收时就回出错,延时的话至少要1秒以上,有快点的方式吗?
m0_48163597 2021-03-24
  • 打赏
  • 举报
回复
找到原因了,谢谢各位
青岛小帅锅 2021-03-24
  • 打赏
  • 举报
回复
第一次看到用ODD校验的,我见过None和even。。。
兔子-顾问 2021-03-24
  • 打赏
  • 举报
回复
你波特率没设置对吧,应该是这个原因,两边要一样的波特率。
wanghui0380 2021-03-24
  • 打赏
  • 举报
回复
1.请确认你的参数配置一致(波特率,校验位,数据位,停止位) 2.请把你发送代码贴出来
书名:《Visual C#.NET串口通信及测控应用典型实例》(电子工业出版社.李江全.邓红涛.刘巧.李伟) PDF格式扫描版,全书分为8章,共369页。2012年5月出版。 全书压缩打包成3部分,这是第3部分 内容简介 本书从工程应用的角度出,通过8个典型应用实例,包括PC与PC、PC与单片机、PC与PLC、PC与远程I/O模块、PC与智能仪器、PC与无线数传模块、Pc与USB数据采集模块等组成的测控系统,利用SerialPort控件和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 SerialPort控件的使用 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串口通信及测控应用典型实例》(电子工业出版社.李江全.邓红涛.刘巧.李伟) PDF格式扫描版,全书分为8章,共369页。2012年5月出版。 全书压缩打包成3部分,这是第1部分 内容简介 本书从工程应用的角度出,通过8个典型应用实例,包括PC与PC、PC与单片机、PC与PLC、PC与远程I/O模块、PC与智能仪器、PC与无线数传模块、Pc与USB数据采集模块等组成的测控系统,利用SerialPort控件和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 SerialPort控件的使用 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 数字量输出 参考文献

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧