help 发表于 2009-1-12 09:44:10

串口定时器通信问题

通信端口成功打开后,我要向下位机发送询问当前状态并请求发送数据。
如果下位机在5秒有确认帧返回说明通信初始化成功,可以请求发送数据,采用一个时间间隔为2秒的定时器。
程序该怎么编写呢?
询问当前状态帧为={0xF5,0x01,0x00,0x00,0x01}
确认返回帧为={0xF5,0x02,0x00,0x00,0x02};
请求发送数据帧为={0xF5,0x03,0x00,0x00,0x03};
谢谢!

cpubbs 发表于 2009-1-12 23:56:51

在初始化的时候判断有没有成功,成功了才启动定时器!

可以在串口的回调事件函数中添加一些分支,比如收到什么内容进行什么处理!事件里面有多少字节才触发事件,或收到什么字符触发事件,这个挺方便的!

netcreature 发表于 2009-1-13 09:42:23

你的问题让人无从回答:
1、通讯协议和通讯帧格式没说清楚,让人不得要领!
2、你是采用字符传送还是字节传送?
3、字符传送时加上帧结尾字符,可以利用串口回调函数正确接受!
4、如果采用字节传送,一个明显的问题是:怎样正确、完整地接受一帧数据(既不能少接受数据,也不能多接受:保持缓冲区数据的完整性!这一点和大家常用的串口助手是有本质区别的!!!)?

help 发表于 2009-1-13 11:08:36

能不能具体给个程序呢?

hcwz 发表于 2009-1-13 21:38:32

兄弟啊,串口通信是最简单的.一般都有一个起始符和终止符,中间是数据.发送的时候是字符或是十六进制.如是用字符发送的:sData="~abc123*",~则表示是起始的标志符,*则表示的是终止的标志符.abc123则是要发送的数据,先配置下串口,现用ComWrt(1,sData,8);发送即可,表示是用串口1发送,数据的长度为8,一般是包括起始和终止符的,发送之后,下位机一般就会有反应的(即有数据返回的),其实说到底还是要搞清楚与下位机之间的通信协议,即数据表示的意思.

netcreature 发表于 2009-1-14 09:22:48

多帧通讯时,还涉及帧类型,以及校验和等问题!
这关系数据的正确性和完整性。

ross.ma 发表于 2009-2-8 20:30:43

晕了

hcwz 发表于 2009-2-10 19:33:39

先从最简单的串口通信学起吧!上网查查看串口通信的有关资料.

hcwz 发表于 2009-2-10 20:02:00

通信协议我这里倒有一个,不过是RS232转CAN通信的,比较复杂,你不一定看得明白,要的话我的上传给你!
页: [1]
查看完整版本: 串口定时器通信问题