读取传输协议与程序的有关联系问题

原创 2011年01月21日 10:58:00

我们在读写串口通信的时候往往要去读一些通信的协议规定。这次我碰到的是ABT公司的RFID读卡器。。具体的数据格式如下所转述:

读卡器连续输出8个字节的数据,组成一个数据帧.(8字节=8*8位 )读卡器的输出数据格式符合如下的帧格式:

 帧头AA:8位:

读卡器号:8位;

状态字:4位+类别号:4位;

卡号:24位;

效验和:8位;

尾帧:8位;

读懂这个协议真的非常重要,就像一把钥匙,通往了潘多拉。。。。

我的电脑是32位机,在linux下使用一个测试程序,

void main()

{

    printf("%d", sizeof(char));

}

得到的结果是1。。。 char型是一个字节。是8位的。。

但是我们的程序中所用的语句

read(fd, buff ,8)这个其中的8指的是什么呢。。应该是字节。。而并非是位。。这样我们先明白这个。。然后就了解这个协议的位是怎么回事。。

就是说这个是一个字节的帧头,一个字节的读卡器号,一个字节的状态字和类别号,3个字节的卡号,一个字节的校验位,一个字节的尾帧。

我们来举个我和JB昨晚上的例子,我们在将程序修改正确后,使用这个语句输出:

printf("%x/n"  buff[i]);

结果刷卡后首先我们让他接受完整个一帧数据,完整的显示出来。这个数据令我吃惊,首先他是不规律的输出(除了第一帧头的数据外)

ffffffAA..其次是一些不顾律的数字。。在不停地变化-------这证明这个读卡器坏了(我这么强烈的认为)

好了我们今天的话题引出了,就是这个帧头的数字,是八位ffffffAA...16进制的数字。这个我就有些不清楚的了。

计算机中的信息都是以2进制的0和1来表示,其中每个0和1称作一个位.但是这个帧头出现的明显就不是八位了而是32位,4个字节了!!!!!

这是为什么呢?我想了想。。我们程序是以%x格式输出,那么得到的帧头和要求的AA是一至的。。即是八位的帧头。可是ffffff是什么?难道是补码???应该不是吧,后面的读卡器号之类的明显没有按照这个帧头的输出格式来输出吗。。。这个是个问题,也许是机器的问题。。。。。这个也是我工作中所遇到的一个问题。。

我们看到协议的给出是很重要的,起初我们这样理解了这个协议,8位当成了八个字节,所以程序在读取卡号的时候都是从第23--47来循环读取卡中的卡号,,这个就很失败了!!!其实是从第3-5的读取。。。。

程序很精炼,配置很复杂。。波特率,,停止位,,校验位,, 感谢我身边的舍友对我的帮准。。。。谢谢你们。。JB。。EDTE

相关文章推荐

RFC3550 RTP实时应用程序传输协议

  • 2014年11月14日 13:04
  • 194KB
  • 下载

RTP:实时应用程序传输协议

3. 定义(definitions)     RTP负载(RTP payload):通过RTP传输的包中的数据,例如,音频样本或压缩好的视频数据。负载格式与解释不在本文讨论范围。     RTP包...

RTP:实时应用程序传输协议 中文版

RFC3550   RTP:实时应用程序传输协议   摘要 本文描述RTP(real-time transport protocol),实时传输协议。RTP在多点传送(多播)或单点传送(单播...
  • yuyin86
  • yuyin86
  • 2012年03月25日 13:51
  • 823

USB传输协议及8个usb相关问题与解答

USB传输协议 (2010-11-10 15:13:19) 转载▼ 标签: 杂谈   1.总线协议 USB是一种轮询方式的总线,主机控制器初始化所...

Unity C# 自定义TCP传输协议以及封包拆包、解决粘包问题(网络应用层协议)

本文只是初步实现了一个简单的TCP自定协议,更为复杂的协议可以根据这种方式去扩展,并且我已经假定你搭建好了一个最为基本的socket TCP通信框架,本文就不对其做过多的讲解了,当然如果你不了解soc...

Doubango RTP包传输使用UDT可靠传输协议,解决RTP丢包问题

使用SIP做过VOIP通话的同学,肯定被RTP丢包弄的焦头烂额,必定尝试过不少的办法,比方: 1、丢包重传(NACK) 2、前向纠错(FEC) 3、丢帧处理 但效果往往不尽如人意,那有没有一劳...

实时传输协议rtp

  • 2015年05月16日 17:51
  • 1.87MB
  • 下载

CC2530无线质量传输协议

  • 2017年09月28日 10:42
  • 13.6MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读取传输协议与程序的有关联系问题
举报原因:
原因补充:

(最多只允许输入30个字)