高手请进,串口通讯协议 ( 积分: 200 )

  • 主题发起人 kenmnb2000
  • 开始时间
K

kenmnb2000

Unregistered / Unconfirmed
GUEST, unregistred user!
现在是一台pc连接着N个单片机,用串口半双工通讯。发送任何数据:先握手,再发送数据包,最后发送结束包。如果接收方错误则发送错误包,请求重发。请问这样一般怎么做?谁有源码或资料?
 
有现成的控件吧
 
使用spcomm就可以简单实现 。难点是你需要先规定好通讯协议。你可以看看modbus协议的资料。
 
只需要个串口控件就好了,收发数据按协议处理即可
 
别一味说简单,这跟废话差不多。用mscomm,spcomm发个数据、接个数据当然简单,一发出去就不用管了。但在工业环境中,数百米的传输距离、还有干扰使数据出错等等都得考虑。而且现在是N个单片机,要互不影响又要能识别谁在传输数据。
 
1.你要确定用485方式。(这是唯一可行的)
2.定好开头和结尾.(BYTE就可以了)
3.选择有效的校验模式(和,CRC等).当然在数据传输上可再使用偶,奇校验.
4.其实既然是典型的应答机制,可以免去握手了.
5.在你的线程里做个轮循.并计超时,检查校验等.
6.注意,最好有个主站:pC.否则回乱套.
然后完事.
 
还是scotte_wang专业,不过我的串口编程实在不专业,不知道有什么要注意的,能不能具体一点,比如代码。现在数据包结构已经定好了,协议已经定好了。
 
如果你确定使用rs232 ,如果你有几百米的距离,建议你使用rs232远程传输模块。不想加这样的模块也容易,使用rs485,rs422,专门针对你这样的应用 。另外,建议你看看modbus协议 ,看看是怎么保证多设备有效通讯的。对不起了,还是忍不住说这么多废话。
 
傻毛,做不了,还做,真垃圾
 
别一味说简单,这跟废话差不多。用mscomm,spcomm发个数据、接个数据当然简单,一发出去就不用管了。
-----发出去后,你还管的了吗?
-----判断是否成功,肯定是等待对方返回数据


但在工业环境中,数百米的传输距离、还有干扰使数据出错等等都得考虑。
-----不是有通讯协议吗?
-----我估计你根本不知道有通讯协议

而且现在是N个单片机,要互不影响又要能识别谁在传输数据。
-----某一时刻肯定是一对一在通讯,一对多肯定是采用了巡检
-----我看你可能根本就没有听说过巡检了
 
又是谁的马甲,不愿意回答就算了,素质还真低~~
 
这个垃圾原来是准备倒分啊,kao!还好意思说人家素质低?!
有你这么问问题的吗??!!

大家看看这个帖子就明白了:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3411312

这个“求学者阿丫”自己就是个马甲居然说人家是马甲。。。
 
你这个垃圾才无聊,要倒分明说啊,何必浪费别人的时间和精力??!!
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
975
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
750
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部