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

原创 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

程序、进程、线程的联系与区别

程序:一组指令的有效集合 进程:程序的执行就是进程。也可以把进程看成一个独立的程序,在内存中有其对应的代码空间和数据空间,一个进程所拥有的数据和代码只属于自己。进程是资源分配的基本单位,也是...
  • ivyvae
  • ivyvae
  • 2014年09月26日 22:38
  • 1412

杂谈人工智能说大数据

阿尔法围棋(AlphaGo)是一款围棋人工智能程序,是程序,然后战胜了人类中围棋最厉害的人,然后人工智能和人的关系的辩论火热起来,然后各种科幻想法也飙血。 但是,我说,既然是程序,那还就只是程序...
  • fjssharpsword
  • fjssharpsword
  • 2016年06月15日 15:21
  • 2154

程序、进程、作业之间的区别与联系

程序与进程之间的区别: (1)进程更能真实地描述并发,而程序不能。 (2)进程由程序和数据两部分组成,进程是竞争计算机系统有限资源的基本单位,也是进程处理机调度的基本单位。 (3)程序是静态的概...
  • u010173284
  • u010173284
  • 2014年08月28日 15:23
  • 740

C++和java的区别和联系

最近在看C++和java的基础知识,对它们面向对象编程的概念还不是很了解,但觉得它们之间有很多相通的地方,现在java比较热门,觉得使用java的框架可以做很多很多事情,而对C++ 的认识只知道在游戏...
  • lcr_happy
  • lcr_happy
  • 2017年04月09日 10:32
  • 704

进程和线程的区别和联系

一、进程和线程分析 下面就两者的区别和联系分析如下:   进程 线程 定义 资源(CPU时间、内存等)分配的最小单位 程序执行的最小单位 区别 1.独立的...
  • chen_geng
  • chen_geng
  • 2016年06月08日 15:25
  • 897

磁带的最优存储问题(贪心选择)

磁带最优存储问题 题目描述 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是Li,  1 i1,i2,....,in 的次序存放,则读取程序ir 所...
  • u013266600
  • u013266600
  • 2014年06月01日 21:40
  • 2584

2.3.1微信小程序按钮组件:button

微信小程序按钮组件:button 按钮组件。 属性名 类型 默认值 说明 最低版本 size String default 按钮的大小   type S...
  • iamsellen
  • iamsellen
  • 2017年04月22日 11:32
  • 1488

P,NP,NPH,NPC问题

算法系列博客之NPC问题 我们已经学习了很多高效的算法,它们大多都是多项式时间的,有的还能达到线性时间,甚至是对数时间。但是到目前为止,仍然有一批问题没有被证明有多项式时间内的算法;所谓没有被证明,即...
  • Quiteen
  • Quiteen
  • 2017年07月12日 22:17
  • 247

一起C语言中程序时序问题的排查过程

【文章摘要】       对于由多个模块协同工作的软件来说,程序处理的时序是非常重要的。当消息处理的顺序出现混乱时,程序就会出现异常。       本文基于作者的实际项目经验,对软件模块之间的时序问题...
  • zhouzxi
  • zhouzxi
  • 2014年06月26日 18:56
  • 2149

读取联系人和添加联系人

bean类Contact: import java.util.ArrayList; import java.util.List; public class Contact { privat...
  • xzylx1
  • xzylx1
  • 2015年11月27日 15:37
  • 101
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读取传输协议与程序的有关联系问题
举报原因:
原因补充:

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