搜索
bottom↓
回复: 18

求指导,一个串口通讯协议。大大们我错了,改正

[复制链接]

出0入0汤圆

发表于 2012-5-1 21:42:48 | 显示全部楼层 |阅读模式
本帖最后由 lhcyy 于 2012-5-2 09:35 编辑

这几天被串口通讯协议弄的头晕。有高手能帮忙发个简单程序,并讲解下嘛。


因为我是这样理解的,我想同时发两个8位数据,但是串口一次只能接收一个。这里就要用通讯协议了,但是我不知道该怎么弄,有没有资料什么的分享下。或者发个程序顺便普及提高下

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-5-2 08:03:26 来自手机 | 显示全部楼层
简单的就规定一个启示字符和结束字符。这两个字符不要和传输的信息重复。

出0入0汤圆

发表于 2012-5-2 08:46:25 | 显示全部楼层
楼主善用搜索
论坛里面串口的程序一大堆

出0入0汤圆

 楼主| 发表于 2012-5-2 08:52:41 | 显示全部楼层
z421868436 发表于 2012-5-2 08:46
楼主善用搜索
论坛里面串口的程序一大堆

主要是想要个串口通讯协议的讲解,或者给个简单的分析下,第一次弄这个,有些地方还不熟悉,论坛里面的大多都是8位一次收发的。有的协议太复杂了我现在还看不懂所以。。。。。。。。。。

出0入16汤圆

发表于 2012-5-2 08:53:40 | 显示全部楼层
不要动不动就用“跪求”这两个字,没志气啊,楼主!!!

出0入0汤圆

 楼主| 发表于 2012-5-2 08:55:32 | 显示全部楼层
AVR_USER 发表于 2012-5-2 08:53
不要动不动就用“跪求”这两个字,没志气啊,楼主!!!

呵呵以后会长志气的,因为每次看到人家都在用那个词我感觉是不是效果比较好

出0入16汤圆

发表于 2012-5-2 08:58:46 | 显示全部楼层
lhcyy 发表于 2012-5-2 08:55
呵呵以后会长志气的,因为每次看到人家都在用那个词我感觉是不是效果比较好  ...

据我所知,在这个论坛里用这个词招来被鄙视的效果大于你想要的效果要多得多。

出0入0汤圆

发表于 2012-5-2 09:07:08 | 显示全部楼层
严重鄙视!(跪求)
先看看《提问的艺术》

首先,说出,你对此问题,了解分析了那些书籍与代码与baidu.
对那些问题不懂。

然后提问。
一味索取的人,永远得不到别人的尊重

出0入0汤圆

发表于 2012-5-2 20:14:09 | 显示全部楼层
0xFF,0x55,DATA1,DATA2

出0入0汤圆

发表于 2012-5-2 20:19:22 | 显示全部楼层
建议你找个645规约看看。呵呵。

出0入0汤圆

发表于 2012-6-29 14:22:28 | 显示全部楼层
这个是要靠自己多琢磨的事情

出0入0汤圆

发表于 2012-6-29 18:25:38 | 显示全部楼层
串口其实是没有标准协议的,标准值定义了电器特性。只要你做的通信双方约定好一个数据格式就行了~!

出20入22汤圆

发表于 2012-6-29 19:17:51 | 显示全部楼层
怎么发送的,怎么接收不就行啦

出0入0汤圆

发表于 2012-6-29 19:44:42 来自手机 | 显示全部楼层
留名备用!!!

出0入0汤圆

发表于 2012-6-30 15:48:02 来自手机 | 显示全部楼层
我也问过串口方面的,我发的帖子里有个大侠回复的很好。你可以去看看,我手机上的不好怎么讲。用VB做的

出0入0汤圆

发表于 2012-6-30 17:50:12 | 显示全部楼层
1.首先定义一个协议,如下,当然协议的头尾可以自己随便写。

55 DAT1 DAT2 AA
|      |        |     +------- 协议尾
|      |        +------------- 数据2
|      +---------------------- 数据1
+----------------------------- 协议头

2.协议定义完了,在程序里面咋实现呢?当然是判断协议头和协议尾了~例如:
在串口里面收数,并定义一个变量来存储。然后在弄一个指针,收一个数加一次。然后做个判断就行了,如下
if(UartRev0==0x55)&&(UartRev3==0xAA)
{
       DAT1……
       DAT2……
}

出0入0汤圆

 楼主| 发表于 2012-7-2 13:55:00 | 显示全部楼层
siyeb 发表于 2012-6-30 17:50
1.首先定义一个协议,如下,当然协议的头尾可以自己随便写。

55 DAT1 DAT2 AA

首先感谢下这位同行。从你说的我明白了很多。
其次我有个一直的疑惑想请帮忙看下。单片机串口一次接收是一个8位数据。然后RI置位(51系列)。那么我们一个协议里面包含了四个8位数据
报头,数据1,,数据2,报尾。那么程序怎么判断一次是否接收完成。如果发过来一个6个字节的该怎么取舍。是否接到四个字节就自行进行判断。
而且如果上位机不停的发会出现什么情况

出0入0汤圆

发表于 2012-7-3 11:02:25 | 显示全部楼层
lhcyy 发表于 2012-7-2 13:55
首先感谢下这位同行。从你说的我明白了很多。
其次我有个一直的疑惑想请帮忙看下。单片机串口一次接收是 ...

有四位且报头报尾均正确的话就认为一次协议传输完成。至于多出来的那些,要看你怎么处理,一般是存在缓存里作下一次报文的判断。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-6 20:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表