用SerialPort类做的一个串口通信的测试程序,添加了DataReceived事件处理方法,用两台机器串口直接对联发送数据,发送方在发送多于8个字节的数据时,接收方有时要分两次收,而且每次第一次收都是8个字节,这是为什么?
接收发送时都做了数据转换,发送时将string转换为byte数据发送,接收方也以byte类型接收,再转换成string类型显示,如果不转换发送中文时出错!
接收发送时都做了数据转换,发送时将string转换为byte数据发送,接收方也以byte类型接收,再转换成string类型显示,如果不转换发送中文时出错!
解决方案 »
- C#中有关数组问题 我读入一个文本文件,对每一行进行处理 用数组时遇到了问题
- 求助:C# winForm程序 调用adb命令
- 正由另一进程使用,因此该进程无法访问该文件。
- 关于简单sql语句的问题
- ******字符串替换************
- 请问 corejava+j2ee+c#+OOAD+vc#+vb.net+asp.net+sql+oracle+db2=多少工资????????
- C#调用VC的DLL参数是自定义类型指针的问题
- 能把文字直接转换成图片吗?
- C# ASP.NET做CMS的几个问题.望大牛们讲解一下.
- 方法传递参数的问题!
- 大家帮忙看一下,C++写的dll引用出现的问题!
- 串行化是什么意思啊
len是我接收到的(可能是第一次接受到的)
packlen是我发过来的一个包的大小
while (len < packlen)
{
int TcpFile = cs.ClientSocket.Receive(cs.buff, 0, cs.buff.Length - len, SocketFlags.None);
len += TcpFile;//便于while做出正确判断
}
如果我接受的数据小与一个包的大小,我就再去Receive一次
正解
问题的原因应该是串口配置的问题。
你最好设计一个好一点的协议,我曾经做的那个要有非常大的电流,有100安培还不止,搞得干扰很严重
接收缓冲区肯定是足够大的!
串口编程基本都会遇到这个问题!我的办法:定义一个全局变量,DataReceived事件连接读到的字符串,满足条件处理完当前数据后,清空变量!
2、允许的漏电流较高,容易受到干扰,也不可以长距离传送。
3、使用原始的高低电平来区别1、0,延时,码率不同都会造成干扰。短距离,优良环境中才能可靠工作,如果在恶劣环境中,要么使用RS485,或者使用光电串口,并且加上软件纠错。LZ的问题并非干扰,我只是告诉他,将来要注意干扰问题,在设计通讯协议的时候要充分考虑串口的不可靠。