智能小车4:串口通信

为什么串字是这么写,可能它是个象形字。



在arduino中,串口与这个意思比较相近,他只需要一条线。比如下图我就是从一个板子的串口发送到另一个板子,只用一根线,把它两给串起来,数据就通过这条线传输。



串口通信涉及到硬件与软件。串口硬件的发送和接收表示序列位的电脉冲数据。每个字节信息由各种组合的"0"和"1"构成。arduino所用的方案是0v表示比特值0,而5v(或3.3v)来表示比特值1.
我们在电脑上要发送数据到arduino也是通过串口,一处是串口监视器,一处是代码里的Serial.print.当然其它软件也可以能通过串协议发。比如SecureCRT.exe ,如下图。



 另外串口还可输出到processing,如下图:



串口打印(Serail.print)信息不能拼接字符串或变量,这是个很大的缺陷,可以用springf来实现,如:
 char co[100]="";
  int n=10;
 sprintf(co,"ddfdf%d",n);   

最后说一下串口通信协议,上面的代码串口的通信只是一个简单的Serail.print,这显然是有问题的。因为串口通信协议本来也有一些字符,如果发送的内容与协议内容有重合,就会出问题了。
硬件或软件串口库处理信息的发送和接收,信息里通常包括需要一起发送的数据。为了正确的解释信息,在接收侧需要识别每个消息的开始与结束。如果发送方与接收方都知道信息是如何组织的,
有意义的串口通信或任何类型的机器对机器的通信才能实现。这个消息里的信息正规的组织方式和对请求作出适当反应的规定就是通信协议。
 
消息可以包含标识消息的开始的一个或多个特殊字符,称为报头。一个或多个字符也可用于识别消息的结尾,称为报尾。比如最常用的tcp/ip协议,关于这个协议的分析可查看我的另一文章《Tcp协议数据结构完全解析》http://www.highersoft.net/html/notice/notice_269.html
文/中中 浏览次数:0次   2017-08-10 14:03:42

相关阅读


评论: