那夜花开 发表于 2008-4-8 07:49:21

请高手指点串口通讯中关于奇偶校验位的问题。

我现在做的是对一个液晶终端的性能测试,该液晶终端在实际的485通讯网络系统中作为主机,依次发出查询指令,对各个模块进行数据的采集和显示,传送的串行数据格式为每帧11位,分别为起始位(0)、8个数据位、地址数据判断位(“1”表示地址,“0”表示数据)、停止位(1)。
    现在我在PC机上用LabVIEW模拟上述液晶终端的“下位机”(即从机,地址为6aH,对液晶终端发出的指令进行分析,然后返回一串数据,供液晶终端显示。液晶发出的访问命令为8字节,1地址、2年、3月、4日。5时、6分、7秒、8校验和。
    现在的问题是:接收到的数据不正确,问题我的分析就是地址判断位(也就是奇偶校验位)的问题,地址判断位有None、Odd、Ecea、Mark、Space五个选项,不知道该选哪一个?我觉的应该选Mark,但从缓冲区读出的数据已经没有奇偶校验位(“1”表示地址,“0”表示数据),怎样才能分辩是地址还是数据呢?
    或者是还有其他的方法能实现上述的功能?请高手指点。

那夜花开 发表于 2008-4-8 12:00:06

现在的问题是怎样才能得到每个字节的第9位的值,也就是奇偶校验位的值。

wdyjz 发表于 2008-4-8 13:25:40

PC不要去模拟下位机,要做就只做发送命令的上位机还好点。
不是奇偶校验的位,不是这样称呼的。奇偶校验可以自动完成。
发送地址:设置为mark=1
发送命令:设置为space=0
而且每次都要重新初始化串口,执行效率是很慢的。

从原理上来说,你这样做可以;但实际上,一定要避免使用这种9位的数据格式,因为它不符合实际需要。
你若有命令和地址的区分,你就多设置个地址的标识好了。比如:地址+命令+校验和。

那夜花开 发表于 2008-4-8 15:34:44

楼上说的不错,我也是这样理解的,但要测试的仪器是固定不能改变的,所以pc只能做下位机。
因为现在是要对仪器进行通讯,并且仪器在实际的应用中是作为网络中的主机。
看来我只有再做一个单片机电路进行数据转换后再和PC连接啦
页: [1]
查看完整版本: 请高手指点串口通讯中关于奇偶校验位的问题。