Bridge

描述

Bridge类是用于给所有基于Bridge调用操作的基类。它不可以被直接调用,但是会在您使用相关的函数时被间接调用。

函数

  • begin()
  • readMessage()
  • writeMessage()
  • MessageAvailable()
  • put()
  • get()
  • transfer()

begin()

描述

用于启动Bridge,建立AVR和Linux处理器之间的通讯。它应该在setup()调用一次。

begin()是一个阻塞函数。当您调用Bridge.begin()时,在它完成之前不会做sketch中的任何事。这个操作大概会占用3秒的时间。

语法

  • Bridge.begin()

参数

返回值

示例程序(另见)

  • Bridge constructor
  • Console.begin()
  • Process.begin()
  • Bridge.readMessage()
  • Bridge.writeMessage()
  • Bridge.messageAvailable()

put()

描述

使用put()函数可以让你使用键值对在Linux处理器上储存数据。“键”就像一个标签可以与一个“值”相关联。键名必须唯一可以确定一个正确的值。在Linux这边会有一个数据存储空间用来保存所有“键”和“值”。

这个存储区位于AR9331的RAM中,如果在Linux这边重启了Bridge(反复上电[power cycling]、复位Linux处理器或者通过WiFi/以太网上传sketch)您将会丢失这里面的数据。如果复位ATMega32u4处理器则不会丢失这些数据。

语法

bridge.put(key, value)

参数

keychar或者string类型,用于确定值所对应的键名。

valuechar或者string类型,您想储存的值。

返回值


get()

描述

使用get()可以让您读取先前储存在Linux处理器中的键值对。您可以使用get()加上键名、缓冲区变量和大小的参数来请求存储空间中键对应的值。“键”就像一个标签可以与一个“值”相关联。键名必须唯一可以确定一个正确的值。

这个存储区位于AR9331的RAM中,如果在Linux这边重启了Bridge(反复上电[power cycling]、复位Linux处理器或者通过WiFi/以太网上传sketch)您将会丢失这里面的数据。如果复位ATMega32u4处理器则不会丢失这些数据。

语法

bridge.get(key, buffer, buffer_length)

参数

keychar或者string类型,用于确定值所对应的键名。

buffer:用于储存搜寻返回的键值。在值读取填充完毕后,在末尾会加上一个结束符’\0’。

buffer_length:传递给函数的缓冲区的大小。

返回值

返回所请求键值中读取字节的长度


transfer()

描述

transfer()是ATMega32u4微处理器和Linux处理器之间进行通讯的另一种方式[is used by other functions that communicate between the ATMega32u4 microcontroller and the Linux processor]

这个方法用来传送一个框架——它实现了一个协议可以纠错和接收Linux处理器的应答[Method to transfer a frame. This methods implement a protocol that feature error correction and response from the Linux processor]

利用串口协议在Bridge的两端进行彼此之间的消息传送。当调用Bridge.transfer(),一条消息会发送至Linux一边并等待应答、transfer()还会检查数据包的完整性并且抛弃错误的数据包。

这个函数如果在100 ms以内没有收到Linux的确认消息或者数据包损毁时会重新发送。这个反复发送操作会在收到Linux回应后停止进行。

transfer()函数会返回Linux包含应答信息的缓存的长度。

语法

transfer(buff1, len1, buff2, len2, buff3, len3, rxbuff, rxlen);

衍生函数: transfer(buff1, len1); transfer(buff1, len1, rxBuff, rxLen); transfer(buff1, len1, buff2, len2, rxBuff, rxLen);

参数

buff_N:包含您想发送的消息的N缓存数组[is the buffer N array with the content of the message you want to send]。最多可以支持3个缓存数组连在一起发送。

len_N:对应buff_N数组包含的元素个数。

rxbuff:用于保存从Linux响应信息的缓存[is the support buffer that you pass as a parameter where the answer from the linux side will be stored]

rxLen:rxBuffer的长度。

返回值

Linux应答的缓存长度。如果 rxLen 小于Linux应答数据的长度,那么会返回 rxLen 以表示rx缓存已满。


知识共享许可协议
Arduino Yun Reference CNChen 创作,采用 知识共享 署名-相同方式共享 4.0 国际 许可协议进行许可。
基于arduino.cc上的作品创作。