RS232 串口编程 如何得到RB8的值啊

jiangkeredgirl 2008-12-09 10:46:03
现在我需要得到RB8的值 来判断收到的数据的用途
可是我能用readfile()收到数据
却不知道如何得到RB8的值啊
是标准的串口3模式,怎么设置commstate呢 以及如何得到这个RB8
谢谢
...全文
134 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangkeredgirl 2008-12-11
  • 打赏
  • 举报
回复
谢谢了 楼上的热心解答
我避开了 直接和间接求RB8值
目前用不上RB8值了
在windows操作系统上想得到RB8值 我目前还没找到如何得到RB8值的方法
已经结贴,并再次表示感谢
CA_HA_M 2008-12-10
  • 打赏
  • 举报
回复
你需要用rb8来判断数据的用途,这在单片机通讯中可能成,在上位机中是很难的,上位机通讯需要拟定通讯规约,根据接收到的字符串来判断用途,比如

FE FE 68 99 99 99 99 99 99 68 01 04 43 C3 17 35 BD 16 其中:

FE FE:用于唤醒接收
68 99 ... 99 68:帧头,其中的6个字节的99代表从站的地址
01:控制码,这个字节的8个位中,利用其中的几个位分别置1或0来表示不同的信息,如代表发送数据的是主站还是从站,数据是否是正常响应,是否有后续帧等
04:数据长度,带下划线的数据
43 C3:命令码,表示数据帧的类别或用途
17 35:响应数据
BD:校验和,从第一个68到35的累加
16:结束码

接收与发送方都按照同样的规约处理数据即可
CA_HA_M 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 jiangkeredgirl 的回复:]

1, 你需要判断的是帧数据的效验和(一个字节),以验证接收到的整帧数据是否正确.
-------------------------------------------
如何判读校验和啊 怎么知道一帧是否完整,希望从这个判断值 推出RB8值

[/Quote]
数据帧的效验和是指:发送出的一帧数据中(n个字节),其中一个字节是之前几个字节的相加或者是异或的结果,接收后,用同样的方法(相加或是异或)进行计算,计算的结果与接收到的那个字节如相符,说明接收的数据帧正确.
jiangkeredgirl 2008-12-10
  • 打赏
  • 举报
回复
我想的那个方式 没办法实现
现在我把希望寄托在 2个方向
1, 你需要判断的是帧数据的效验和(一个字节),以验证接收到的整帧数据是否正确.
-------------------------------------------
如何判读校验和啊 怎么知道一帧是否完整,希望从这个判断值 推出RB8值


2,按楼上朋友说的 写驱动,这对我来说 挑战性太高, 不知道如何下手
qap22 2008-12-09
  • 打赏
  • 举报
回复
不懂,up
zaodt 2008-12-09
  • 打赏
  • 举报
回复
那些驱动程序都给你做好了,你收到的就是对方发出的数据,对方发什么,你收什么。


这个,你最好自己发一些数据测试一下,以验证 WriteFile 和 ReadFile 函数的功能。


开始时,最好用 阻塞 方式,简单明了。


上边那篇文章正合适,最好认真读并做实验。
zhoujianhei 2008-12-09
  • 打赏
  • 举报
回复
似乎得不到校验位的值,对上层应用来说 readfile 已经够底层啦,如果想得到校验位的值估计得到驱动层中取。

jiangkeredgirl 2008-12-09
  • 打赏
  • 举报
回复
我以前用VC写应用程序没接触过串口编程
现在的问题是
我用readfile 收到的数据是只包含数据位吗
可不可以包含RB8(校验位)的值呢
zaodt 2008-12-09
  • 打赏
  • 举报
回复
楼主你以前是不是做单片机的?


在 VC++ 中读写串行口没有那么复杂,可能你还不习惯。
liviatt 2008-12-09
  • 打赏
  • 举报
回复
友情up 我也想知道
一条晚起的虫 2008-12-09
  • 打赏
  • 举报
回复
看看怎么实现的
不走驱动层好像没法得到parity bit
jiangkeredgirl 2008-12-09
  • 打赏
  • 举报
回复
谢谢
已经看过 而且在网上搜索了许多
死活找不到 如何判断RB8值 或是得到R8B值的代码

jiangkeredgirl 2008-12-09
  • 打赏
  • 举报
回复
找到了一个方法 实现了 贴出来
zaodt 2008-12-09
  • 打赏
  • 举报
回复

这里有一篇相关的文章,你可以先参考一下:


【使用Win32创建串口通讯程序】

http://www.vckbase.com/document/viewdoc/?id=1114
CA_HA_M 2008-12-09
  • 打赏
  • 举报
回复
其实你想干的工作,windows底层已经替你干了,效验位及停止位的判断均由windows完成,你需要判断的是帧数据的效验和(一个字节),以验证接收到的整帧数据是否正确.
ilovedrv 2008-12-09
  • 打赏
  • 举报
回复
这个r8不是51的端口寄存器吗? windows应用层得不到吧

要不你用winio试试,直接读写端口

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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