串口通信返回数据不对

icefish2008 2014-02-04 02:41:38
sp.Read(rbuffer, 0, fh_rbuffersize);
string yb_address = Convert.ToString(rbuffer[0], 16);
if (yb_address == "1")
{ 。。。。}

用这个方法获取返回的数据,但是发现总是从rbuffer中的第4位左右开始才是我需要的数据,这是为什么呢?第一位总是不对,我用串口助手stc-isp测试发现返回的数据格式是正确的,难道是我的程序错了么?
...全文
672 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
subufan 2014-02-14
  • 打赏
  • 举报
回复
可能是第一条数据的后半部分与第二条数据的前半部分拼起来了,所以看起来像颠倒了吧。 我也写过serialPort,用下面的方法,在服务器上放了几天都没问题的。
int count = 16;
			Thread.Sleep(1000);      //暂停1000毫秒等一条完整的命令进入缓冲区
			buffer = new Byte[count];
            if (buffer != null)
            {
                serialPort.Read(buffer, 0, 16);

//处理完成后,注意清空buffer
buffer=null;
}
BenBenBears 2014-02-14
  • 打赏
  • 举报
回复
很明显,高低字节反了。
sdhtzs 2014-02-14
  • 打赏
  • 举报
回复
兄弟,你要先确定你的协议里定义的是高字节在前还是低字节在前,这是前提。
苏克贝塔03 2014-02-13
  • 打赏
  • 举报
回复
引用 12 楼 mjp1234airen4385 的回复:
[quote=引用 2 楼 icefish2008 的回复:] 用串口调试 返回的数据是 1、 3、 2、FF、3、 A、95、 74、 2、 81、8F 而我用C#sp.read 读取到的数据是 95、74、2、81、8F、1、 3、 2、 FF、3、 A
你的数据前半部分,从8F、开始正好和串口的相反了,你看看是那个问题吧。[/quote] 前半部分和后半部分正好颠倒,不奇怪吗?十有八九是你的C#取数据有问题。 用串口调试返回的数据是正确的,而你的C#接收到的数据不对
icefish2008 2014-02-13
  • 打赏
  • 举报
回复
怎么回事,程序等待了
mjp1234airen4385 2014-02-13
  • 打赏
  • 举报
回复
引用 2 楼 icefish2008 的回复:
用串口调试 返回的数据是 1、 3、 2、FF、3、 A、95、 74、 2、 81、8F 而我用C#sp.read 读取到的数据是 95、74、2、81、8F、1、 3、 2、 FF、3、 A
你的数据前半部分,从8F、开始正好和串口的相反了,你看看是那个问题吧。
lfqsy 2014-02-10
  • 打赏
  • 举报
回复
应该是缓冲区还有别的数据,你要等待下才取,这样容易取完整,你要确定有FF开头的,再找结尾的
lele_nancy 2014-02-05
  • 打赏
  • 举报
回复
_SerPort.DiscardInBuffer(); 清空受信空间 _SerPort.ReceivedBytesThreshold = 11;
tcmakebest 2014-02-05
  • 打赏
  • 举报
回复
fh_rbuffersize 尽量比实际收到的字节数多一些吧,如 256 。
icefish2008 2014-02-04
  • 打赏
  • 举报
回复
int fh_rbuffersize = 11; Byte[] rbuffer = new Byte[11];
icefish2008 2014-02-04
  • 打赏
  • 举报
回复
sp.read返回 11
  • 打赏
  • 举报
回复
晕。 再给你说一遍,我关心的不是rbuffer声明了有多少size,我要告诉你 sp.Read(。。。。)是返回int值的!
icefish2008 2014-02-04
  • 打赏
  • 举报
回复
字符数组啊,一个长度为11的数组rbuffer
  • 打赏
  • 举报
回复
我问的是你的sp.Read(。。。。)函数返回值是多少?
icefish2008 2014-02-04
  • 打赏
  • 举报
回复
用串口调试 返回的数据是 1、 3、 2、FF、3、 A、95、 74、 2、 81、8F 而我用C#sp.read 读取到的数据是 95、74、2、81、8F、1、 3、 2、 FF、3、 A
  • 打赏
  • 举报
回复
sp.Read(。。。。)会返回一个整数,你的返回什么值?

110,533

社区成员

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

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

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